Add initial support for all known ICH* southbridges to the
authorUwe Hermann <uwe@hermann-uwe.de>
Wed, 7 Nov 2007 22:09:02 +0000 (22:09 +0000)
committerUwe Hermann <uwe@hermann-uwe.de>
Wed, 7 Nov 2007 22:09:02 +0000 (22:09 +0000)
i82801xx code for the following parts:

 - AC97 audio/modem
 - Onboard network interface cards (NICs)
 - USB 1.1 controllers
 - SMBus controllers

Some other parts are still missing and will be added later.

Use PCI ID #defines from pci_ids.h everywhere. Constify various structs.
Also, fix some random cosmetic issues in the code.

All of this is relatively trivial and tested by manually building
all boards which currently use the i82801xx code.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2951 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/southbridge/intel/i82801xx/Config.lb
src/southbridge/intel/i82801xx/i82801xx.c
src/southbridge/intel/i82801xx/i82801xx_ac97.c
src/southbridge/intel/i82801xx/i82801xx_early_smbus.c
src/southbridge/intel/i82801xx/i82801xx_nic.c
src/southbridge/intel/i82801xx/i82801xx_sata.c
src/southbridge/intel/i82801xx/i82801xx_smbus.c
src/southbridge/intel/i82801xx/i82801xx_usb.c
src/southbridge/intel/i82801xx/i82801xx_usb_ehci.c

index 5f18ef89c30b0154977aab366a9711f00fa073c5..35544193b26408ee2c0ad1f20659357d57e155f9 100644 (file)
@@ -17,6 +17,7 @@
 ## along with this program; if not, write to the Free Software
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 ##
+
 driver i82801xx.o
 driver i82801xx_usb.o
 driver i82801xx_lpc.o
index c2ff9497347c74889c45dbe785672a3bf059e423..a0d34bde8258c012fe5c8d47b46566cd5b6c36f2 100644 (file)
@@ -30,7 +30,7 @@ void i82801xx_enable(device_t dev)
        unsigned int index = 0;
        uint16_t cur_disable_mask, new_disable_mask;
 
-       /* All 82801 devices should be on bus 0. */
+       /* All 82801xx devices should be on bus 0. */
        unsigned int devfn = PCI_DEVFN(0x1f, 0);        // LPC
        device_t lpc_dev = dev_find_slot(0, devfn);     // 0
        if (!lpc_dev)
@@ -50,10 +50,11 @@ void i82801xx_enable(device_t dev)
        if (index == 0) {
                index = 14;
        }
+
        cur_disable_mask = pci_read_config16(lpc_dev, FUNC_DIS);
-       new_disable_mask = cur_disable_mask & ~(1 << index);    // enable it
+       new_disable_mask = cur_disable_mask & ~(1 << index); /* Enable it. */
        if (!dev->enabled) {
-               new_disable_mask |= (1 << index); // disable it, if desired
+               new_disable_mask |= (1 << index); /* Disable it, if desired. */
        }
        if (new_disable_mask != cur_disable_mask) {
                pci_write_config16(lpc_dev, FUNC_DIS, new_disable_mask);
@@ -61,6 +62,6 @@ void i82801xx_enable(device_t dev)
 }
 
 struct chip_operations southbridge_intel_i82801xx_ops = {
-       CHIP_NAME("Intel i82801 Series Southbridge")
+       CHIP_NAME("Intel 82801 Series Southbridge")
        .enable_dev = i82801xx_enable,
 };
index 14e2b4ae6ed13c04128ae71cb595439278067ac2..f79e2b4e9943a0304fb99ae07fd0751bfdf5281f 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+/* This code should work for all ICH* southbridges with AC97 audio/modem. */
+
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include "i82801xx.h"
 
