--- /dev/null
+From 5623cab83ea61e0420f2064216d83eab067a24c6 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 17:00:18 -0800
+Subject: ahci: AHCI and RAID mode SATA patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 5623cab83ea61e0420f2064216d83eab067a24c6 upstream.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/ahci.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/ata/ahci.c
++++ b/drivers/ata/ahci.c
+@@ -570,6 +570,12 @@ static const struct pci_device_id ahci_p
+ { PCI_VDEVICE(INTEL, 0x3b2b), board_ahci }, /* PCH RAID */
+ { PCI_VDEVICE(INTEL, 0x3b2c), board_ahci }, /* PCH RAID */
+ { PCI_VDEVICE(INTEL, 0x3b2f), board_ahci }, /* PCH AHCI */
++ { PCI_VDEVICE(INTEL, 0x1c02), board_ahci }, /* CPT AHCI */
++ { PCI_VDEVICE(INTEL, 0x1c03), board_ahci }, /* CPT AHCI */
++ { PCI_VDEVICE(INTEL, 0x1c04), board_ahci }, /* CPT RAID */
++ { PCI_VDEVICE(INTEL, 0x1c05), board_ahci }, /* CPT RAID */
++ { PCI_VDEVICE(INTEL, 0x1c06), board_ahci }, /* CPT RAID */
++ { PCI_VDEVICE(INTEL, 0x1c07), board_ahci }, /* CPT RAID */
+
+ /* JMicron 360/1/3/5/6, match class to avoid IDE function */
+ { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
--- /dev/null
+From 8815cd030fdd73932a791d1f06194c8db807cde7 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 15 Apr 2010 09:02:41 +0200
+Subject: ALSA: hda - Add position_fix quirk for Biostar mobo
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 8815cd030fdd73932a791d1f06194c8db807cde7 upstream.
+
+The Biostar mobo seems to give a wrong DMA position, resulting in
+stuttering or skipping sounds on 2.6.34. Since the commit
+7b3a177b0d4f92b3431b8dca777313a07533a710, "ALSA: pcm_lib: fix "something
+must be really wrong" condition", makes the position check more strictly,
+the DMA position problem is revealed more clearly now.
+
+The fix is to use only LPIB for obtaining the position, i.e. passing
+position_fix=1. This patch adds a static quirk to achieve it as default.
+
+Reported-by: Frank Griffin <ftg@roadrunner.com>
+Cc: Eric Piel <Eric.Piel@tremplin-utc.net>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -2235,6 +2235,7 @@ static struct snd_pci_quirk position_fix
+ SND_PCI_QUIRK(0x1458, 0xa022, "ga-ma770-ud3", POS_FIX_LPIB),
+ SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB),
+ SND_PCI_QUIRK(0x1565, 0x820f, "Biostar Microtech", POS_FIX_LPIB),
++ SND_PCI_QUIRK(0x1565, 0x8218, "Biostar Microtech", POS_FIX_LPIB),
+ SND_PCI_QUIRK(0x8086, 0xd601, "eMachines T5212", POS_FIX_LPIB),
+ {}
+ };
--- /dev/null
+From 32679f95cac3b1bdf27dce8b5273e06af186fd91 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Mon, 22 Feb 2010 17:31:09 -0800
+Subject: ALSA: hda - enable snoop for Intel Cougar Point
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 32679f95cac3b1bdf27dce8b5273e06af186fd91 upstream.
+
+This patch enables snoop, eliminating static during playback.
+This patch supersedes the previous Cougar Point audio patch.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -438,6 +438,7 @@ struct azx {
+ /* driver types */
+ enum {
+ AZX_DRIVER_ICH,
++ AZX_DRIVER_PCH,
+ AZX_DRIVER_SCH,
+ AZX_DRIVER_ATI,
+ AZX_DRIVER_ATIHDMI,
+@@ -452,6 +453,7 @@ enum {
+
+ static char *driver_short_names[] __devinitdata = {
+ [AZX_DRIVER_ICH] = "HDA Intel",
++ [AZX_DRIVER_PCH] = "HDA Intel PCH",
+ [AZX_DRIVER_SCH] = "HDA Intel MID",
+ [AZX_DRIVER_ATI] = "HDA ATI SB",
+ [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI",
+@@ -1040,6 +1042,7 @@ static void azx_init_pci(struct azx *chi
+ 0x01, NVIDIA_HDA_ENABLE_COHBIT);
+ break;
+ case AZX_DRIVER_SCH:
++ case AZX_DRIVER_PCH:
+ pci_read_config_word(chip->pci, INTEL_SCH_HDA_DEVC, &snoop);
+ if (snoop & INTEL_SCH_HDA_DEVC_NOSNOOP) {
+ pci_write_config_word(chip->pci, INTEL_SCH_HDA_DEVC,
+@@ -2393,6 +2396,7 @@ static int __devinit azx_create(struct s
+ if (bdl_pos_adj[dev] < 0) {
+ switch (chip->driver_type) {
+ case AZX_DRIVER_ICH:
++ case AZX_DRIVER_PCH:
+ bdl_pos_adj[dev] = 1;
+ break;
+ default:
+@@ -2668,7 +2672,7 @@ static struct pci_device_id azx_ids[] =
+ /* PCH */
+ { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH },
+ /* CPT */
+- { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_ICH },
++ { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH },
+ /* SCH */
+ { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
+ /* ATI SB 450/600 */
--- /dev/null
+From d2f2fcd2541bae004db7f4798ffd9d2cb75ae817 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 17:03:35 -0800
+Subject: ALSA: hda_intel: ALSA HD Audio patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit d2f2fcd2541bae004db7f4798ffd9d2cb75ae817 upstream.
+
+This patch adds the Intel Cougar Point (PCH) HD Audio Controller DeviceIDs.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -116,6 +116,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},
+ "{Intel, ICH9},"
+ "{Intel, ICH10},"
+ "{Intel, PCH},"
++ "{Intel, CPT},"
+ "{Intel, SCH},"
+ "{ATI, SB450},"
+ "{ATI, SB600},"
+@@ -2666,6 +2667,8 @@ static struct pci_device_id azx_ids[] =
+ { PCI_DEVICE(0x8086, 0x3a6e), .driver_data = AZX_DRIVER_ICH },
+ /* PCH */
+ { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH },
++ /* CPT */
++ { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_ICH },
+ /* SCH */
+ { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
+ /* ATI SB 450/600 */
--- /dev/null
+From 88e8201e67aace3d86de9e75122ea525f0e7248e Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 17:01:28 -0800
+Subject: ata_piix: IDE Mode SATA patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 88e8201e67aace3d86de9e75122ea525f0e7248e upstream.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/ata_piix.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/ata/ata_piix.c
++++ b/drivers/ata/ata_piix.c
+@@ -291,6 +291,14 @@ static const struct pci_device_id piix_p
+ { 0x8086, 0x3b2d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
+ /* SATA Controller IDE (PCH) */
+ { 0x8086, 0x3b2e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
++ /* SATA Controller IDE (CPT) */
++ { 0x8086, 0x1c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
++ /* SATA Controller IDE (CPT) */
++ { 0x8086, 0x1c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
++ /* SATA Controller IDE (CPT) */
++ { 0x8086, 0x1c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
++ /* SATA Controller IDE (CPT) */
++ { 0x8086, 0x1c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
+ { } /* terminate list */
+ };
+
--- /dev/null
+From b02914af4d7020828ce921a572589dd793517c09 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Thu, 10 Dec 2009 17:35:01 -0600
+Subject: b43: Allow PIO mode to be selected at module load
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit b02914af4d7020828ce921a572589dd793517c09 upstream.
+
+If userencounter the "Fatal DMA Problem" with a BCM43XX device, and
+still wish to use b43 as the driver, their only option is to rebuild
+the kernel with CONFIG_B43_FORCE_PIO. This patch removes this option and
+allows PIO mode to be selected with a load-time parameter for the module.
+Note that the configuration variable CONFIG_B43_PIO is also removed.
+
+Once the DMA problem with the BCM4312 devices is solved, this patch will
+likely be reverted.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Tested-by: John Daiker <daikerjohn@gmail.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43/Kconfig | 19 +-----------------
+ drivers/net/wireless/b43/Makefile | 2 -
+ drivers/net/wireless/b43/b43.h | 13 ------------
+ drivers/net/wireless/b43/dma.c | 2 -
+ drivers/net/wireless/b43/main.c | 9 +++++---
+ drivers/net/wireless/b43/pio.h | 40 --------------------------------------
+ 6 files changed, 9 insertions(+), 76 deletions(-)
+
+--- a/drivers/net/wireless/b43/Kconfig
++++ b/drivers/net/wireless/b43/Kconfig
+@@ -3,6 +3,7 @@ config B43
+ depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
+ select SSB
+ select FW_LOADER
++ select SSB_BLOCKIO
+ ---help---
+ b43 is a driver for the Broadcom 43xx series wireless devices.
+
+@@ -78,14 +79,6 @@ config B43_SDIO
+
+ If unsure, say N.
+
+-# Data transfers to the device via PIO
+-# This is only needed on PCMCIA and SDIO devices. All others can do DMA properly.
+-config B43_PIO
+- bool
+- depends on B43 && (B43_SDIO || B43_PCMCIA || B43_FORCE_PIO)
+- select SSB_BLOCKIO
+- default y
+-
+ config B43_NPHY
+ bool "Pre IEEE 802.11n support (BROKEN)"
+ depends on B43 && EXPERIMENTAL && BROKEN
+@@ -137,12 +130,4 @@ config B43_DEBUG
+ for production use.
+ Only say Y, if you are debugging a problem in the b43 driver sourcecode.
+
+-config B43_FORCE_PIO
+- bool "Force usage of PIO instead of DMA"
+- depends on B43 && B43_DEBUG
+- ---help---
+- This will disable DMA and always enable PIO instead.
+-
+- Say N!
+- This is only for debugging the PIO engine code. You do
+- _NOT_ want to enable this.
++
+--- a/drivers/net/wireless/b43/Makefile
++++ b/drivers/net/wireless/b43/Makefile
+@@ -12,7 +12,7 @@ b43-y += xmit.o
+ b43-y += lo.o
+ b43-y += wa.o
+ b43-y += dma.o
+-b43-$(CONFIG_B43_PIO) += pio.o
++b43-y += pio.o
+ b43-y += rfkill.o
+ b43-$(CONFIG_B43_LEDS) += leds.o
+ b43-$(CONFIG_B43_PCMCIA) += pcmcia.o
+--- a/drivers/net/wireless/b43/b43.h
++++ b/drivers/net/wireless/b43/b43.h
+@@ -830,7 +830,6 @@ struct b43_wl {
+ /* The device LEDs. */
+ struct b43_leds leds;
+
+-#ifdef CONFIG_B43_PIO
+ /*
+ * RX/TX header/tail buffers used by the frame transmit functions.
+ */
+@@ -838,7 +837,6 @@ struct b43_wl {
+ struct b43_txhdr txhdr;
+ u8 rx_tail[4];
+ u8 tx_tail[4];
+-#endif /* CONFIG_B43_PIO */
+ };
+
+ static inline struct b43_wl *hw_to_b43_wl(struct ieee80211_hw *hw)
+@@ -889,20 +887,9 @@ static inline void b43_write32(struct b4
+
+ static inline bool b43_using_pio_transfers(struct b43_wldev *dev)
+ {
+-#ifdef CONFIG_B43_PIO
+ return dev->__using_pio_transfers;
+-#else
+- return 0;
+-#endif
+ }
+
+-#ifdef CONFIG_B43_FORCE_PIO
+-# define B43_FORCE_PIO 1
+-#else
+-# define B43_FORCE_PIO 0
+-#endif
+-
+-
+ /* Message printing */
+ void b43info(struct b43_wl *wl, const char *fmt, ...)
+ __attribute__ ((format(printf, 2, 3)));
+--- a/drivers/net/wireless/b43/dma.c
++++ b/drivers/net/wireless/b43/dma.c
+@@ -1620,7 +1620,6 @@ void b43_dma_tx_resume(struct b43_wldev
+ b43_power_saving_ctl_bits(dev, 0);
+ }
+
+-#ifdef CONFIG_B43_PIO
+ static void direct_fifo_rx(struct b43_wldev *dev, enum b43_dmatype type,
+ u16 mmio_base, bool enable)
+ {
+@@ -1654,4 +1653,3 @@ void b43_dma_direct_fifo_rx(struct b43_w
+ mmio_base = b43_dmacontroller_base(type, engine_index);
+ direct_fifo_rx(dev, type, mmio_base, enable);
+ }
+-#endif /* CONFIG_B43_PIO */
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -102,6 +102,9 @@ int b43_modparam_verbose = B43_VERBOSITY
+ module_param_named(verbose, b43_modparam_verbose, int, 0644);
+ MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
+
++static int modparam_pio;
++module_param_named(pio, modparam_pio, int, 0444);
++MODULE_PARM_DESC(pio, "enable(1) / disable(0) PIO mode");
+
+ static const struct ssb_device_id b43_ssb_tbl[] = {
+ SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
+@@ -1790,8 +1793,8 @@ static void b43_do_interrupt_thread(stru
+ dma_reason[4], dma_reason[5]);
+ b43err(dev->wl, "This device does not support DMA "
+ "on your system. Please use PIO instead.\n");
+- b43err(dev->wl, "CONFIG_B43_FORCE_PIO must be set in "
+- "your kernel configuration.\n");
++ b43err(dev->wl, "Unload the b43 module and reload "
++ "with 'pio=1'\n");
+ return;
+ }
+ if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
+@@ -4358,7 +4361,7 @@ static int b43_wireless_core_init(struct
+
+ if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
+ (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
+- B43_FORCE_PIO) {
++ modparam_pio) {
+ dev->__using_pio_transfers = 1;
+ err = b43_pio_init(dev);
+ } else {
+--- a/drivers/net/wireless/b43/pio.h
++++ b/drivers/net/wireless/b43/pio.h
+@@ -55,8 +55,6 @@
+ #define B43_PIO_MAX_NR_TXPACKETS 32
+
+
+-#ifdef CONFIG_B43_PIO
+-
+ struct b43_pio_txpacket {
+ /* Pointer to the TX queue we belong to. */
+ struct b43_pio_txqueue *queue;
+@@ -169,42 +167,4 @@ void b43_pio_rx(struct b43_pio_rxqueue *
+ void b43_pio_tx_suspend(struct b43_wldev *dev);
+ void b43_pio_tx_resume(struct b43_wldev *dev);
+
+-
+-#else /* CONFIG_B43_PIO */
+-
+-
+-static inline int b43_pio_init(struct b43_wldev *dev)
+-{
+- return 0;
+-}
+-static inline void b43_pio_free(struct b43_wldev *dev)
+-{
+-}
+-static inline void b43_pio_stop(struct b43_wldev *dev)
+-{
+-}
+-static inline int b43_pio_tx(struct b43_wldev *dev,
+- struct sk_buff *skb)
+-{
+- return 0;
+-}
+-static inline void b43_pio_handle_txstatus(struct b43_wldev *dev,
+- const struct b43_txstatus *status)
+-{
+-}
+-static inline void b43_pio_get_tx_stats(struct b43_wldev *dev,
+- struct ieee80211_tx_queue_stats *stats)
+-{
+-}
+-static inline void b43_pio_rx(struct b43_pio_rxqueue *q)
+-{
+-}
+-static inline void b43_pio_tx_suspend(struct b43_wldev *dev)
+-{
+-}
+-static inline void b43_pio_tx_resume(struct b43_wldev *dev)
+-{
+-}
+-
+-#endif /* CONFIG_B43_PIO */
+ #endif /* B43_PIO_H_ */
--- /dev/null
+From 9e3bd9190800e8209b4a3e1d724c35f0738dcad2 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Fri, 26 Feb 2010 10:34:27 -0800
+Subject: b43: fall back gracefully to PIO mode after fatal DMA errors
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 9e3bd9190800e8209b4a3e1d724c35f0738dcad2 upstream.
+
+This makes the b43 driver just automatically fall back to PIO mode when
+DMA doesn't work.
+
+The driver already told the user to do it, so rather than have the user
+reload the module with a new flag, just make the driver do it
+automatically. We keep the message as an indication that something is
+wrong, but now just automatically fall back to the hopefully working PIO
+case.
+
+(Some post-2.6.33 merge fixups by Larry Finger <Larry.Finger@lwfinger.net>
+and yours truly... -- JWL)
+
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43/Kconfig | 19 +++++++++++++++++--
+ drivers/net/wireless/b43/b43.h | 7 +++++++
+ drivers/net/wireless/b43/main.c | 14 ++++++++------
+ 3 files changed, 32 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/wireless/b43/Kconfig
++++ b/drivers/net/wireless/b43/Kconfig
+@@ -3,7 +3,6 @@ config B43
+ depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
+ select SSB
+ select FW_LOADER
+- select SSB_BLOCKIO
+ ---help---
+ b43 is a driver for the Broadcom 43xx series wireless devices.
+
+@@ -79,6 +78,14 @@ config B43_SDIO
+
+ If unsure, say N.
+
++#Data transfers to the device via PIO. We want it as a fallback even
++# if we can do DMA.
++config B43_PIO
++ bool
++ depends on B43
++ select SSB_BLOCKIO
++ default y
++
+ config B43_NPHY
+ bool "Pre IEEE 802.11n support (BROKEN)"
+ depends on B43 && EXPERIMENTAL && BROKEN
+@@ -130,4 +137,12 @@ config B43_DEBUG
+ for production use.
+ Only say Y, if you are debugging a problem in the b43 driver sourcecode.
+
+-
++config B43_FORCE_PIO
++ bool "Force usage of PIO instead of DMA"
++ depends on B43 && B43_DEBUG
++ ---help---
++ This will disable DMA and always enable PIO instead.
++
++ Say N!
++ This is only for debugging the PIO engine code. You do
++ _NOT_ want to enable this.
+--- a/drivers/net/wireless/b43/b43.h
++++ b/drivers/net/wireless/b43/b43.h
+@@ -696,6 +696,7 @@ struct b43_wldev {
+ bool radio_hw_enable; /* saved state of radio hardware enabled state */
+ bool qos_enabled; /* TRUE, if QoS is used. */
+ bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
++ bool use_pio; /* TRUE if next init should use PIO */
+
+ /* PHY/Radio device. */
+ struct b43_phy phy;
+@@ -890,6 +891,12 @@ static inline bool b43_using_pio_transfe
+ return dev->__using_pio_transfers;
+ }
+
++#ifdef CONFIG_B43_FORCE_PIO
++# define B43_PIO_DEFAULT 1
++#else
++# define B43_PIO_DEFAULT 0
++#endif
++
+ /* Message printing */
+ void b43info(struct b43_wl *wl, const char *fmt, ...)
+ __attribute__ ((format(printf, 2, 3)));
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -102,9 +102,9 @@ int b43_modparam_verbose = B43_VERBOSITY
+ module_param_named(verbose, b43_modparam_verbose, int, 0644);
+ MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
+
+-static int modparam_pio;
+-module_param_named(pio, modparam_pio, int, 0444);
+-MODULE_PARM_DESC(pio, "enable(1) / disable(0) PIO mode");
++int b43_modparam_pio = B43_PIO_DEFAULT;
++module_param_named(pio, b43_modparam_pio, int, 0644);
++MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
+
+ static const struct ssb_device_id b43_ssb_tbl[] = {
+ SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
+@@ -1793,8 +1793,9 @@ static void b43_do_interrupt_thread(stru
+ dma_reason[4], dma_reason[5]);
+ b43err(dev->wl, "This device does not support DMA "
+ "on your system. Please use PIO instead.\n");
+- b43err(dev->wl, "Unload the b43 module and reload "
+- "with 'pio=1'\n");
++ /* Fall back to PIO transfers if we get fatal DMA errors! */
++ dev->use_pio = 1;
++ b43_controller_restart(dev, "DMA error");
+ return;
+ }
+ if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
+@@ -4361,7 +4362,7 @@ static int b43_wireless_core_init(struct
+
+ if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
+ (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
+- modparam_pio) {
++ dev->use_pio) {
+ dev->__using_pio_transfers = 1;
+ err = b43_pio_init(dev);
+ } else {
+@@ -4829,6 +4830,7 @@ static int b43_one_core_attach(struct ss
+ if (!wldev)
+ goto out;
+
++ wldev->use_pio = b43_modparam_pio;
+ wldev->dev = dev;
+ wldev->wl = wl;
+ b43_set_status(wldev, B43_STAT_UNINIT);
--- /dev/null
+From 214ac9a4ead6cb254451c09d9c8234a76693feb1 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Wed, 9 Dec 2009 13:25:56 -0600
+Subject: b43: Remove reset after fatal DMA error
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit 214ac9a4ead6cb254451c09d9c8234a76693feb1 upstream.
+
+As shown in Kernel Bugzilla #14761, doing a controller restart after a
+fatal DMA error does not accomplish anything other than consume the CPU
+on an affected system. Accordingly, substitute a meaningful message for
+the restart.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43/main.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -1788,7 +1788,10 @@ static void b43_do_interrupt_thread(stru
+ dma_reason[0], dma_reason[1],
+ dma_reason[2], dma_reason[3],
+ dma_reason[4], dma_reason[5]);
+- b43_controller_restart(dev, "DMA error");
++ b43err(dev->wl, "This device does not support DMA "
++ "on your system. Please use PIO instead.\n");
++ b43err(dev->wl, "CONFIG_B43_FORCE_PIO must be set in "
++ "your kernel configuration.\n");
+ return;
+ }
+ if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
--- /dev/null
+From 393764340beb595c1ad7dd2d2243c2b6551aaa71 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 2 Mar 2010 12:23:39 +0100
+Subject: i2c-i801: Add Intel Cougar Point device IDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 393764340beb595c1ad7dd2d2243c2b6551aaa71 upstream.
+
+Add the Intel Cougar Point (PCH) SMBus controller device IDs.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/i2c/busses/i2c-i801 | 3 ++-
+ drivers/i2c/busses/Kconfig | 5 +++--
+ drivers/i2c/busses/i2c-i801.c | 5 ++++-
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+--- a/Documentation/i2c/busses/i2c-i801
++++ b/Documentation/i2c/busses/i2c-i801
+@@ -15,7 +15,8 @@ Supported adapters:
+ * Intel 82801I (ICH9)
+ * Intel EP80579 (Tolapai)
+ * Intel 82801JI (ICH10)
+- * Intel PCH
++ * Intel 3400/5 Series (PCH)
++ * Intel Cougar Point (PCH)
+ Datasheets: Publicly available at the Intel website
+
+ Authors:
+--- a/drivers/i2c/busses/Kconfig
++++ b/drivers/i2c/busses/Kconfig
+@@ -77,7 +77,7 @@ config I2C_AMD8111
+ will be called i2c-amd8111.
+
+ config I2C_I801
+- tristate "Intel 82801 (ICH)"
++ tristate "Intel 82801 (ICH/PCH)"
+ depends on PCI
+ help
+ If you say yes to this option, support will be included for the Intel
+@@ -97,7 +97,8 @@ config I2C_I801
+ ICH9
+ Tolapai
+ ICH10
+- PCH
++ 3400/5 Series (PCH)
++ Cougar Point (PCH)
+
+ This driver can also be built as a module. If so, the module
+ will be called i2c-i801.
+--- a/drivers/i2c/busses/i2c-i801.c
++++ b/drivers/i2c/busses/i2c-i801.c
+@@ -41,7 +41,8 @@
+ Tolapai 0x5032 32 hard yes yes yes
+ ICH10 0x3a30 32 hard yes yes yes
+ ICH10 0x3a60 32 hard yes yes yes
+- PCH 0x3b30 32 hard yes yes yes
++ 3400/5 Series (PCH) 0x3b30 32 hard yes yes yes
++ Cougar Point (PCH) 0x1c22 32 hard yes yes yes
+
+ Features supported by this driver:
+ Software PEC no
+@@ -580,6 +581,7 @@ static struct pci_device_id i801_ids[] =
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_4) },
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_5) },
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PCH_SMBUS) },
++ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CPT_SMBUS) },
+ { 0, }
+ };
+
+@@ -709,6 +711,7 @@ static int __devinit i801_probe(struct p
+ case PCI_DEVICE_ID_INTEL_ICH10_4:
+ case PCI_DEVICE_ID_INTEL_ICH10_5:
+ case PCI_DEVICE_ID_INTEL_PCH_SMBUS:
++ case PCI_DEVICE_ID_INTEL_CPT_SMBUS:
+ i801_features |= FEATURE_I2C_BLOCK_READ;
+ /* fall through */
+ case PCI_DEVICE_ID_INTEL_82801DB_3:
--- /dev/null
+From f0dc117abdfa9a0e96c3d013d836460ef3cd08c7 Mon Sep 17 00:00:00 2001
+From: Eli Cohen <eli@mellanox.co.il>
+Date: Wed, 3 Mar 2010 12:27:52 +0000
+Subject: IPoIB: Fix TX queue lockup with mixed UD/CM traffic
+
+From: Eli Cohen <eli@mellanox.co.il>
+
+commit f0dc117abdfa9a0e96c3d013d836460ef3cd08c7 upstream.
+
+The IPoIB UD QP reports send completions to priv->send_cq, which is
+usually left unarmed; it only gets armed when the number of
+outstanding send requests reaches the size of the TX queue. This
+arming is done only in the send path for the UD QP. However, when
+sending CM packets, the net queue may be stopped for the same reasons
+but no measures are taken to recover the UD path from a lockup.
+
+Consider this scenario: a host sends high rate of both CM and UD
+packets, with a TX queue length of N. If at some time the number of
+outstanding UD packets is more than N/2 and the overall outstanding
+packets is N-1, and CM sends a packet (making the number of
+outstanding sends equal N), the TX queue will be stopped. When all
+the CM packets complete, the number of outstanding packets will still
+be higher than N/2 so the TX queue will not be restarted.
+
+Fix this by calling ib_req_notify_cq() when the queue is stopped in
+the CM path.
+
+Signed-off-by: Eli Cohen <eli@mellanox.co.il>
+Signed-off-by: Roland Dreier <rolandd@cisco.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
++++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+@@ -752,6 +752,8 @@ void ipoib_cm_send(struct net_device *de
+ if (++priv->tx_outstanding == ipoib_sendq_size) {
+ ipoib_dbg(priv, "TX ring 0x%x full, stopping kernel net queue\n",
+ tx->qp->qp_num);
++ if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP))
++ ipoib_warn(priv, "request notify on send CQ failed\n");
+ netif_stop_queue(dev);
+ }
+ }
--- /dev/null
+From bd1f46deba615971a58193afd0202878cadf19a7 Mon Sep 17 00:00:00 2001
+From: Andrew Patterson <andrew.patterson@hp.com>
+Date: Fri, 22 Jan 2010 14:06:53 -0700
+Subject: PCI: fix nested spinlock hang in aer_inject
+
+From: Andrew Patterson <andrew.patterson@hp.com>
+
+commit bd1f46deba615971a58193afd0202878cadf19a7 upstream.
+
+The aer_inject module hangs in aer_inject() when checking the device's
+error masks. The hang is due to a recursive use of the aer_inject lock.
+The aer_inject() routine grabs the lock while processing the error and then
+calls pci_read_config_dword to read the masks. The pci_read_config_dword
+routine is earlier overridden by pci_read_aer, which among other things,
+grabs the aer_inject lock.
+
+Fixed by moving the pci_read_config_dword calls to read the masks to before
+the lock is taken.
+
+Acked-by: Huang Ying <ying.huang@intel.com>
+Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pcie/aer/aer_inject.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/pci/pcie/aer/aer_inject.c
++++ b/drivers/pci/pcie/aer/aer_inject.c
+@@ -302,7 +302,7 @@ static int aer_inject(struct aer_error_i
+ unsigned long flags;
+ unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn);
+ int pos_cap_err, rp_pos_cap_err;
+- u32 sever, mask;
++ u32 sever, cor_mask, uncor_mask;
+ int ret = 0;
+
+ dev = pci_get_bus_and_slot(einj->bus, devfn);
+@@ -320,6 +320,9 @@ static int aer_inject(struct aer_error_i
+ goto out_put;
+ }
+ pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever);
++ pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &cor_mask);
++ pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK,
++ &uncor_mask);
+
+ rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR);
+ if (!rp_pos_cap_err) {
+@@ -354,17 +357,14 @@ static int aer_inject(struct aer_error_i
+ err->header_log2 = einj->header_log2;
+ err->header_log3 = einj->header_log3;
+
+- pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &mask);
+- if (einj->cor_status && !(einj->cor_status & ~mask)) {
++ if (einj->cor_status && !(einj->cor_status & ~cor_mask)) {
+ ret = -EINVAL;
+ printk(KERN_WARNING "The correctable error(s) is masked "
+ "by device\n");
+ spin_unlock_irqrestore(&inject_lock, flags);
+ goto out_put;
+ }
+-
+- pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK, &mask);
+- if (einj->uncor_status && !(einj->uncor_status & ~mask)) {
++ if (einj->uncor_status && !(einj->uncor_status & ~uncor_mask)) {
+ ret = -EINVAL;
+ printk(KERN_WARNING "The uncorrectable error(s) is masked "
+ "by device\n");
--- /dev/null
+From ded1d8f29b4d315a2093cafc3ee17ac870a87972 Mon Sep 17 00:00:00 2001
+From: Paul Mundt <lethal@linux-sh.org>
+Date: Thu, 11 Mar 2010 14:08:33 -0800
+Subject: PCI: kill off pci_register_set_vga_state() symbol export.
+
+From: Paul Mundt <lethal@linux-sh.org>
+
+commit ded1d8f29b4d315a2093cafc3ee17ac870a87972 upstream.
+
+When pci_register_set_vga_state() was made __init, the EXPORT_SYMBOL() was
+retained, which now leaves us with a section mismatch.
+
+Signed-off-by: Paul Mundt <lethal@linux-sh.org>
+Cc: Mike Travis <travis@sgi.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pci.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/pci/pci.c
++++ b/drivers/pci/pci.c
+@@ -2794,7 +2794,6 @@ EXPORT_SYMBOL(pcim_pin_device);
+ EXPORT_SYMBOL(pci_disable_device);
+ EXPORT_SYMBOL(pci_find_capability);
+ EXPORT_SYMBOL(pci_bus_find_capability);
+-EXPORT_SYMBOL(pci_register_set_vga_state);
+ EXPORT_SYMBOL(pci_release_regions);
+ EXPORT_SYMBOL(pci_request_regions);
+ EXPORT_SYMBOL(pci_request_regions_exclusive);
--- /dev/null
+From 95a8b6efc5d07103583f706c8a5889437d537939 Mon Sep 17 00:00:00 2001
+From: Mike Travis <travis@sgi.com>
+Date: Tue, 2 Feb 2010 14:38:13 -0800
+Subject: pci: Update pci_set_vga_state() to call arch functions
+
+From: Mike Travis <travis@sgi.com>
+
+commit 95a8b6efc5d07103583f706c8a5889437d537939 upstream.
+
+Update pci_set_vga_state to call arch dependent functions to enable Legacy
+VGA I/O transactions to be redirected to correct target.
+
+[akpm@linux-foundation.org: make pci_register_set_vga_state() __init]
+Signed-off-by: Mike Travis <travis@sgi.com>
+LKML-Reference: <201002022238.o12McE1J018723@imap1.linux-foundation.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Robin Holt <holt@sgi.com>
+Cc: Jack Steiner <steiner@sgi.com>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: David Airlie <airlied@linux.ie>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pci.c | 25 ++++++++++++++++++++++++-
+ include/linux/pci.h | 5 +++++
+ 2 files changed, 29 insertions(+), 1 deletion(-)
+
+--- a/drivers/pci/pci.c
++++ b/drivers/pci/pci.c
+@@ -2541,6 +2541,23 @@ int pci_resource_bar(struct pci_dev *dev
+ return 0;
+ }
+
++/* Some architectures require additional programming to enable VGA */
++static arch_set_vga_state_t arch_set_vga_state;
++
++void __init pci_register_set_vga_state(arch_set_vga_state_t func)
++{
++ arch_set_vga_state = func; /* NULL disables */
++}
++
++static int pci_set_vga_state_arch(struct pci_dev *dev, bool decode,
++ unsigned int command_bits, bool change_bridge)
++{
++ if (arch_set_vga_state)
++ return arch_set_vga_state(dev, decode, command_bits,
++ change_bridge);
++ return 0;
++}
++
+ /**
+ * pci_set_vga_state - set VGA decode state on device and parents if requested
+ * @dev: the PCI device
+@@ -2554,9 +2571,15 @@ int pci_set_vga_state(struct pci_dev *de
+ struct pci_bus *bus;
+ struct pci_dev *bridge;
+ u16 cmd;
++ int rc;
+
+ WARN_ON(command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY));
+
++ /* ARCH specific VGA enables */
++ rc = pci_set_vga_state_arch(dev, decode, command_bits, change_bridge);
++ if (rc)
++ return rc;
++
+ pci_read_config_word(dev, PCI_COMMAND, &cmd);
+ if (decode == true)
+ cmd |= command_bits;
+@@ -2771,6 +2794,7 @@ EXPORT_SYMBOL(pcim_pin_device);
+ EXPORT_SYMBOL(pci_disable_device);
+ EXPORT_SYMBOL(pci_find_capability);
+ EXPORT_SYMBOL(pci_bus_find_capability);
++EXPORT_SYMBOL(pci_register_set_vga_state);
+ EXPORT_SYMBOL(pci_release_regions);
+ EXPORT_SYMBOL(pci_request_regions);
+ EXPORT_SYMBOL(pci_request_regions_exclusive);
+@@ -2803,4 +2827,3 @@ EXPORT_SYMBOL(pci_target_state);
+ EXPORT_SYMBOL(pci_prepare_to_sleep);
+ EXPORT_SYMBOL(pci_back_from_sleep);
+ EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state);
+-
+--- a/include/linux/pci.h
++++ b/include/linux/pci.h
+@@ -945,6 +945,11 @@ static inline int pci_proc_domain(struct
+ }
+ #endif /* CONFIG_PCI_DOMAINS */
+
++/* some architectures require additional setup to direct VGA traffic */
++typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode,
++ unsigned int command_bits, bool change_bridge);
++extern void pci_register_set_vga_state(arch_set_vga_state_t func);
++
+ #else /* CONFIG_PCI is not enabled */
+
+ /*
pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch
vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch
scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch
+pci-update-pci_set_vga_state-to-call-arch-functions.patch
+pci-kill-off-pci_register_set_vga_state-symbol-export.patch
+pci-fix-nested-spinlock-hang-in-aer_inject.patch
+ipoib-fix-tx-queue-lockup-with-mixed-ud-cm-traffic.patch
+x86-pci-irq-and-pci_ids-patch-for-intel-cougar-point-deviceids.patch
+alsa-hda_intel-alsa-hd-audio-patch-for-intel-cougar-point-deviceids.patch
+alsa-hda-enable-snoop-for-intel-cougar-point.patch
+ata_piix-ide-mode-sata-patch-for-intel-cougar-point-deviceids.patch
+ahci-ahci-and-raid-mode-sata-patch-for-intel-cougar-point-deviceids.patch
+i2c-i801-add-intel-cougar-point-device-ids.patch
+b43-remove-reset-after-fatal-dma-error.patch
+b43-allow-pio-mode-to-be-selected-at-module-load.patch
+b43-fall-back-gracefully-to-pio-mode-after-fatal-dma-errors.patch
+alsa-hda-add-position_fix-quirk-for-biostar-mobo.patch
--- /dev/null
+From 93da6202264ce1256b04db8008a43882ae62d060 Mon Sep 17 00:00:00 2001
+From: Seth Heasley <seth.heasley@intel.com>
+Date: Tue, 12 Jan 2010 16:56:37 -0800
+Subject: x86/PCI: irq and pci_ids patch for Intel Cougar Point DeviceIDs
+
+From: Seth Heasley <seth.heasley@intel.com>
+
+commit 93da6202264ce1256b04db8008a43882ae62d060 upstream.
+
+This patch adds the Intel Cougar Point (PCH) LPC and SMBus Controller DeviceIDs.
+
+Signed-off-by: Seth Heasley <seth.heasley@intel.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: maximilian attems <max@stro.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/pci/irq.c | 2 ++
+ include/linux/pci_ids.h | 3 +++
+ 2 files changed, 5 insertions(+)
+
+--- a/arch/x86/pci/irq.c
++++ b/arch/x86/pci/irq.c
+@@ -590,6 +590,8 @@ static __init int intel_router_probe(str
+ case PCI_DEVICE_ID_INTEL_ICH10_1:
+ case PCI_DEVICE_ID_INTEL_ICH10_2:
+ case PCI_DEVICE_ID_INTEL_ICH10_3:
++ case PCI_DEVICE_ID_INTEL_CPT_LPC1:
++ case PCI_DEVICE_ID_INTEL_CPT_LPC2:
+ r->name = "PIIX/ICH";
+ r->get = pirq_piix_get;
+ r->set = pirq_piix_set;
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
+@@ -2412,6 +2412,9 @@
+ #define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21
+ #define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30
+ #define PCI_DEVICE_ID_INTEL_IOAT 0x1a38
++#define PCI_DEVICE_ID_INTEL_CPT_SMBUS 0x1c22
++#define PCI_DEVICE_ID_INTEL_CPT_LPC1 0x1c42
++#define PCI_DEVICE_ID_INTEL_CPT_LPC2 0x1c43
+ #define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410
+ #define PCI_DEVICE_ID_INTEL_82801AA_1 0x2411
+ #define PCI_DEVICE_ID_INTEL_82801AA_3 0x2413