Hi,ollie,
My kernel is "2.2.14",so I need to initialize USB controller in LinuxBios.
But,I don't know how to correctly initialize USB controller in LinuxBios on the sis630e chipset.
I have checked the USB pci config space on the sis630e chipset, so I assigned "I/0" addresses "0xd001<<12" and "0xd8001<<12". And,the function number of the tow USB controller is 2 and 3.
So,I modified LinuxBios like following:
void pci_usb_enable(unsigned bus, unsigned slot, unsigned int irq) { unsigned functNum; struct pci_dev *pdev; unsigned char line; unsigned char readback; u32 io[2]={0xd001<<12,0xd801<<12};
for (functNum = 2; functNum < 4; functNum++) { pdev = pci_find_slot(bus, (slot << 3) + functNum);
if (pdev) { pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &line); printk_debug("USB PIN: %d\n",line); pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0, \ io[functNum-2]);
pci_write_config_byte(pdev, PCI_COMMAND, \ PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); if ((line >= 1) && (line <= 4)) { printk_debug("Assigning usb IRQ %d to %d:%x.%d\n", \ irq, bus, slot, functNum);
pci_write_config_byte(pdev, PCI_INTERRUPT_LINE,\ irq);
pci_read_config_byte(pdev, PCI_INTERRUPT_LINE, \ &readback); printk_debug(" Readback = %d\n", readback);
} } } }
...
pci_usb_enable(0,1,0xa);
...
After done this,I looked up /proc/pci:
PCI devices found: Bus 0, device 0, function 0: Host bridge: Silicon Integrated Systems Unknown device (rev 33). Vendor id=1039. Device id=630. Medium devsel. Master Capable. Latency=64. Non-prefetchable 32 bit memory at 0xf8000000 [0xf8000000]. Bus 0, device 0, function 1: IDE interface: Silicon Integrated Systems 85C5513 (rev 208). Fast devsel. IRQ 14. Master Capable. Latency=16. I/O at 0x2c00 [0x2c01]. Bus 0, device 1, function 0: ISA bridge: Silicon Integrated Systems 85C503 (rev 0). Medium devsel. Master Capable. No bursts. Bus 0, device 1, function 1: Ethernet controller: Silicon Integrated Systems Unknown device (rev 131). Vendor id=1039. Device id=900. Medium devsel. Fast back-to-back capable. IRQ 9. Master Capable. Latency=64. Min Gnt=52.Max Lat=11. I/O at 0xb000 [0xb001]. Non-prefetchable 32 bit memory at 0xfc108000 [0xfc108000]. Bus 0, device 1, function 2: USB Controller: Silicon Integrated Systems 7001 USB (rev 7). Medium devsel. Fast back-to-back capable. IRQ 10. Master Capable. Latency=64. Max Lat=80. Non-prefetchable 32 bit memory at 0xd001000 [0xd001000]. Bus 0, device 1, function 3: USB Controller: Silicon Integrated Systems 7001 USB (rev 7). Medium devsel. Fast back-to-back capable. IRQ 10. Master Capable. Latency=64. Max Lat=80. Non-prefetchable 32 bit memory at 0xd801000 [0xd801000]. Bus 0, device 2, function 0: PCI bridge: Silicon Integrated Systems 5591/5592 AGP (rev 0). Fast devsel. Master Capable. No bursts. Min Gnt=8. Bus 0, device 9, function 0: Bridge: Texas Instruments Unknown device (rev 0). Vendor id=104c. Device id=ac60. Medium devsel. IRQ 5. Non-prefetchable 32 bit memory at 0xfc10b000 [0xfc10b000]. Non-prefetchable 32 bit memory at 0xfc100000 [0xfc100000]. Non-prefetchable 32 bit memory at 0xfc10c000 [0xfc10c000]. Bus 0, device 11, function 0: Ethernet controller: Realtek 8139 (rev 16). Medium devsel. Fast back-to-back capable. IRQ 10. Master Capable. Latency=64. Min Gnt=32.Max Lat=64. I/O at 0x2400 [0x2401]. Non-prefetchable 32 bit memory at 0xfc10d000 [0xfc10d000]. Bus 0, device 13, function 0: Ethernet controller: Realtek 8139 (rev 16). Medium devsel. Fast back-to-back capable. IRQ 9. Master Capable. Latency=64. Min Gnt=32.Max Lat=64. I/O at 0x2800 [0x2801]. Non-prefetchable 32 bit memory at 0xfc10e000 [0xfc10e000]. Bus 1, device 0, function 0: VGA compatible controller: Silicon Integrated Systems Unknown device (rev 33). Vendor id=1039. Device id=6300. Medium devsel. Fast back-to-back capable. BIST capable. Prefetchable 32 bit memory at 0xf0000000 [0xf0000008]. Non-prefetchable 32 bit memory at 0xfc000000 [0xfc000000]. I/O at 0x1000 [0x1001].
I didn't find The "I/O" addresses of USB controller.
So,is there other things need to be done to initialize USB controller correctly?
Could you help me?
Thanks,
riskin
========================== 263电子邮件-信赖邮自专业
On Fri, 2003-02-21 at 10:26, riskin@263.net wrote:
Hi,ollie,
My kernel is "2.2.14",so I need to initialize USB controller in LinuxBios.
But,I don't know how to correctly initialize USB controller in LinuxBios on the sis630e chipset.
I have checked the USB pci config space on the sis630e chipset, so I assigned "I/0" addresses "0xd001<<12" and "0xd8001<<12". And,the function number of the tow USB controller is 2 and 3.
Do you really have any idea about USB controller ?? USB controller does not require IP address space, it uses MMIO address space which is called non-prefetchable memory in PCI spec. The controller does not need any special init stuff. I don't think USB is supported by 2.2.x kernel neither. Why do you insist using 2.2.x kernel ?