-static struct device_operations ac97_ops = {
+static const struct device_operations ac97_ops = {
        .read_resources         = pci_dev_read_resources,
        .set_resources          = pci_dev_set_resources,
        .enable_resources       = pci_dev_enable_resources,
@@ -34,80 +36,109 @@ static struct device_operations ac97_ops = {
        .enable                 = i82801xx_enable,
 };
 
-/* 82801AA */
+/* 82801AA (ICH) */
 static const struct pci_driver i82801aa_ac97_audio __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2415,
+       .device = PCI_DEVICE_ID_INTEL_82801AA_AC97_AUDIO,
 };
 
 static const struct pci_driver i82801aa_ac97_modem __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2416,
+       .device = PCI_DEVICE_ID_INTEL_82801AA_AC97_MODEM,
 };
 
-/* 82801AB */
+/* 82801AB (ICH0) */
 static const struct pci_driver i82801ab_ac97_audio __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2425,
+       .device = PCI_DEVICE_ID_INTEL_82801AB_AC97_AUDIO,
 };
 
 static const struct pci_driver i82801ab_ac97_modem __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2426,
+       .device = PCI_DEVICE_ID_INTEL_82801AB_AC97_MODEM,
 };
 
-/* 82801BA */
+/* 82801BA/BAM (ICH2/ICH2-M) */
 static const struct pci_driver i82801ba_ac97_audio __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2445,
+       .device = PCI_DEVICE_ID_INTEL_82801BA_AC97_AUDIO,
 };
 
 static const struct pci_driver i82801ba_ac97_modem __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2446,
+       .device = PCI_DEVICE_ID_INTEL_82801BA_AC97_MODEM,
 };
 
-/* 82801CA */
+/* 82801CA/CAM (ICH3-S/ICH3-M) */
 static const struct pci_driver i82801ca_ac97_audio __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2485,
+       .device = PCI_DEVICE_ID_INTEL_82801CA_AC97_AUDIO,
 };
 
 static const struct pci_driver i82801ca_ac97_modem __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2486,
+       .device = PCI_DEVICE_ID_INTEL_82801CA_AC97_MODEM,
 };
 
-/* 82801DB & 82801DBM */
+/* 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) */
 static const struct pci_driver i82801db_ac97_audio __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24c5,
+       .device = PCI_DEVICE_ID_INTEL_82801DB_AC97_AUDIO,
 };
 
 static const struct pci_driver i82801db_ac97_modem __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24c6,
+       .device = PCI_DEVICE_ID_INTEL_82801DB_AC97_MODEM,
+};
+
+/* 82801EB/ER (ICH5/ICH5R) */
+static const struct pci_driver i82801eb_ac97_audio __pci_driver = {
+       .ops    = &ac97_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_AC97_AUDIO,
+};
+
+static const struct pci_driver i82801eb_ac97_modem __pci_driver = {
+       .ops    = &ac97_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_AC97_MODEM,
 };
 
-/* 82801EB & 82801ER */
-static const struct pci_driver i82801ex_ac97_audio __pci_driver = {
+/* 82801FB/FR/FW/FRW/FBM (ICH6/ICH6R/ICH6W/ICH6RW/ICH6-M) */
+static const struct pci_driver i82801fb_ac97_audio __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24d5,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_AC97_AUDIO,
 };
 
