Hello, I am having a problem getting coreboot->Linux initialize any high speed USB 2.0 devices like flash drives. The USB works fine on low speed USB 1.1 devices like keyboards and mice. I don't think coreboot -> i82801xx_usb_ehci.c is initializing the device correctly. According to the Intel® 82801EB (ICH5), 82801ER (ICH5R), and 82801DB (ICH4) Enhanced Host Controller Interface (EHCI) Programmer?s Reference Manual (PRM) http://www.intel.com/design/chipsets/manuals/298656.htm there are a bunch of steps that the bios is responsible to set this device up. i82801xx_usb_ehci.c is not doing all of these steps. Is anyone else using the i82801xx code having any problems with high speed USB 2.0 devices???
Thanks - Joe
Hi,
On Tue, Mar 25, 2008 at 06:51:24PM -0400, joe@smittys.pointclark.net wrote:
I am having a problem getting coreboot->Linux initialize any high speed USB 2.0 devices like flash drives. The USB works fine on low
Flash drive? You mean mounting a USB thumb drive? That should work fine, I tested that on various coreboot boards. Or do you mean an external IDE/SATA drive which is connected via USB to the computer? I think both should work fine.
To really test USB 2.0 speeds you probably need something like a USB DVB-T card (for watching TV) or something similarly fast, I guess.
speed USB 1.1 devices like keyboards and mice. I don't think coreboot -> i82801xx_usb_ehci.c is initializing the device correctly. According to the Intel® 82801EB (ICH5), 82801ER (ICH5R), and 82801DB (ICH4) Enhanced Host Controller Interface (EHCI) Programmer?s Reference Manual (PRM) http://www.intel.com/design/chipsets/manuals/298656.htm there are a bunch of steps that the bios is responsible to set this device up. i82801xx_usb_ehci.c is not doing all of these steps. Is
Correct, none of the code in svn seems to do any special init for EHCI. Maybe it's just not required, maybe it _is_ required and nonbody tested high speed devices, not sure.
Note that AFAICT the USB ports _should_ be intialized ok with coreboot if the board code is ok, but they might only act as "full speed" (USB 1.1) devices.
anyone else using the i82801xx code having any problems with high speed USB 2.0 devices???
I have this board I could use to test, but it doesn't have EHCI (only USB 1.1 ports), so that won't help much, I'm afraid.
http://www.coreboot.org/ASUS_MEW-AM_Build_Tutorial
Maybe you can post a full boot log (coreboot + kernel + kernel command line options you used) with full debug levels enabled. Are there any hints in the log what the problem could be?
What exactly does _not_ work btw? Do the USB ports not work _at all_ or are they just "slow"? Which board is this? RM4100?
Uwe.
Quoting Uwe Hermann uwe@hermann-uwe.de:
Hi,
On Tue, Mar 25, 2008 at 06:51:24PM -0400, joe@smittys.pointclark.net wrote:
I am having a problem getting coreboot->Linux initialize any high speed USB 2.0 devices like flash drives. The USB works fine on low
Flash drive? You mean mounting a USB thumb drive? That should work fine, I tested that on various coreboot boards. Or do you mean an external IDE/SATA drive which is connected via USB to the computer? I think both should work fine.
Yes neithor of these are working. I have tried USB thumb drives, and a IDE-to-USB 2.0 adapter with hard drive and DVD-rom drive.
To really test USB 2.0 speeds you probably need something like a USB DVB-T card (for watching TV) or something similarly fast, I guess.
speed USB 1.1 devices like keyboards and mice. I don't think coreboot -> i82801xx_usb_ehci.c is initializing the device correctly. According to the Intel® 82801EB (ICH5), 82801ER (ICH5R), and 82801DB (ICH4) Enhanced Host Controller Interface (EHCI) Programmer?s Reference Manual (PRM) http://www.intel.com/design/chipsets/manuals/298656.htm there are a bunch of steps that the bios is responsible to set this device up. i82801xx_usb_ehci.c is not doing all of these steps. Is
Correct, none of the code in svn seems to do any special init for EHCI. Maybe it's just not required, maybe it _is_ required and nonbody tested high speed devices, not sure.
Note that AFAICT the USB ports _should_ be intialized ok with coreboot if the board code is ok, but they might only act as "full speed" (USB 1.1) devices.
Nope USB 2.0 devices (drives) are not detected at bootup, or by hot plugging in Linux. USB 1.1 Keyboards, and mice, work fine.
anyone else using the i82801xx code having any problems with high speed USB 2.0 devices???
I have this board I could use to test, but it doesn't have EHCI (only USB 1.1 ports), so that won't help much, I'm afraid.
Probibly not:-(
http://www.coreboot.org/ASUS_MEW-AM_Build_Tutorial
Maybe you can post a full boot log (coreboot + kernel + kernel command line options you used) with full debug levels enabled. Are there any hints in the log what the problem could be?
Not that I am aware, EHCI seems to setup ok in coreboot, except the devices are not detected by coreboot, filo, or Linux.
What exactly does _not_ work btw?
When Linux is running and I plug in a USB flash drive, the led on the drive comes on for a few seconds and then turns off, and Linux does not detect the drive. I have tried several different brands. They work fine with the original bios.
Do the USB ports not work _at all_ or are they just "slow"?
Yes, they work for low speed USB devices:
usb 1-1: new low speed USB device using uhci_hcd and address 4 usb 1-1: configuration #1 chosen from 1 choice input: Logitech USB-PS/2 Optical Mouse as /class/input/input2 input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:1d.0-1 usb 1-2: new low speed USB device using uhci_hcd and address 5 usb 1-2: configuration #1 chosen from 1 choice input: USB Keyboard as /class/input/input3 input: USB HID v1.10 Keyboard [ USB Keyboard] on usb-0000:00:1d.0-2 input: USB Keyboard as /class/input/input4 input: USB HID v1.10 Device [ USB Keyboard] on usb-0000:00:1d.0-2
Which board is this? RM4100?
Yes the RM4100, you can check out the boot log from the wiki, maybe there is a clue? But I did not have a flash drive plugged in then. http://www.coreboot.org/pipermail/coreboot/2008-March/032221.html
Thanks - Joe
On Tue, Mar 25, 2008 at 10:12:29PM -0400, joe@smittys.pointclark.net wrote:
Do the USB ports not work _at all_ or are they just "slow"?
Yes, they work for low speed USB devices:
..
Which board is this? RM4100?
Yes
Please send lspci from when you've booted with coreboot. Is the EHCI USB controller there at all? If so, there should be errors during boot when the ehci driver tries to load.
(Or worst-case coreboot has done such a bad job at init that the driver thinks life is good but in fact nothing EHCI works. :()
//Peter
Quoting Peter Stuge peter@stuge.se:
On Tue, Mar 25, 2008 at 10:12:29PM -0400, joe@smittys.pointclark.net wrote:
Do the USB ports not work _at all_ or are they just "slow"?
Yes, they work for low speed USB devices:
..
Which board is this? RM4100?
Yes
Please send lspci from when you've booted with coreboot. Is the EHCI USB controller there at all? If so, there should be errors during boot when the ehci driver tries to load.
(Or worst-case coreboot has done such a bad job at init that the driver thinks life is good but in fact nothing EHCI works. :()
I wouldn't say bad jod, I just don't think it is working correctly:-(
factory bios: 00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI]) Subsystem: Intel Corporation Unknown device 24c0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin A routed to IRQ 7 Region 4: I/O ports at d800 [size=32]
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02) (prog-if 00 [UHCI]) Subsystem: Intel Corporation Unknown device 24c0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin B routed to IRQ 5 Region 4: I/O ports at d880 [size=32]
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02) (prog-if 00 [UHCI]) Subsystem: Intel Corporation Unknown device 24c0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin C routed to IRQ 9 Region 4: I/O ports at dc00 [size=32]
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI]) Subsystem: Intel Corporation Unknown device 24c0 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin D routed to IRQ 10 Region 0: Memory at ffa7f400 (32-bit, non-prefetchable) [size=1K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Debug port
00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02) 00: 86 80 c2 24 05 00 80 02 02 00 03 0c 00 00 80 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 01 e0 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 30: 00 00 00 00 00 00 00 00 00 00 00 00 07 01 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02) 00: 86 80 c4 24 05 00 80 02 02 00 03 0c 00 00 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 81 e0 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 30: 00 00 00 00 00 00 00 00 00 00 00 00 05 02 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02) 00: 86 80 c7 24 05 00 80 02 02 00 03 0c 00 00 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 01 e4 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 30: 00 00 00 00 00 00 00 00 00 00 00 00 09 03 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02) 00: 86 80 cd 24 06 01 90 02 02 20 03 0c 00 00 00 00 10: 00 f4 a7 ff 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 04 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 01 58 c2 c9 00 00 00 00 0a 00 80 20 00 00 00 00 60: 20 20 7f 00 00 00 00 00 01 00 00 01 00 20 08 00 70: 00 00 cf 0f 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3f 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 78 bf 1f 00 88 83 00 00 60 0f 00 00 06 00 00 00
coreboot: 00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI]) Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin A routed to IRQ 3 Region 4: I/O ports at 18c0 [size=32]
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02) (prog-if 00 [UHCI]) Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin B routed to IRQ 5 Region 4: I/O ports at 18e0 [size=32]
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02) (prog-if 00 [UHCI]) Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin C routed to IRQ 6 Region 4: I/O ports at 1c00 [size=32]
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI]) Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin D routed to IRQ 7 Region 0: Memory at f8080000 (32-bit, non-prefetchable) [size=1K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Debug port
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02) 00: 86 80 c2 24 05 00 80 02 02 00 03 0c 00 00 80 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: c1 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02) 00: 86 80 c4 24 05 00 80 02 02 00 03 0c 00 00 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: e1 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02) 00: 86 80 c7 24 05 00 80 02 02 00 03 0c 00 00 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 01 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02) 00: 86 80 cd 24 06 00 90 02 02 20 03 0c 00 00 00 00 10: 00 00 08 f8 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 04 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 01 58 c2 c9 00 00 00 00 0a 00 80 20 00 00 00 00 60: 20 20 7f 00 00 00 00 00 01 00 00 00 00 00 0c c0 70: 00 00 c5 0f 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 78 bf 1f 00 88 83 00 00 60 0f 00 00 06 00 00 00
Thanks - Joe
On Wed, Mar 26, 2008 at 08:57:42AM -0400, joe@smittys.pointclark.net wrote:
Please send lspci from when you've booted with coreboot. Is the EHCI USB controller there at all? If so, there should be errors during boot when the ehci driver tries to load.
(Or worst-case coreboot has done such a bad job at init that the driver thinks life is good but in fact nothing EHCI works. :()
FWIW, here's the diff. I don't think the missing sybsystem IDs are a problem (and that could be fixed very easily anyway), and the different IRQ and mem regions shouldn't be a problem per se either, correct?
--- bios.txt 2008-03-26 16:59:12.000000000 +0100 +++ coreboot.txt 2008-03-26 16:59:22.000000000 +0100 @@ -1,58 +1,54 @@ 00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM =20 (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI]) -=09Subsystem: Intel Corporation Unknown device 24c0 =09Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- =20 Stepping- SERR- FastB2B- =09Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=3Dmedium >TAbort- =20 <TAbort- <MAbort- >SERR- <PERR- =09Latency: 0 -=09Interrupt: pin A routed to IRQ 7 -=09Region 4: I/O ports at d800 [size=3D32] +=09Interrupt: pin A routed to IRQ 3 +=09Region 4: I/O ports at 18c0 [size=3D32]
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM =20 (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02) (prog-if 00 [UHCI]) -=09Subsystem: Intel Corporation Unknown device 24c0 =09Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- =20 Stepping- SERR- FastB2B- =09Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=3Dmedium >TAbort- =20 <TAbort- <MAbort- >SERR- <PERR- =09Latency: 0 =09Interrupt: pin B routed to IRQ 5 -=09Region 4: I/O ports at d880 [size=3D32] +=09Region 4: I/O ports at 18e0 [size=3D32]
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM =20 (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02) (prog-if 00 [UHCI]) -=09Subsystem: Intel Corporation Unknown device 24c0 =09Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- =20 Stepping- SERR- FastB2B- =09Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=3Dmedium >TAbort- =20 <TAbort- <MAbort- >SERR- <PERR- =09Latency: 0 -=09Interrupt: pin C routed to IRQ 9 -=09Region 4: I/O ports at dc00 [size=3D32] +=09Interrupt: pin C routed to IRQ 6 +=09Region 4: I/O ports at 1c00 [size=3D32]
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) =20 USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI]) -=09Subsystem: Intel Corporation Unknown device 24c0 =09Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- =20 -Stepping- SERR+ FastB2B- +Stepping- SERR- FastB2B-
Might the SERR difference here cause problems?
=09Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=3Dmedium >TAbort- =20 <TAbort- <MAbort- >SERR- <PERR- =09Latency: 0 -=09Interrupt: pin D routed to IRQ 10 -=09Region 0: Memory at ffa7f400 (32-bit, non-prefetchable) [size=3D1K] +=09Interrupt: pin D routed to IRQ 7 +=09Region 0: Memory at f8080000 (32-bit, non-prefetchable) [size=3D1K] =09Capabilities: [50] Power Management version 2 =09=09Flags: PMEClk- DSI- D1- D2- AuxCurrent=3D375mA PME(D0+,D1-,D2-,D3hot+,= D3cold+) =09=09Status: D0 PME-Enable- DSel=3D0 DScale=3D0 PME- =09Capabilities: [58] Debug port
-00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM =20 +00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM =20 (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02) 00: 86 80 c2 24 05 00 80 02 02 00 03 0c 00 00 80 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -20: 01 e0 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 -30: 00 00 00 00 00 00 00 00 00 00 00 00 07 01 00 00 +20: c1 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +30: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -61,17 +57,17 @@ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -c0: 00 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c0: 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
-00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM =20 +00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM =20 (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02) 00: 86 80 c4 24 05 00 80 02 02 00 03 0c 00 00 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -20: 81 e0 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 -30: 00 00 00 00 00 00 00 00 00 00 00 00 05 02 00 00 +20: e1 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +30: 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -80,17 +76,17 @@ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -c0: 00 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c0: 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
-00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM =20 +00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM =20 (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02) 00: 86 80 c7 24 05 00 80 02 02 00 03 0c 00 00 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -20: 01 e4 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 -30: 00 00 00 00 00 00 00 00 00 00 00 00 09 03 00 00 +20: 01 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +30: 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -99,26 +95,26 @@ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -c0: 00 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c0: 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 60 0f 00 00 00 00 00 00
-00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB2 =20 -EHCI Controller (rev 02) -00: 86 80 cd 24 06 01 90 02 02 20 03 0c 00 00 00 00 -10: 00 f4 a7 ff 00 00 00 00 00 00 00 00 00 00 00 00 -20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c0 24 -30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 04 00 00 +00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) =20 +USB2 EHCI Controller (rev 02) +00: 86 80 cd 24 06 00 90 02 02 20 03 0c 00 00 00 00 +10: 00 00 08 f8 00 00 00 00 00 00 00 00 00 00 00 00 +20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +30: 00 00 00 00 50 00 00 00 00 00 00 00 00 04 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 01 58 c2 c9 00 00 00 00 0a 00 80 20 00 00 00 00 -60: 20 20 7f 00 00 00 00 00 01 00 00 01 00 20 08 00 -70: 00 00 cf 0f 00 00 00 00 00 00 00 00 00 00 00 00 +60: 20 20 7f 00 00 00 00 00 01 00 00 00 00 00 0c c0 +70: 00 00 c5 0f 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3f 00 +d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 78 bf 1f 00 88 83 00 00 60 0f 00 00 06 00 00 00
The register differences in the EHCI device should probably be analyzed in detail (using datasheet), haven't done that so far.
Uwe.
Quoting Uwe Hermann uwe@hermann-uwe.de:
On Wed, Mar 26, 2008 at 08:57:42AM -0400, joe@smittys.pointclark.net wrote:
Please send lspci from when you've booted with coreboot. Is the EHCI USB controller there at all? If so, there should be errors during boot when the ehci driver tries to load.
(Or worst-case coreboot has done such a bad job at init that the driver thinks life is good but in fact nothing EHCI works. :()
FWIW, here's the diff. I don't think the missing sybsystem IDs are a problem (and that could be fixed very easily anyway),
The strange thing is, the code is already setup to do this but it doesn't for some reason???
and the different IRQ and mem regions shouldn't be a problem per se either, correct?
Correct, this shouldn't matter.
Might the SERR difference here cause problems?
Possible?
The register differences in the EHCI device should probably be analyzed in detail (using datasheet), haven't done that so far.
The only differences I can see are registers 0x68 and 0x6C. Register 0x68 (USB EHCI Legacy Support Extended Capability) is supposed to be read only so I don't get that one. And I am not sure exactly that the register 0x6C (USB EHCI Legacy Support Control/Status) has an issue. There is also a "Host Controller Operational Registers" located in memory, but I am not exactly sure how to read those.
Thanks - Joe
On Wed, Mar 26, 2008 at 03:43:28PM -0400, joe@smittys.pointclark.net wrote:
FWIW, here's the diff. I don't think the missing sybsystem IDs are a problem (and that could be fixed very easily anyway),
The strange thing is, the code is already setup to do this but it doesn't for some reason???
Nope, it's not setup to do it (for this board). You have to add
uses MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID uses MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID [...] default MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID = 0x1462 default MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID = 0x7260
in your Options.lb, and replace the two IDs as appropriate for your board. Currently the code only supports setting _one_ ID for all devices, you cannot set different IDs for different devices. But again, this is _usually_ only a cosmetical change, very few things rely on subsystem IDs in most OSes.
Uwe.
Quoting Uwe Hermann uwe@hermann-uwe.de:
On Wed, Mar 26, 2008 at 03:43:28PM -0400, joe@smittys.pointclark.net wrote:
FWIW, here's the diff. I don't think the missing sybsystem IDs are a problem (and that could be fixed very easily anyway),
The strange thing is, the code is already setup to do this but it doesn't for some reason???
Nope, it's not setup to do it (for this board). You have to add
uses MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID uses MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID [...] default MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID = 0x1462 default MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID = 0x7260
in your Options.lb, and replace the two IDs as appropriate for your board. Currently the code only supports setting _one_ ID for all devices, you cannot set different IDs for different devices. But again, this is _usually_ only a cosmetical change, very few things rely on subsystem IDs in most OSes.
Ahh, Thanks I will try that:-)
Thanks - Joe
On Tue, Mar 25, 2008 at 10:12:29PM -0400, joe@smittys.pointclark.net wrote:
On Tue, Mar 25, 2008 at 06:51:24PM -0400, joe@smittys.pointclark.net wrote:
I am having a problem getting coreboot->Linux initialize any high speed USB 2.0 devices like flash drives. The USB works fine on low
Flash drive? You mean mounting a USB thumb drive? That should work fine, I tested that on various coreboot boards. Or do you mean an external IDE/SATA drive which is connected via USB to the computer? I think both should work fine.
Yes neithor of these are working. I have tried USB thumb drives, and a IDE-to-USB 2.0 adapter with hard drive and DVD-rom drive.
Hm, that's strange, because the thumb drive should work even with USB 1.1 only (it sure does on my boards).
Which ports did you try to use? AFAIUI only one or two of them will be USB 2.0, the other ones have USB 1.1 speed only, no matter which settings the BIOS uses.
If you can, please test some other high-speed USB device (not thumb drives or disks).
Note that AFAICT the USB ports _should_ be intialized ok with coreboot if the board code is ok, but they might only act as "full speed" (USB 1.1) devices.
Nope USB 2.0 devices (drives) are not detected at bootup, or by hot plugging in Linux. USB 1.1 Keyboards, and mice, work fine.
Hm, the kernel init _seems_ to look ok to me, but maybe I'm missing something.
Loading ehci-hcd.ko module PCI: Found IRQ 7 for device 0000:00:1d.7 ehci_hcd 0000:00:1d.7: EHCI Host Controller ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 4 ehci_hcd 0000:00:1d.7: debug port 1 ehci_hcd 0000:00:1d.7: irq 7, io mem 0xf8180000 ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004 usb usb4: configuration #1 chosen from 1 choice hub 4-0:1.0: USB hub found hub 4-0:1.0: 6 ports detected
Is the IRQ routing correct? If you attach and use USB devices on those ports, do the numbers in /proc/interrrupts increase?
Not that I am aware, EHCI seems to setup ok in coreboot, except the devices are not detected by coreboot, filo, or Linux.
What exactly does _not_ work btw?
When Linux is running and I plug in a USB flash drive, the led on the drive comes on for a few seconds and then turns off, and Linux does not detect the drive. I have tried several different brands. They work fine with the original bios.
With or without a USB hub? If hub, is it a self-powered hub? Does the drive get enough power?
Hm, not sure what's going on, maybe someone else can comment? It's possible that you indeed have to do the init mentioned in the datasheet.
Uwe.
Quoting Uwe Hermann uwe@hermann-uwe.de:
On Tue, Mar 25, 2008 at 10:12:29PM -0400, joe@smittys.pointclark.net wrote:
On Tue, Mar 25, 2008 at 06:51:24PM -0400, joe@smittys.pointclark.net wrote:
I am having a problem getting coreboot->Linux initialize any high speed USB 2.0 devices like flash drives. The USB works fine on low
Flash drive? You mean mounting a USB thumb drive? That should work fine, I tested that on various coreboot boards. Or do you mean an external IDE/SATA drive which is connected via USB to the computer? I think both should work fine.
Yes neithor of these are working. I have tried USB thumb drives, and a IDE-to-USB 2.0 adapter with hard drive and DVD-rom drive.
Hm, that's strange, because the thumb drive should work even with USB 1.1 only (it sure does on my boards).
that's what I thought, very strange indeed
Which ports did you try to use? AFAIUI only one or two of them will be USB 2.0, the other ones have USB 1.1 speed only, no matter which settings the BIOS uses.
both
If you can, please test some other high-speed USB device (not thumb drives or disks).
ok
Note that AFAICT the USB ports _should_ be intialized ok with coreboot if the board code is ok, but they might only act as "full speed" (USB 1.1) devices.
Nope USB 2.0 devices (drives) are not detected at bootup, or by hot plugging in Linux. USB 1.1 Keyboards, and mice, work fine.
Hm, the kernel init _seems_ to look ok to me, but maybe I'm missing something.
Yes, that is why I am stumped:-(
Loading ehci-hcd.ko module PCI: Found IRQ 7 for device 0000:00:1d.7 ehci_hcd 0000:00:1d.7: EHCI Host Controller ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 4 ehci_hcd 0000:00:1d.7: debug port 1 ehci_hcd 0000:00:1d.7: irq 7, io mem 0xf8180000 ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004 usb usb4: configuration #1 chosen from 1 choice hub 4-0:1.0: USB hub found hub 4-0:1.0: 6 ports detected
Is the IRQ routing correct?
I think so? I will check this.
If you attach and use USB devices on those ports, do the numbers in /proc/interrrupts increase?
Well for the keyboard and mouse yes, I have not checked it with a USB 2.0 device, I have not checked that.
Not that I am aware, EHCI seems to setup ok in coreboot, except the devices are not detected by coreboot, filo, or Linux.
What exactly does _not_ work btw?
When Linux is running and I plug in a USB flash drive, the led on the drive comes on for a few seconds and then turns off, and Linux does not detect the drive. I have tried several different brands. They work fine with the original bios.
With or without a USB hub? If hub, is it a self-powered hub? Does the drive get enough power?
No usb hub. Direct connect.
Hm, not sure what's going on, maybe someone else can comment?
Please:-(
It's possible that you indeed have to do the init mentioned in the datasheet.
Possible, that is why I asked if anyone else was having this problem and/or can confirm it works.
Thanks - Joe
Quoting Uwe Hermann uwe@hermann-uwe.de:
Is the IRQ routing correct? If you attach and use USB devices on those ports, do the numbers in /proc/interrrupts increase?
You got it. Another irq routing issue. What a pain in the arse. Here I am thinking it was something much more. So, with the irq_tables.c I originally submitted I tried to make it better than the original but it just keeps having issues. So here is a patch with the irq_tables.c dumped from the original bios, it may look funky but everything works good (including all USB devices) :-)
Signed-off-by: Joseph Smith joe@smittys.pointclark.net
Thanks - Joe
Quoting joe@smittys.pointclark.net:
Quoting Uwe Hermann uwe@hermann-uwe.de:
Is the IRQ routing correct? If you attach and use USB devices on those ports, do the numbers in /proc/interrrupts increase?
You got it. Another irq routing issue. What a pain in the arse. Here I am thinking it was something much more. So, with the irq_tables.c I originally submitted I tried to make it better than the original but it just keeps having issues. So here is a patch with the irq_tables.c dumped from the original bios, it may look funky but everything works good (including all USB devices) :-)
Signed-off-by: Joseph Smith joe@smittys.pointclark.net
Thanks - Joe
Thanks - Joe
Quoting joe@smittys.pointclark.net:
Quoting joe@smittys.pointclark.net:
Quoting Uwe Hermann uwe@hermann-uwe.de:
Is the IRQ routing correct? If you attach and use USB devices on those ports, do the numbers in /proc/interrrupts increase?
You got it. Another irq routing issue. What a pain in the arse. Here I am thinking it was something much more. So, with the irq_tables.c I originally submitted I tried to make it better than the original but it just keeps having issues. So here is a patch with the irq_tables.c dumped from the original bios, it may look funky but everything works good (including all USB devices) :-)
Signed-off-by: Joseph Smith joe@smittys.pointclark.net
Can I just ack this myself as trivial?
Thanks - Joe
On 27.03.2008 04:57, joe@smittys.pointclark.net wrote:
Quoting Uwe Hermann uwe@hermann-uwe.de:
Is the IRQ routing correct? If you attach and use USB devices on those ports, do the numbers in /proc/interrrupts increase?
You got it. Another irq routing issue. What a pain in the arse. Here I am thinking it was something much more. So, with the irq_tables.c I originally submitted I tried to make it better than the original but it just keeps having issues. So here is a patch with the irq_tables.c dumped from the original bios, it may look funky but everything works good (including all USB devices) :-)
Signed-off-by: Joseph Smith joe@smittys.pointclark.net
Acked-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Regards, Carl-Daniel
On Wed, Mar 26, 2008 at 11:57:39PM -0400, joe@smittys.pointclark.net wrote:
Index: src/mainboard/rca/rm4100/irq_tables.c
--- src/mainboard/rca/rm4100/irq_tables.c (revision 3189) +++ src/mainboard/rca/rm4100/irq_tables.c (working copy) @@ -23,7 +23,7 @@ const struct irq_routing_table intel_irq_routing_table = { PIRQ_SIGNATURE, /* u32 signature */ PIRQ_VERSION, /* u16 version */
- 32+16*IRQ_SLOT_COUNT, /* there can be total 10 devices on the bus */
- 32+16*IRQ_SLOT_COUNT, /* there can be total 7 devices on the bus */ 0x00, /* Where the interrupt router lies (bus) */ (0x1f<<3)|0x0, /* Where the interrupt router lies (dev) */ 0, /* IRQs devoted exclusively to PCI usage */
@@ -31,19 +31,16 @@ 0x24c0, /* Device */ 0, /* Crap (miniport) */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
- 0x14, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
- 0xcd, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */ { /* bus, dev|fn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */
{0x00,(0x1d<<3)|0x0, {{0x60, 0x1ef8}, {0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x01ef8}}, 0x0, 0x0}, /* [A] USB UHCI Controller #1 */
{0x00,(0x1d<<3)|0x1, {{0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x1ef8}, {0x60, 0x01ef8}}, 0x0, 0x0}, /* [B] USB UHCI Controller #2 */
{0x00,(0x1d<<3)|0x2, {{0x62, 0x1ef8}, {0x63, 0x1ef8}, {0x60, 0x1ef8}, {0x61, 0x01ef8}}, 0x0, 0x0}, /* [C] USB UHCI Controller #3 */
{0x00,(0x1d<<3)|0x7, {{0x63, 0x1ef8}, {0x60, 0x1ef8}, {0x61, 0x1ef8}, {0x62, 0x01ef8}}, 0x0, 0x0}, /* [D] USB2 EHCI Controller */
{0x00,(0x1f<<3)|0x1, {{0x60, 0x1ef8}, {0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x01ef8}}, 0x0, 0x0}, /* [A] IDE Controller */
{0x00,(0x1f<<3)|0x3, {{0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x1ef8}, {0x60, 0x01ef8}}, 0x0, 0x0}, /* [B] SMBus Controller */
{0x00,(0x02<<3)|0x0, {{0x60, 0x1ef8}, {0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x01ef8}}, 0x0, 0x0}, /* [A] VGA compatible controller */
{0x00,(0x1f<<3)|0x5, {{0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x1ef8}, {0x60, 0x01ef8}}, 0x0, 0x0}, /* [B] AC'97 Audio Controller */
{0x01,(0x08<<3)|0x0, {{0x68, 0x1ef8}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, /* [A] Ethernet controller */
{0x00,(0x1f<<3)|0x6, {{0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x1ef8}, {0x64, 0x01ef8}}, 0x0, 0x0}, /* [B] AC'97 Modem Controller */
{0x00,(0x02<<3)|0x0, {{0x60, 0x1ef8}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x00,(0x1d<<3)|0x0, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x62, 0x1ef8}, {0x6b, 0x01ef8}}, 0x0, 0x0},
{0x00,(0x1f<<3)|0x0, {{0x62, 0x1ef8}, {0x61, 0x1ef8}, {0x6b, 0x1ef8}, {0x63, 0x01ef8}}, 0x0, 0x0},
{0x01,(0x08<<3)|0x0, {{0x68, 0x1ef8}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x01,(0x00<<3)|0x0, {{0x60, 0x1ef8}, {0x61, 0x1ef8}, {0x62, 0x1ef8}, {0x63, 0x01ef8}}, 0x1, 0x0},
{0x01,(0x01<<3)|0x0, {{0x63, 0x1ef8}, {0x60, 0x1ef8}, {0x61, 0x1ef8}, {0x62, 0x01ef8}}, 0x2, 0x0},
{0x01,(0x02<<3)|0x0, {{0x62, 0x1ef8}, {0x63, 0x1ef8}, {0x60, 0x1ef8}, {0x61, 0x01ef8}}, 0x3, 0x0},
Hm, looks ok, but where did the first version come from and why was it different to this one? Did you check that not only EHCI works fine now, but also that the rest of the devices _continue_ to work as expected?
Please also re-add the comments if possible to make the code easier to read.
Acked-by: Uwe Hermann uwe@hermann-uwe.de
Uwe.
Quoting Uwe Hermann uwe@hermann-uwe.de:
Hm, looks ok, but where did the first version come from and why was it different to this one?
Another 82801DB board. I appeared to make more sense at the time???
Did you check that not only EHCI works fine now, but also that the rest of the devices _continue_ to work as expected?
Yes. I triple checked everything.
Please also re-add the comments if possible to make the code easier to read.
Done.
r3193
Thanks - Joe