2009-06-08 Oliver Henshaw <oliver.henshaw@gmail.com>
* bus/usb/ohci.c (grub_ohci_pci_iter): Check that programming interface is OHCI. Add grub_dprintf for symmetry with bus/usb/uhci.c. * bus/usb/uhci.c (grub_uhci_pci_iter): Check that programming interface is UHCI. Add interf variable for programming interface. Print interface with class/subclass.
This commit is contained in:
parent
c0947beba6
commit
fa5db0b120
3 changed files with 16 additions and 4 deletions
|
@ -1,5 +1,12 @@
|
|||
2009-06-08 Oliver Henshaw <oliver.henshaw@gmail.com>
|
||||
|
||||
* bus/usb/ohci.c (grub_ohci_pci_iter): Check that programming
|
||||
interface is OHCI. Add grub_dprintf for symmetry with
|
||||
bus/usb/uhci.c.
|
||||
* bus/usb/uhci.c (grub_uhci_pci_iter): Check that programming
|
||||
interface is UHCI. Add interf variable for programming
|
||||
interface. Print interface with class/subclass.
|
||||
|
||||
* bus/usb/ohci.c: Set interf with correct field.
|
||||
|
||||
* bus/usb/uhci.c: Remove unneeded doubled lines.
|
||||
|
|
|
@ -133,7 +133,7 @@ grub_ohci_pci_iter (int bus, int device, int func,
|
|||
class >>= 24;
|
||||
|
||||
/* If this is not an OHCI controller, just return. */
|
||||
if (class != 0x0c || subclass != 0x03)
|
||||
if (class != 0x0c || subclass != 0x03 || interf != 0x10)
|
||||
return 0;
|
||||
|
||||
/* Determine IO base address. */
|
||||
|
@ -159,6 +159,9 @@ grub_ohci_pci_iter (int bus, int device, int func,
|
|||
/* Reserve memory for the HCCA. */
|
||||
o->hcca = (struct grub_ohci_hcca *) grub_memalign (256, 256);
|
||||
|
||||
grub_dprintf ("ohci", "class=0x%02x 0x%02x interface 0x%02x base=%p\n",
|
||||
class, subclass, interf, o->iobase);
|
||||
|
||||
/* Check if the OHCI revision is actually 1.0 as supported. */
|
||||
revision = grub_ohci_readreg32 (o, GRUB_OHCI_REG_REVISION);
|
||||
grub_dprintf ("ohci", "OHCI revision=0x%02x\n", revision & 0xFF);
|
||||
|
|
|
@ -143,6 +143,7 @@ grub_uhci_pci_iter (int bus, int device, int func,
|
|||
{
|
||||
grub_uint32_t class;
|
||||
grub_uint32_t subclass;
|
||||
grub_uint32_t interf;
|
||||
grub_uint32_t base;
|
||||
grub_uint32_t fp;
|
||||
grub_pci_address_t addr;
|
||||
|
@ -152,11 +153,12 @@ grub_uhci_pci_iter (int bus, int device, int func,
|
|||
addr = grub_pci_make_address (bus, device, func, 2);
|
||||
class = grub_pci_read (addr);
|
||||
|
||||
interf = (class >> 8) & 0xFF;
|
||||
subclass = (class >> 16) & 0xFF;
|
||||
class >>= 24;
|
||||
|
||||
/* If this is not an UHCI controller, just return. */
|
||||
if (class != 0x0c || subclass != 0x03)
|
||||
if (class != 0x0c || subclass != 0x03 || interf != 0x00)
|
||||
return 0;
|
||||
|
||||
/* Determine IO base address. */
|
||||
|
@ -177,8 +179,8 @@ grub_uhci_pci_iter (int bus, int device, int func,
|
|||
u->framelist = 0;
|
||||
u->qh = 0;
|
||||
u->td = 0;
|
||||
grub_dprintf ("uhci", "class=0x%02x 0x%02x base=0x%x\n",
|
||||
class, subclass, u->iobase);
|
||||
grub_dprintf ("uhci", "class=0x%02x 0x%02x interface 0x%02x base=0x%x\n",
|
||||
class, subclass, interf, u->iobase);
|
||||
|
||||
/* Reserve a page for the frame list. */
|
||||
u->framelist = grub_memalign (4096, 4096);
|
||||
|
|
Loading…
Reference in a new issue