This simple patch adds the new Intel ICH10 chipset PCI IDs to the Xen Linux kernel. Signed-off-by: Don Dugger <donald.d.dugger@intel.com> diff -Naur linux-2.6.18-xen.hg-/arch/i386/pci/irq.c linux-2.6.18-xen.hg/arch/i386/pci/irq.c --- linux-2.6.18-xen.hg-/arch/i386/pci/irq.c 2008-02-11 15:09:45.000000000 -0700 +++ linux-2.6.18-xen.hg/arch/i386/pci/irq.c 2008-02-11 16:28:50.000000000 -0700 @@ -549,6 +549,10 @@ case PCI_DEVICE_ID_INTEL_ICH9_3: case PCI_DEVICE_ID_INTEL_ICH9_4: case PCI_DEVICE_ID_INTEL_ICH9_5: + case PCI_DEVICE_ID_INTEL_ICH10_0: + case PCI_DEVICE_ID_INTEL_ICH10_1: + case PCI_DEVICE_ID_INTEL_ICH10_2: + case PCI_DEVICE_ID_INTEL_ICH10_3: r->name = "PIIX/ICH"; r->get = pirq_piix_get; r->set = pirq_piix_set; diff -Naur linux-2.6.18-xen.hg-/Documentation/i2c/busses/i2c-i801 linux-2.6.18-xen.hg/Documentation/i2c/busses/i2c-i801 --- linux-2.6.18-xen.hg-/Documentation/i2c/busses/i2c-i801 2008-02-11 15:09:18.000000000 -0700 +++ linux-2.6.18-xen.hg/Documentation/i2c/busses/i2c-i801 2008-02-11 16:29:34.000000000 -0700 @@ -10,6 +10,11 @@ * Intel 6300ESB * Intel 82801FB/FR/FW/FRW (ICH6) * Intel ICH7 + * Intel 82801G (ICH7) + * Intel 82801H (ICH9) + * Intel 82801I (ICH9) + * Intel Tolapai + * Intel ICH10 Datasheets: Publicly available at the Intel website Authors: diff -Naur linux-2.6.18-xen.hg-/drivers/i2c/busses/i2c-i801.c linux-2.6.18-xen.hg/drivers/i2c/busses/i2c-i801.c --- linux-2.6.18-xen.hg-/drivers/i2c/busses/i2c-i801.c 2008-02-11 15:10:44.000000000 -0700 +++ linux-2.6.18-xen.hg/drivers/i2c/busses/i2c-i801.c 2008-02-11 16:30:35.000000000 -0700 @@ -34,6 +34,8 @@ ESB2 269B ICH8 283E ICH9 2930 + ICH10 3A30 + ICH10 3A60 This driver supports several versions of Intel''s I/O Controller Hubs (ICH). For SMBus support, they are similar to the PIIX4 and are part of Intel''s ''810'' and other chipsets. @@ -459,6 +461,8 @@ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_17) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_5) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9_6) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_4) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_5) }, { 0, } }; diff -Naur linux-2.6.18-xen.hg-/drivers/i2c/busses/Kconfig linux-2.6.18-xen.hg/drivers/i2c/busses/Kconfig --- linux-2.6.18-xen.hg-/drivers/i2c/busses/Kconfig 2008-02-11 15:10:44.000000000 -0700 +++ linux-2.6.18-xen.hg/drivers/i2c/busses/Kconfig 2008-02-11 16:31:11.000000000 -0700 @@ -126,6 +126,7 @@ ESB2 ICH8 ICH9 + ICH10 This driver can also be built as a module. If so, the module will be called i2c-i801. diff -Naur linux-2.6.18-xen.hg-/drivers/scsi/ahci.c linux-2.6.18-xen.hg/drivers/scsi/ahci.c --- linux-2.6.18-xen.hg-/drivers/scsi/ahci.c 2008-02-11 15:11:27.000000000 -0700 +++ linux-2.6.18-xen.hg/drivers/scsi/ahci.c 2008-02-11 16:31:49.000000000 -0700 @@ -339,6 +339,12 @@ board_ahci }, /* ICH9 */ { PCI_VENDOR_ID_INTEL, 0x294e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, board_ahci }, /* ICH9M */ + { PCI_VENDOR_ID_INTEL, 0x3a02, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* ICH10 */ + { PCI_VENDOR_ID_INTEL, 0x3a05, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* ICH10 */ + { PCI_VENDOR_ID_INTEL, 0x3a25, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* ICH10 */ /* JMicron */ { 0x197b, 0x2360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, diff -Naur linux-2.6.18-xen.hg-/drivers/scsi/ata_piix.c linux-2.6.18-xen.hg/drivers/scsi/ata_piix.c --- linux-2.6.18-xen.hg-/drivers/scsi/ata_piix.c 2008-02-11 15:11:28.000000000 -0700 +++ linux-2.6.18-xen.hg/drivers/scsi/ata_piix.c 2008-02-11 16:36:58.000000000 -0700 @@ -126,6 +126,7 @@ ich7m_sata_ahci = 7, ich8_sata_ahci = 8, ich9_sata_ahci = 9, + ich8_2port_sata = 10, /* constants for mapping table */ P0 = 0, /* port 0 */ @@ -193,10 +194,10 @@ { 0x8086, 0x27c4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich7m_sata_ahci }, /* Enterprise Southbridge 2 (where''s the datasheet?) */ { 0x8086, 0x2680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci }, - /* SATA Controller 1 IDE (ICH8, no datasheet yet) */ + /* SATA Controller 1 IDE (ICH8) */ { 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, - /* SATA Controller 2 IDE (ICH8, ditto) */ - { 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, + /* SATA Controller 2 IDE (ICH8) */ + { 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, /* Mobile SATA Controller IDE (ICH8M, ditto) */ { 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, /* SATA Controller 1 IDE (ICH9) */ @@ -211,6 +212,14 @@ { 0x8086, 0x292d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci }, /* Mobile SATA Controller 2 IDE (ICH9M) */ { 0x8086, 0x292e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci }, + /* SATA Controller IDE (ICH10) */ + { 0x8086, 0x3a00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, + /* SATA Controller IDE (ICH10) */ + { 0x8086, 0x3a06, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + /* SATA Controller IDE (ICH10) */ + { 0x8086, 0x3a20, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, + /* SATA Controller IDE (ICH10) */ + { 0x8086, 0x3a26, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, { } /* terminate list */ }; @@ -394,6 +403,18 @@ }, }; +static const struct piix_map_db ich8_2port_map_db = { + .mask = 0x3, + .port_enable = 0x3, + .map = { + /* PM PS SM SS MAP */ + { P0, NA, P1, NA }, /* 00b */ + { RV, RV, RV, RV }, /* 01b */ + { RV, RV, RV, RV }, /* 10b */ + { RV, RV, RV, RV }, + }, +}; + static const struct piix_map_db *piix_map_db_table[] = { [ich5_sata] = &ich5_map_db, [esb_sata] = &ich5_map_db, @@ -403,6 +424,7 @@ [ich7m_sata_ahci] = &ich7m_map_db, [ich8_sata_ahci] = &ich8_map_db, [ich9_sata_ahci] = &ich9_map_db, + [ich8_2port_sata] = &ich8_2port_map_db, }; static struct ata_port_info piix_port_info[] = { @@ -526,6 +548,18 @@ .udma_mask = 0x7f, /* udma0-6 */ .port_ops = &piix_sata_ops, }, + + /* ich8_2port_sata: 11: */ + { + .sht = &piix_sht, + .host_flags = ATA_FLAG_SATA | + PIIX_FLAG_CHECKINTR | PIIX_FLAG_SCR | + PIIX_FLAG_AHCI, + .pio_mask = 0x1f, /* pio0-4 */ + .mwdma_mask = 0x07, /* mwdma0-2 */ + .udma_mask = ATA_UDMA6, + .port_ops = &piix_pata_ops, + }, }; static struct pci_bits piix_enable_bits[] = { diff -Naur linux-2.6.18-xen.hg-/include/linux/pci_ids.h linux-2.6.18-xen.hg/include/linux/pci_ids.h --- linux-2.6.18-xen.hg-/include/linux/pci_ids.h 2008-02-11 15:12:50.000000000 -0700 +++ linux-2.6.18-xen.hg/include/linux/pci_ids.h 2008-02-11 16:37:41.000000000 -0700 @@ -2209,6 +2209,12 @@ #define PCI_DEVICE_ID_INTEL_MCH_PC 0x3599 #define PCI_DEVICE_ID_INTEL_MCH_PC1 0x359a #define PCI_DEVICE_ID_INTEL_E7525_MCH 0x359e +#define PCI_DEVICE_ID_INTEL_ICH10_0 0x3a14 +#define PCI_DEVICE_ID_INTEL_ICH10_1 0x3a16 +#define PCI_DEVICE_ID_INTEL_ICH10_2 0x3a18 +#define PCI_DEVICE_ID_INTEL_ICH10_3 0x3a1a +#define PCI_DEVICE_ID_INTEL_ICH10_4 0x3a30 +#define PCI_DEVICE_ID_INTEL_ICH10_5 0x3a60 #define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000 #define PCI_DEVICE_ID_INTEL_82371SB_1 0x7010 #define PCI_DEVICE_ID_INTEL_82371SB_2 0x7020 diff -Naur linux-2.6.18-xen.hg-/sound/pci/hda/hda_intel.c linux-2.6.18-xen.hg/sound/pci/hda/hda_intel.c --- linux-2.6.18-xen.hg-/sound/pci/hda/hda_intel.c 2008-02-11 15:13:24.000000000 -0700 +++ linux-2.6.18-xen.hg/sound/pci/hda/hda_intel.c 2008-02-11 16:38:54.000000000 -0700 @@ -81,6 +81,7 @@ "{Intel, ESB2}," "{Intel, ICH8}," "{Intel, ICH9}," + "{Intel, ICH10}," "{ATI, SB450}," "{ATI, SB600}," "{ATI, RS600}," @@ -1637,6 +1638,8 @@ { 0x8086, 0x284b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH8 */ { 0x8086, 0x293e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */ { 0x8086, 0x293f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */ + { 0x8086, 0x3a3e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH10 */ + { 0x8086, 0x3a6e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH10 */ { 0x1002, 0x437b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB450 */ { 0x1002, 0x4383, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB600 */ { 0x1002, 0x793b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATIHDMI }, /* ATI RS600 HDMI */ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel