Since some people disapprove of white space cleanups mixed in regular commits
[coreboot.git] / src / southbridge / amd / amd8111 / amd8111_usb2.c
index 5f98b668cb929ad304930f459814f7e16b01937e..89115c3bbe86b94f4537001440b45279b8394ccc 100644 (file)
@@ -7,32 +7,38 @@
 #include <device/pci_ops.h>
 #include "amd8111.h"
 
-static void usb2_init(struct device *dev)
-{
-       uint32_t cmd;
-
 #if 0
-       printk_debug("USB: Setting up controller.. ");
-       cmd = pci_read_config32(dev, PCI_COMMAND);
-       pci_write_config32(dev, PCI_COMMAND, 
-               cmd | PCI_COMMAND_IO | PCI_COMMAND_MEMORY | 
-               PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE);
 
+static void lpci_set_subsystem(device_t dev, unsigned vendor, unsigned device)
+{
+       pci_write_config32(dev, 0x70,
+               ((device & 0xffff) << 16) | (vendor & 0xffff));
+}
+
+static struct pci_operations lops_pci = {
+       .set_subsystem = lpci_set_subsystem,
+};
 
-       printk_debug("done.\n");
 #endif
+
+static void amd8111_usb2_enable(device_t dev)
+{
+       // Due to buggy USB2 we force it to disable.
+       dev->enabled = 0;
+       amd8111_enable(dev);
+       printk(BIOS_DEBUG, "USB2 disabled.\n");
 }
 
 static struct device_operations usb2_ops  = {
        .read_resources   = pci_dev_read_resources,
        .set_resources    = pci_dev_set_resources,
        .enable_resources = pci_dev_enable_resources,
-       .init             = usb2_init,
        .scan_bus         = 0,
-       .enable           = amd8111_enable,
+       .enable           = amd8111_usb2_enable,
+       // .ops_pci          = &lops_pci,
 };
 
-static struct pci_driver usb2_driver __pci_driver = {
+static const struct pci_driver usb2_driver __pci_driver = {
        .ops    = &usb2_ops,
        .vendor = PCI_VENDOR_ID_AMD,
        .device = PCI_DEVICE_ID_AMD_8111_USB2,