aboutsummaryrefslogtreecommitdiff
path: root/src/southbridge/intel/i82801xx/i82801xx_ac97.c
diff options
context:
space:
mode:
authorUwe Hermann <uwe@hermann-uwe.de>2007-11-07 22:09:02 +0000
committerUwe Hermann <uwe@hermann-uwe.de>2007-11-07 22:09:02 +0000
commitcce5040153689f9e4908f04c2bb61819984d221f (patch)
treed9609d4eddd75c4162ef42508ab0bd7ae2cb8584 /src/southbridge/intel/i82801xx/i82801xx_ac97.c
parentf9f1ae8ddb4011be41822d907bda4bc6db3c90bb (diff)
Add initial support for all known ICH* southbridges to the
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
Diffstat (limited to 'src/southbridge/intel/i82801xx/i82801xx_ac97.c')
-rw-r--r--src/southbridge/intel/i82801xx/i82801xx_ac97.c73
1 files changed, 52 insertions, 21 deletions
diff --git a/src/southbridge/intel/i82801xx/i82801xx_ac97.c b/src/southbridge/intel/i82801xx/i82801xx_ac97.c
index 14e2b4ae6e..f79e2b4e99 100644
--- a/src/southbridge/intel/i82801xx/i82801xx_ac97.c
+++ b/src/southbridge/intel/i82801xx/i82801xx_ac97.c
@@ -19,13 +19,15 @@
* 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. */