-static const struct pci_driver i82801ex_ac97_modem __pci_driver = {
+static const struct pci_driver i82801fb_ac97_modem __pci_driver = {
        .ops    = &ac97_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24d6,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_AC97_MODEM,
 };
+
+/* 82801GB/GR/GDH/GBM/GHM (ICH7/ICH7R/ICH7DH/ICH7-M/ICH7-M DH) */
+/* Note: 82801GU (ICH7-U) doesn't have AC97 audio/modem. */
+static const struct pci_driver i82801gb_ac97_audio __pci_driver = {
+       .ops    = &ac97_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_AC97_AUDIO,
+};
+
+static const struct pci_driver i82801gb_ac97_modem __pci_driver = {
+       .ops    = &ac97_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_AC97_MODEM,
+};
+
+/* Note: There's no AC97 audio/modem on ICH8/ICH9/C-ICH. */
index 214ca0834eabcd64b04a2c5fec8600b1ce5aab11..df73827e402f7171fd44a519c3610503327cd689 100644 (file)
@@ -29,7 +29,7 @@ static void enable_smbus(void)
        device_t dev;
        uint16_t device_id;
 
-       /* Set the SMBus device staticly. */
+       /* Set the SMBus device statically. */
        dev = PCI_DEV(0x0, 0x1f, 0x3);
 
        /* Check to make sure we've got the right device. */
index 410b36b502bcea64a3c4961a7024819e4d71ae85..2a10e63e75cdd97992be1a5d11a97d5ebeae3fcf 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+/* This code should work for all ICH* southbridges with a NIC. */
+
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
 
-static struct device_operations nic_ops = {
+static const struct device_operations nic_ops = {
        .read_resources         = pci_dev_read_resources,
        .set_resources          = pci_dev_set_resources,
        .enable_resources       = pci_dev_enable_resources,
@@ -31,14 +33,68 @@ static struct device_operations nic_ops = {
        .scan_bus               = 0,
 };
 
-static const struct pci_driver i82801dbm_nic __pci_driver = {
+/* Note: There's no NIC on 82801AA/AB (ICH/ICH0). */
+
+/* 82801BA/BAM/CA/CAM (ICH2/ICH2-M/ICH3-S/ICH3-M) */
+static const struct pci_driver i82801ba_nic __pci_driver = {
+       .ops    = &nic_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801BA_LAN,
+};
+
+/* 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) */
+static const struct pci_driver i82801db_nic __pci_driver = {
+       .ops    = &nic_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801DB_LAN,
+};
+
+/* 82801EB/ER (ICH5/ICH5R) */
+static const struct pci_driver i82801eb_nic __pci_driver = {
+       .ops    = &nic_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_LAN,
+};
+
+/* 82801FB/FR/FW/FRW/FBM (ICH6/ICH6R/ICH6W/ICH6RW/ICH6-M) */
+static const struct pci_driver i82801fb_nic __pci_driver = {
        .ops    = &nic_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x103a,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_LAN,
 };
 
-static const struct pci_driver i82801ex_nic __pci_driver = {
+/* 82801GB/GR/GDH/GBM/GHM (ICH7/ICH7R/ICH7DH/ICH7-M/ICH7-M DH) */
+/* Note: 82801GU (ICH7-U) doesn't have a NIC. */
+static const struct pci_driver i82801gb_nic __pci_driver = {
        .ops    = &nic_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x1051,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_LAN,
 };
+
+/* 82801HB/HR/HDH/HDO/HBM/HEM (ICH8/ICH8R/ICH8DH/ICH8DO/ICH8M/ICH8M-E) */
+static const struct pci_driver i82801hb_nic __pci_driver = {
+       .ops    = &nic_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801HB_LAN,
+};
+
+/* 82801IB/IR/IH/IO (ICH9/ICH9R/ICH9DH/ICH9DO) */
+static const struct pci_driver i82801ib_nic __pci_driver = {
+       .ops    = &nic_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_LAN,
+};
+
+/* 82801E (C-ICH) */
+static const struct pci_driver i82801e_nic1 __pci_driver = {
+       .ops    = &nic_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801E_LAN1,
+};
+
+static const struct pci_driver i82801e_nic2 __pci_driver = {
+       .ops    = &nic_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801E_LAN2,
+};
+
index 782a52f3e8f71dfdeaac5457b23b4ac7d14130a7..e382c8ed3a25226f6d3dfde3697d286188f8a779 100644 (file)
@@ -23,7 +23,6 @@
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
-#include <device/pci_ops.h>
 #include "i82801xx.h"
 
 /* TODO: Set dynamically, if the user only wants one SATA channel or none
index 25177e1983275ed9dd582e5ddb5ef9e549620097..92f459e85ef5e233d22c2523f36bd4bcfb03c9f2 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+/* TODO: Check datasheets if this will work for all ICH* southbridges. */
+
+#include <stdint.h>
 #include <smbus.h>
 #include <pci.h>
 #include <arch/io.h>
-#include "i82801_model_specific.h"
 #include "i82801xx.h"
 #include "i82801_smbus.h"
 
-static int smbus_read_byte(struct bus *bus, device_t dev, uint8_t address)
+static int smbus_read_byte(struct bus *bus, device_t dev, u8 address)
 {
-       unsigned device;
+       unsigned device;        /* TODO: u16? */
        struct resource *res;
 
        device = dev->path.u.i2c.device;
@@ -36,11 +38,11 @@ static int smbus_read_byte(struct bus *bus, device_t dev, uint8_t address)
        return do_smbus_read_byte(res->base, device, address);
 }
 
-static struct smbus_bus_operations lops_smbus_bus = {
+static const struct smbus_bus_operations lops_smbus_bus = {
        .read_byte      = smbus_read_byte,
 };
 
-static struct device_operations smbus_ops = {
+static const struct device_operations smbus_ops = {
        .read_resources         = pci_dev_read_resources,
        .set_resources          = pci_dev_set_resources,
        .enable_resources       = pci_dev_enable_resources,
@@ -50,44 +52,79 @@ static struct device_operations smbus_ops = {
        .ops_smbus_bus          = &lops_smbus_bus,
 };
 
-/* 82801AA */
-static const struct pci_driver smbus_driver __pci_driver = {
+/* 82801AA (ICH) */
+static const struct pci_driver i82801aa_smb __pci_driver = {
+       .ops    = &smbus_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801AA_SMB,
+};
+
+/* 82801AB (ICH0) */
+static const struct pci_driver i82801ab_smb __pci_driver = {
+       .ops    = &smbus_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801AB_SMB,
+};
+
+/* 82801BA/BAM (ICH2/ICH2-M) */
+static const struct pci_driver i82801ba_smb __pci_driver = {
+       .ops    = &smbus_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801BA_SMB,
+};
+
+/* 82801CA/CAM (ICH3-S/ICH3-M) */
+static const struct pci_driver i82801ca_smb __pci_driver = {
+       .ops    = &smbus_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801CA_SMB,
+};
+
+/* 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) */
+static const struct pci_driver i82801db_smb __pci_driver = {
+       .ops    = &smbus_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801DB_SMB,
+};
+
+/* 82801EB/ER (ICH5/ICH5R) */
+static const struct pci_driver i82801eb_smb __pci_driver = {
        .ops    = &smbus_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2413,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_SMB,
 };
 
-/* 82801AB */
-static const struct pci_driver smbus_driver __pci_driver = {
+/* 82801FB/FR/FW/FRW/FBM (ICH6/ICH6R/ICH6W/ICH6RW/ICH6-M) */
+static const struct pci_driver i82801fb_smb __pci_driver = {
        .ops    = &smbus_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2423,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_SMB,
 };
 
-/* 82801BA */
-static const struct pci_driver smbus_driver __pci_driver = {
+/* 82801GB/GR/GDH/GBM/GHM/GU (ICH7/ICH7R/ICH7DH/ICH7-M/ICH7-M DH/ICH7-U) */
+static const struct pci_driver i82801gb_smb __pci_driver = {
        .ops    = &smbus_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2443,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_SMB,
 };
 
-/* 82801CA */
-static const struct pci_driver smbus_driver __pci_driver = {
+/* 82801HB/HR/HDH/HDO/HBM/HEM (ICH8/ICH8R/ICH8DH/ICH8DO/ICH8M/ICH8M-E) */
+static const struct pci_driver i82801hb_smb __pci_driver = {
        .ops    = &smbus_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2483,
+       .device = PCI_DEVICE_ID_INTEL_82801HB_LAN,
 };
 
-/* 82801DB and 82801DBM */
-static const struct pci_driver smbus_driver __pci_driver = {
+/* 82801IB/IR/IH/IO (ICH9/ICH9R/ICH9DH/ICH9DO) */
+static const struct pci_driver i82801ib_smb __pci_driver = {
        .ops    = &smbus_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24c3,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_SMB,
 };
 
-/* 82801EB and 82801ER */
-static const struct pci_driver smbus_driver __pci_driver = {
+/* 82801E (C-ICH) */
+static const struct pci_driver i82801e_smb __pci_driver = {
        .ops    = &smbus_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24d3,
+       .device = PCI_DEVICE_ID_INTEL_82801E_SMB,
 };
index bbd951b5901fb16ddad8d35709a8de7908b8172e..0d8feab17bbacc193217406d7d6bfc566807319a 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+/* This code should work for all ICH* southbridges with USB. */
+
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
-#include <device/pci_ops.h>
 #include "i82801xx.h"
 
 static void usb_init(struct device *dev)
@@ -30,7 +31,7 @@ static void usb_init(struct device *dev)
        /* TODO: Any init needed? Some ports have it, others don't. */
 }
 
-static struct device_operations usb_ops = {
+static const struct device_operations usb_ops = {
        .read_resources         = pci_dev_read_resources,
        .set_resources          = pci_dev_set_resources,
        .enable_resources       = pci_dev_enable_resources,
@@ -39,92 +40,217 @@ static struct device_operations usb_ops = {
        .enable                 = i82801xx_enable,
 };
 
-/* 82801AA */
-static const struct pci_driver i82801aa_usb_1 __pci_driver = {
+/* 82801AA (ICH) */
+static const struct pci_driver i82801aa_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801AA_USB,
+};
+
+/* 82801AB (ICH0) */
+static const struct pci_driver i82801ab_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801AB_USB,
+};
+
+/* 82801BA/BAM (ICH2/ICH2-M) */
+static const struct pci_driver i82801ba_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801BA_USB1,
+};
+
+static const struct pci_driver i82801ba_usb2 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801BA_USB2,
+};
+
+/* 82801CA/CAM (ICH3-S/ICH3-M) */
+static const struct pci_driver i82801ca_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801CA_USB1,
+};
+
+static const struct pci_driver i82801ca_usb2 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801CA_USB2,
+};
+
+static const struct pci_driver i82801ca_usb3 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801CA_USB3,
+};
+
+/* 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) */
+static const struct pci_driver i82801db_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801DB_USB1,
+};
+
+static const struct pci_driver i82801db_usb2 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801DB_USB2,
+};
+
+static const struct pci_driver i82801db_usb3 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801DB_USB3,
+};
+
+/* 82801EB/ER (ICH5/ICH5R) */
+static const struct pci_driver i82801eb_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_USB1,
+};
+
+static const struct pci_driver i82801eb_usb2 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_USB2,
+};
+
+static const struct pci_driver i82801eb_usb3 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_USB3,
+};
+
+static const struct pci_driver i82801eb_usb4 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801EB_USB4,
+};
+
+/* 82801FB/FR/FW/FRW/FBM (ICH6/ICH6R/ICH6W/ICH6RW/ICH6-M) */
+static const struct pci_driver i82801fb_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_USB1,
+};
+
+static const struct pci_driver i82801fb_usb2 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_USB2,
+};
+
+static const struct pci_driver i82801fb_usb3 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_USB3,
+};
+
+static const struct pci_driver i82801fb_usb4 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801FB_USB4,
+};
+
+/* 82801GB/GR/GDH/GBM/GHM/GU (ICH7/ICH7R/ICH7DH/ICH7-M/ICH7-M DH/ICH7-U) */
+static const struct pci_driver i82801gb_usb1 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_USB1,
+};
+
+static const struct pci_driver i82801gb_usb2 __pci_driver = {
+       .ops    = &usb_ops,
+       .vendor = PCI_VENDOR_ID_INTEL,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_USB2,
+};
+
+static const struct pci_driver i82801gb_usb3 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2412,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_USB3,
 };
 
