UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
12,126 Views
Registered: ‎02-01-2016

USB works in device mode but not in host mode

I have a problem with a custom Zynq board, which is copied from the ZC702 USB implementation (using USB3320 ULPI transceiver connected to USB0 on the Zynq). Kernel is upgraded to the xilinx-v2015.4.01 tag in Git to see if that helped (it didn't).

 

The board works correctly in USB device mode - it enumerates on the host, I can load the USB ethernet gadget stack and SSH into the board. But now I need the hardware to work in USB host mode (eventually OTG, but one at a time). The drivers for this all load, and lsusb shows the USB bus existing, but devices connected do not enumerate and never appear in the lsusb output. The lsusb output is always

# lsusb
Bus 001 Device 001: ID 1d6b:0002

with no other devices listed.

 

This seems a lot like https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2015-2-1-usb-not-working/td-p/654349 so I have worked through everything there. In particular I have tried both compatible = "ulpi-phy"; and compatible = "usb-nop-xceiv"; with the corresponding kernel configuration options

CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_GPIO_VBUS=y
CONFIG_USB_ULPI=y

I know that the USB3320 is being initialised, because (with drv-vbus; in the device tree) the CPEN line goes high when the system starts up, and low when it shuts down. This enables the 5V supply controller (bq24196) to be switched on (I2C register write) and supply 5V to the port (measured this, definitely there).

 

Connected to the USB port is a USB OTG adaptor (to standard A female connector), an in-line USB meter and a USB memory stick. The USB meter shows 5V being supplied to the port, and about 70mA being drawn by the USB key (the port has 1.3A available if required!). The same voltage and current are measured when the meter and memory stick are plugged in to a PC and work correctly.

 

The ID line in the USB connector is pulled low when the cable is plugged in, as it should be, and goes high when the OTG adaptor is removed.

 

The following messages from the kernel are produced duing boot:

 

e0002000.phy0 supply vcc not found, using dummy regulator
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver usb-storage
e0002000.usb supply vbus not found, using dummy regulator
ci_hdrc ci_hdrc.0: ChipIdea HDRC found, revision: 22, lpm: 0; cap: 60144100 op: 60144140
ci_hdrc ci_hdrc.0: It is OTG capable controller
ci_hdrc ci_hdrc.0: EHCI Host Controller
ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 4.0.0-xilinx ehci_hcd
usb usb1: SerialNumber: ci_hdrc.0
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver

note that I do not get the message Driver chipidea-usb2 requests probe deferral which other people have been having problems with, because I have the Phy driver loaded sucessfully.

 

What should I do next to try and find out why this does not work?

Tags (3)
0 Kudos
4 Replies
12,093 Views
Registered: ‎02-01-2016

Re: USB works in device mode but not in host mode

After enabling debugfs, dynamic debugging, and then turning on USB debug from the kernel command line, I get some more USB output messages, in particular

usb_phy_generic e0002000.phy0: Can't get phy clock: -2
e0002000.phy0 supply vcc not found, using dummy regulator

 this doesn't look good, but according to linux-xilinx-v2015.4.01/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt this property is optional?

0 Kudos
12,084 Views
Registered: ‎02-01-2016

Re: USB works in device mode but not in host mode

More to the point, there is a 24MHz crystal fitted to the USB3320 (configured by pin strap), so the Phy doesn't need an external clock - it's generating one, and for that matter providing the 60MHz ULPI bus clock! Again, this works fine in device mode, but not at all in host mode.

0 Kudos
Visitor stringham
Visitor
1,832 Views
Registered: ‎01-03-2018

Re: USB works in device mode but not in host mode

@richardash1981did you ever figure this out? I'm running into a similar problem.

0 Kudos
Explorer
Explorer
1,783 Views
Registered: ‎09-14-2016

Re: USB works in device mode but not in host mode

Hi @richardash1981,

 

Have you taken a look here ?

 

Cheers,

Trigger

0 Kudos