]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-06-08 Oliver Henshaw <oliver.henshaw@gmail.com>
authorproski <proski@localhost>
Mon, 8 Jun 2009 20:20:13 +0000 (20:20 +0000)
committerproski <proski@localhost>
Mon, 8 Jun 2009 20:20:13 +0000 (20:20 +0000)
* 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.

ChangeLog
bus/usb/ohci.c
bus/usb/uhci.c

index c6a355f1fd62909b304179b36f5ec3720acbbbab..8ddd746bdda2b657330e6cde3c6c23c689b672ac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
index 180f4dd41e3e2f97aaae4dbf6f42b8a36368b0e9..146862bdeef6d201354bcceda1d513cbf8283786 100644 (file)
@@ -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);
index b9d63eba758b878669324971064b3fae5ce637ee..f59d26b43fb462b1daaa02bdab7e77ea5cdddba7 100644 (file)
@@ -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);