[Armadillo:06913] Re: Armadillo-440 USBOTGについて

nakai email@hidden
2011年 3月 23日 (水) 18:40:56 JST


nakaiです。

お客様よりパッチをご提供いただけましたので、本文下部に貼り付けます。

あくまで参考情報ですので、動作を保証するものではありません。
また、下記の情報では、ハードウェアを改造していますので、ご注意ください。


環境やソフトウェアのバージョンなどにつきましては、以下を参照してください。


● ハードウェア
Armadillo-400のCON5(USB)の1・5番ピンとCON13の2番ピンを接続
電源はUSB Vbusのみとするため、ACアダプタは接続しない

※ Host側から電源(Vbus)を供給されている状態でACアダプタを接続すると、
   Host側のハードウェアやArmadilloが故障する恐れがあります

http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hardware_manual_ja-1.4.0/ch05.html#sec-con5-con6-usb-iface
http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hardware_manual_ja-1.4.0/ch05.html#sec-con12-con13-power-in-connector

● ソフトウェア
    linux-2.6.35-at-alpha1

http://armadillo.atmark-techno.com/dev/linux-2.6.35-at-alpha1-release

● ファイルの更新(kernelにパッチをあてる)
    drivers/usb/gadget/Kconfig
    arch/arm/plat-mxc/usb_common.c

● カーネルコンフィグレーション
    make menuconfig

    [*] USB support --->
        < > Supprt for Host-side USB
        < > EHCI HCD (USB2.0) support
        [ ]   Support for Freescale controller
        [ ]     Support for DR host port on Freescale controller
            Select transceiver for DR port --->
              ( ) Internal UTMI
        <*> USB Gadget Support --->
                  USB Peripheral Controller (Freescale USB Device Controller) --->
                     (X) Freescale USB Device Controller
              [*]    Apply static IRAN patch
              [*} Peripheral Only but OTG

            *** OTG and related infrastructure ***
        < > GPIO based peripheral-only VBUS sensing 'transceiver'
        [ ] Generic ULPI Transceiver Driver
        < > NOP USB Transceiver Driver

※ gadgetドライバは含まれていないので、適切なものを選択してください
   以下、File-backed Storage Gadgetの場合です
        <M>   USB Gadget Drivers
        <M>     File-backed Storage Gadget


● 参考リンク
http://www.linux-usb.org/gadget/
http://www.linux-usb.org/gadget/file_storage.html

---
 arch/arm/plat-mxc/usb_common.c |   11 +++++++++++
 drivers/usb/gadget/Kconfig     |    7 +++++++
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-mxc/usb_common.c b/arch/arm/plat-mxc/usb_common.c
index 76c1fcd..b4e0d45 100644
--- a/arch/arm/plat-mxc/usb_common.c
+++ b/arch/arm/plat-mxc/usb_common.c
@@ -735,6 +735,10 @@ static void otg_set_utmi_xcvr(void)

 	USBCTRL &= ~UCTRL_OWIE;	/* OTG Wakeup Intr Disable */

+#if defined(CONFIG_USB_OTG_PERIPHERAL_ONLY)
+	UOG_OTGSC |= OTGSC_CTRL_VBUS_CHARGE;	/* the VBUS line to be charged */
+#endif
+
 	/* set UTMI xcvr */
 	tmp = UOG_PORTSC1 & ~PORTSC_PTS_MASK;
 	tmp |= PORTSC_PTS_UTMI;
@@ -813,6 +817,13 @@ int usbotg_init(struct platform_device *pdev)

 	if (fsl_check_usbclk() != 0)
 		return -EINVAL;
+
+#if defined(CONFIG_USB_OTG_PERIPHERAL_ONLY)
+	UOG_OTGSC |= OTGSC_CTRL_OTG_TERM;	/* must be set when the OTG devices */
+	UOG_OTGSC &=~OTGSC_CTRL_USB_ID_PU;	/* the ID input will not be sampled */
+	USB_OTG_MIRROR |= OTGM_IDIDG;		/* it operates as B-device */
+#endif
+
 	if (!mxc_otg_used) {
 		if (cpu_is_mx50())
 			/* Turn on AHB CLK for OTG*/
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index cc5f056..d53ca9a 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -587,6 +587,13 @@ config USB_OTG

 	   Select this only if your OMAP board has a Mini-AB connector.

+config USB_OTG_PERIPHERAL_ONLY
+	boolean "Peripheral Only but OTG"
+	depends on MACH_ARMADILLO420 || MACH_ARMADILLO440
+	help
+	  You can use Armadillo for USB Gadget.
+	  Armadillo-4x0 has the A-plug only.
+
 #
 # USB Gadget Drivers
 #




armadillo メーリングリストの案内