-/* 82801AB */
-static const struct pci_driver i82801ab_usb_1 __pci_driver = {
+static const struct pci_driver i82801gb_usb4 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2422,
+       .device = PCI_DEVICE_ID_INTEL_82801GB_USB4,
 };
 
-/* 82801BA */
-static const struct pci_driver i82801ba_usb_1 __pci_driver = {
+/* 82801HB/HR/HDH/HDO/HBM/HEM (ICH8/ICH8R/ICH8DH/ICH8DO/ICH8M/ICH8M-E) */
+static const struct pci_driver i82801hb_usb1 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2442,
+       .device = PCI_DEVICE_ID_INTEL_82801HB_USB1,
 };
 
-static const struct pci_driver i82801ba_usb_2 __pci_driver = {
+static const struct pci_driver i82801hb_usb2 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2444,
+       .device = PCI_DEVICE_ID_INTEL_82801HB_USB2,
 };
 
-/* 82801CA */
-static const struct pci_driver i82801ca_usb_1 __pci_driver = {
+static const struct pci_driver i82801hb_usb3 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2482,
+       .device = PCI_DEVICE_ID_INTEL_82801HB_USB3,
 };
 
-static const struct pci_driver i82801ca_usb_2 __pci_driver = {
+static const struct pci_driver i82801hb_usb4 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2484,
+       .device = PCI_DEVICE_ID_INTEL_82801HB_USB4,
 };
 
