[U-Boot] NEC OHCI chip bug

gavinguo at andestech.com gavinguo at andestech.com
Wed Dec 15 07:21:48 CET 2010


Hi All,
Let's me explain the story first.
We need NEC pci-to-usb host controller work on U-boot. Because using Faraday technology PCI controller, I need to complete the PCI driver first. Now the PCI driver is completed. At this time, the NEC host controller can work. When plugging a keyboard, 2 devices can be found showing on console. But things are not as easy as we think, OHCI host controller encounter an "Unrecoverable Error" when getting device descriptor from keyboard. In the Linux kernel, I found that there is a workaround if the OHCI host controller is NEC's. The following link explain more detail: http://www.mail-archive.com/linux-usb-devel@lists.sourceforge.net/msg54465.html. After looking at the source code in U-boot, it seems that there isn't any workaround about the NEC's bug ? Any idea about how to get the controller, or do I need to implement the workaround by myself ??

The following is the debug message when "usb start":
NDS32 # usb start
(Re)start USB...
USB:   ftpci pci_find_devices
OHCI pci controller (1033, 0035) found @(0:8:0)
OHCI regs address 0xa0000000
scanning bus for devices... New Device 0
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x100 index 0x0 length 0x40
set address 1
usb_control_msg: request: 0x5, requesttype: 0x0, value 0x1 index 0x0 length 0x0
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x100 index 0x0 length 0x12
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x9
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x200 index 0x0 length 0x19
get_conf_no 0 Result 25, wLength 25
if 0, ep 0
##EP epmaxpacketin[1] = 2
set configuration 1
usb_control_msg: request: 0x9, requesttype: 0x0, value 0x1 index 0x0 length 0x0
new device strings: Mfr=0, Product=1, SerialNumber=0
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x300 index 0x0 length 0xFF
USB device number 1 default language ID 0x409
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x301 index 0x409 length 0xFF
Manufacturer
Product      OHCI Root Hub
SerialNumber
USB hub found
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2900 index 0x0 length 0x4
usb_control_msg: request: 0x6, requesttype: 0xA0, value 0x2900 index 0x0 length 0x9
3 ports detected
ganged power switching
standalone hub
individual port over-current protection
power on to power good time: 30ms
hub controller current requirement: 0mA
port 1 is removable
port 2 is removable
port 3 is removable
usb_control_msg: request: 0x0, requesttype: 0xA0, value 0x0 index 0x0 length 0x4
get_hub_status returned status 0, change 0
local power source is good
no over-current condition exists
enabling power on all ports
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x1 length 0x0
port 1 returns 0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x2 length 0x0
port 2 returns 0
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x8 index 0x3 length 0x0
port 3 returns 0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x1 length 0x4
Port 1 Status 100 Change 0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
Port 2 Status 301 Change 1
port 2 connection change
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
portstatus 301, change 1, 1.5 Mb/s
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x10 index 0x2 length 0x0
hub_port_reset: resetting port 1...
usb_control_msg: request: 0x3, requesttype: 0x23, value 0x4 index 0x2 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x2 length 0x4
portstatus 303, change 10, 1.5 Mb/s
STAT_C_CONNECTION = 0 STAT_CONNECTION = 1  USB_PORT_STAT_ENABLE 1
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x14 index 0x2 length 0x0
New Device 1
usb_control_msg: request: 0x6, requesttype: 0x80, value 0x100 index 0x0 length 0x40
ERROR: OHCI Unrecoverable Error, controller usb-ohci_ftpci disabled
usb_new_device: usb_get_descriptor() failed
hub: disabling port 2
usb_control_msg: request: 0x1, requesttype: 0x23, value 0x1 index 0x2 length 0x0
usb_control_msg: request: 0x0, requesttype: 0xA3, value 0x0 index 0x3 length 0x4
Port 3 Status 100 Change 0
2 USB Device(s) found
drv_usb_kbd_init
scan end

Best Regards,
Gavin Guo


More information about the U-Boot mailing list