[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 メーリングリストの案内