X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=payloads%2Flibpayload%2Fdrivers%2Fusb%2Fusbinit.c;h=d3cfbb75e15f2ab37e15991e4cbe317759ea4577;hb=25f23f17bcb2bac9fb5af0f5d6d1d8c1c9ea16ff;hp=adaba346029a5e3dea71c4fc9a8591dd9116e67d;hpb=b56f2d0ad4bfc81e7ef5ffd406c652f2c3bd954a;p=coreboot.git diff --git a/payloads/libpayload/drivers/usb/usbinit.c b/payloads/libpayload/drivers/usb/usbinit.c index adaba3460..d3cfbb75e 100644 --- a/payloads/libpayload/drivers/usb/usbinit.c +++ b/payloads/libpayload/drivers/usb/usbinit.c @@ -30,9 +30,9 @@ #include #include #include "uhci.h" -//#include "ohci.h" -//#include "ehci.h" -//#include "xhci.h" +#include "ohci.h" +#include "ehci.h" +#include "xhci.h" #include /** @@ -68,45 +68,49 @@ usb_controller_initialize (int bus, int dev, int func) pci_command |= PCI_COMMAND_MASTER; pci_write_config32(addr, PCI_COMMAND, pci_command); - printf ("%02x:%02x.%x %04x:%04x.%d ", 0, dev, func, + printf ("%02x:%02x.%x %04x:%04x.%d ", bus, dev, func, pciid >> 16, pciid & 0xFFFF, func); - if (prog_if == 0) { - printf ("UHCI controller\n"); + switch(prog_if) { + case 0x00: + printf ("UHCI controller\n"); #ifdef CONFIG_USB_UHCI - uhci_init (addr); + uhci_init (addr); #else - printf ("Not supported.\n"); + printf ("Not supported.\n"); #endif - } - if (prog_if == 0x10) { - printf ("OHCI controller\n"); + break; + + case 0x10: + printf ("OHCI controller\n"); #ifdef CONFIG_USB_OHCI - //ohci_init(addr); - printf ("Not supported.\n"); + ohci_init(addr); #else - printf ("Not supported.\n"); + printf ("Not supported.\n"); #endif + break; - } - if (prog_if == 0x20) { - printf ("EHCI controller\n"); + case 0x20: + printf ("EHCI controller\n"); #ifdef CONFIG_USB_EHCI - //ehci_init(addr); - printf ("Not supported.\n"); + ehci_init(addr); #else - printf ("Not supported.\n"); + printf ("Not supported.\n"); #endif + break; - } - if (prog_if == 0x30) { - printf ("XHCI controller\n"); + case 0x30: + printf ("xHCI controller\n"); #ifdef CONFIG_USB_XHCI - //xhci_init(addr); - printf ("Not supported.\n"); + xhci_init(addr); #else - printf ("Not supported.\n"); + printf ("Not supported.\n"); #endif + break; + default: + printf ("unknown controller %x not supported\n", + prog_if); + break; } } @@ -128,8 +132,9 @@ usb_initialize (void) */ for (bus = 0; bus < 256; bus++) for (dev = 0; dev < 32; dev++) - for (func = 7; func >= 0 ; func--) - usb_controller_initialize (bus, dev, func); + if (pci_read_config32 (PCI_DEV(bus, dev, 0), 8) >> 16 != 0xffff) + for (func = 7; func >= 0 ; func--) + usb_controller_initialize (bus, dev, func); usb_poll(); return 0; }