-PCI scanning
[pintos-anon] / src / devices / usb.c
diff --git a/src/devices/usb.c b/src/devices/usb.c
new file mode 100644 (file)
index 0000000..df4ead0
--- /dev/null
@@ -0,0 +1,28 @@
+#include <list.h>
+#include <stdio.h>
+#include "devices/pci.h"
+#include "devices/usb.h"
+
+extern struct list pci_dev_list;
+
+void usb_init(void)
+{
+  printf ("USB: Initializing\n");
+
+  /* Scan PCI devices for USB controllers */
+  struct list_elem *e;
+
+  for (e = list_begin (&pci_dev_list); e != list_end (&pci_dev_list);
+       e = list_next (e))
+    {
+      struct pci_dev *dev = list_entry (e, struct pci_dev, elem);
+
+      if (dev->base_class == USB_BASE_CLASS &&
+         dev->sub_class == USB_SUB_CLASS)
+       {
+         printf ("USB: Found controller at %04x:%02x:%02x.%x\n",
+                 0, dev->bus_id, dev->devfn >> 4, dev->devfn & 0xf);
+       }
+    }
+  printf ("USB: Initialization done\n");
+}