Other Parts Discussed in Thread: AM3352, AM3359
Hello,
I have a problem with USB0 in peripheral mode.
The USB0 side works in host mode we did try that and there were no problems getting a link established. When in host mode the ARM USB0 does supply VBUS to the external peripheral.
The USB1 host mode also work perfectly.
It is in Peripheral is where the issues appear to occur.
When USB0 is in peripheral mode it puts out the pulses on the D+ line that conform to the 2.0 standard. With the updates to the board there are no resistors or caps on the signals line D+/- between the ARM and the USB connector. It is a direct 0 ohm connection from the D+/- signal lines on the ARM to the USB connector.
The ARM detects when the external USB cable is connected since as soon as the cable is present (VBUS is valid) the ARM stops putting out pulses on D+. The VBUS detection at the input to the ARM is a valid level according to the 2.0 standard.
Nothing occurs after the USB cable is connected to the board there are no attempts by the ARM USB0 to try and communicate with the external host. The external host is supplying VBUS to the USB0 ARM interface.
The ARM USB0 detects when the USB cable is removed. When watching the VBUS and D+ line on a scope you can see that as soon as the cable is removed the pulses on D+ start-up again and continue until a USB cable is again inserted into the board.
Linux USB driver config I am following the user guide as described here.
processors.wiki.ti.com/.../AM335X_USB_Driver_User_Guide_04.06.00
Here is the snippet of my linux defconfig file
# TI MUSB
CONFIG_USB_MUSB_HDRC=y
#CONFIG_USB_MUSB_HOST not set
#CONFIG_USB_MUSB_GADGET not set
#CONFIG_USB_MUSB_OMAP2PLUS not set
CONFIG_USB_MUSB_DSPS=y
CONFIG_USB_MUSB_AM335X_CHILD=y
CONFIG_USB_MUSB_DUAL_ROLE=y
CONFIG_MUSB_PIO_ONLY=y
# USB Gadget Drivers
CONFIG_USB_GADGET=y
#CONFIG_USB_GADGETFS not set
#CONFIG_USB_LIBCOMPOSITE not set
#CONFIG_USB_CONFIGFS not set
#CONFIG_USB_FUNCTIONFS not set
#CONFIG_USB_ZERO not set
#CONFIG_USB_AUDIO not set
#CONFIG_USB_ETH not set
#CONFIG_USB_ETH_RNDIS not set
#CONFIG_USB_MASS_STORAGE not set
CONFIG_USB_G_SERIAL=y
#CONFIG_USB_G_PRINTER not set
#CONFIG_USB_MIDI_GADGET not set
#CONFIG_USB_CDC_COMPOSITE not set
#CONFIG_USB_G_HID not set
#CONFIG_USB_G_DBGP not set
#CONFIG_USB_G_MULTI not set
#CONFIG_USB_G_NOKIA not set
#CONFIG_USB_G_WEBCAM not set
#CONFIG_USB_G_NCM not set
#CONFIG_USB_G_ACM_MS not set
#CONFIG_USB_GADGET_TARGET not set
Here is the snippet of the device tree file:
musb: usb@47400000 {
status = "okay";
control@44e10620 {
status = "okay";
};
usb-phy@47401300 {
status = "okay";
};
usb-phy@47401b00 {
status = "okay";
};
usb@47401000 {
status = "okay";
/* USB 0 is peripheral */
dr_mode = "peripheral";
};
usb@47401800 {
status = "okay";
/* USB 1 is host */
dr_mode = "host";
};
dma-controller@47402000 {
status = "okay";
};
Can you help ? Are we missing something from either HW or Linux driver ?
Thanks
Maulin