[U-Boot] i.MX6Q USB OTG Gadget and Fastboot?
Adam Ford
aford173 at gmail.com
Fri Jun 30 21:39:35 UTC 2017
I am trying to add in Android Fastboot to my i.MX6Q.
I am using DM_USB to enable the USB through the device tree. This
device tree works in Linux, so I am assumming I've missed some
configuration somewhere:
I've added the following the defconfig file:
+CONFIG_CMD_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="FSL"
+CONFIG_G_DNL_VENDOR_NUM=0x0525
+CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
Based on stuff I found in imx6q sabresd, I have also added the
following to my configs header file:
+/* USB Configs */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS 0
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 1 /* Enabled USB controller number */
+#endif
+
+#ifndef CONFIG_SPL
+#define CONFIG_USBD_HS
+#define CONFIG_USB_FUNCTION_MASS_STORAGE
+#define CONFIG_USB_FUNCTION_FASTBOOT
+#define CONFIG_CMD_FASTBOOT
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
+#define CONFIG_FASTBOOT_BUF_SIZE 0x07000000
+#endif
I can start the USB system and it appears to find 2 USB controllers.
I have the OTG and USB H1 enabled in my device tree.
When I start the board, the USB log on my host Ubuntu PC shows:
[26450.012906] usb 3-2: new high-speed USB device number 37 using xhci_hcd
[26455.176596] usb 3-2: device descriptor read/64, error -110
But it doesn't appear to be working correctly.
i.MX6 Logic # usb start
starting USB...
USB0: USB1: USB EHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
i.MX6 Logic #
USB Info seems to show the same controller twice:
i.MX6 Logic # usb info
1: Hub, USB Revision 2.0
- u-boot EHCI Host Controller
- Class: Hub
- PacketSize: 64 Configurations: 1
- Vendor: 0x0000 Product 0x0000 Version 1.0
Configuration: 1
- Interfaces: 1 Self Powered 0mA
Interface: 0
- Alternate Setting 0, Endpoints: 1
- Class Hub
- Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms
1: Hub, USB Revision 2.0
- u-boot EHCI Host Controller
- Class: Hub
- PacketSize: 64 Configurations: 1
- Vendor: 0x0000 Product 0x0000 Version 1.0
Configuration: 1
- Interfaces: 1 Self Powered 0mA
Interface: 0
- Alternate Setting 0, Endpoints: 1
- Class Hub
- Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms
And the Ubuntu Host machine shows more errors:
[26507.789535] xhci_hcd 0000:00:14.0: Timeout while waiting for setup
device command
[26513.165249] xhci_hcd 0000:00:14.0: Timeout while waiting for setup
device command
[26513.373225] usb 3-2: device not accepting address 40, error -62
[26513.373252] usb usb3-port2: unable to enumerate USB device
I am wondering if I need to do something special to initialize the OTG
controller beyond DM_USB. I am guessing that once I get the gadget
working, the Fastboot would follow.
My endgame is to use the Fastboot gadget to load the Android images,
so attempted to run Fastboot from U-boot:
i.MX6 Logic # fastboot USB0
g_dnl_register: failed!, error: -19
exit not allowed from main input shell.
i.MX6 Logic #
Maybe I am not using the correct syntax, but if I fun fastboot by
itself, it requests a USB bus.
Does anyone have any suggestions?
adam
More information about the U-Boot
mailing list