-static const struct pci_driver i82801ca_usb_3 __pci_driver = {
+static const struct pci_driver i82801hb_usb5 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x2487,
+       .device = PCI_DEVICE_ID_INTEL_82801HB_USB5,
 };
 
-/* 82801DB and 82801DBM */
-static const struct pci_driver i82801db_usb_1 __pci_driver = {
+/* 82801IB/IR/IH/IO (ICH9/ICH9R/ICH9DH/ICH9DO) */
+static const struct pci_driver i82801ib_usb1 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24c2,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_USB1,
 };
 
-static const struct pci_driver i82801db_usb_2 __pci_driver = {
+static const struct pci_driver i82801ib_usb2 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24c4,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_USB2,
 };
 
-static const struct pci_driver i82801db_usb_3 __pci_driver = {
+static const struct pci_driver i82801ib_usb3 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24c7,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_USB3,
 };
 
-/* 82801EB and 82801ER */
-static const struct pci_driver i82801ex_usb_1 __pci_driver = {
+static const struct pci_driver i82801ib_usb4 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24d2,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_USB4,
 };
 
-static const struct pci_driver i82801ex_usb_2 __pci_driver = {
+static const struct pci_driver i82801ib_usb5 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24d4,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_USB5,
 };
 
-static const struct pci_driver i82801ex_usb_3 __pci_driver = {
+static const struct pci_driver i82801ib_usb6 __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24d7,
+       .device = PCI_DEVICE_ID_INTEL_82801IB_USB6,
 };
 
-static const struct pci_driver i82801ex_usb_4 __pci_driver = {
+/* 82801E (C-ICH) */
+static const struct pci_driver i82801e_usb __pci_driver = {
        .ops    = &usb_ops,
        .vendor = PCI_VENDOR_ID_INTEL,
-       .device = 0x24de,
+       .device = PCI_DEVICE_ID_INTEL_82801E_USB,
 };
index fe0540c73008f4f52bef50d33e8318e8dcd66479..a82534339fc4017fd4c563cf259b9af40f80450d 100644 (file)
@@ -23,7 +23,6 @@
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
-#include <device/pci_ops.h>
 #include "i82801xx.h"
 
 static void usb_ehci_init(struct device *dev)