public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add quirk to set AHCI mode on ICH boards
@ 2007-11-09  2:02 Riki Oktarianto
  2007-11-09  2:31 ` Jeff Garzik
  0 siblings, 1 reply; 29+ messages in thread
From: Riki Oktarianto @ 2007-11-09  2:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Jeff Garzik, Greg Kroah-Hartman

Some BIOSen map AHCI ABAR but lock the SATA controller to IDE mode.
This patch add quirk to set AHCI mode on ICH board with such case.

Tested on Macbook2,1 (ICH7M)

-- 
Riki Oktarianto

--- linux-2.6.24-rc2.orig/drivers/pci/quirks.c
+++ linux-2.6.24-rc2/drivers/pci/quirks.c
@@ -466,6 +466,38 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_ICH8_2, quirk_ich6_lpc_acpi );
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_ICH8_3, quirk_ich6_lpc_acpi );
 
+static void __devinit quirk_ich_sata(struct pci_dev *dev)
+{
+	u32 ahci_bar;
+
+	pci_read_config_dword(dev, 0x24, &ahci_bar);
+	if (!ahci_bar) {
+		return;
+	}
+
+	if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
+		pci_write_config_byte(dev, PCI_CLASS_PROG, 0x01);
+		pci_write_config_byte(dev, PCI_CLASS_DEVICE, 0x06);
+	}
+	dev->class = PCI_CLASS_STORAGE_SATA_AHCI;
+	printk (KERN_INFO "PCI_CLASS_STORAGE_SATA_AHCI set for %s\n",
+		pci_name(dev));
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2652, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2653, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27c0, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27c4, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2680, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2820, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2825, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2828, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2920, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2921, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2926, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2928, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x292d, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x292e, quirk_ich_sata);
+
 /*
  * VIA ACPI: One IO region pointed to by longword at
  *	0x48 or 0x20 (256 bytes of ACPI registers)

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2007-11-14 19:10 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-09  2:02 [PATCH] Add quirk to set AHCI mode on ICH boards Riki Oktarianto
2007-11-09  2:31 ` Jeff Garzik
2007-11-09  3:29   ` Mark Lord
2007-11-09  3:46     ` Jeff Garzik
2007-11-09  4:44       ` Mark Lord
2007-11-09  4:57         ` Jeff Garzik
2007-11-09 15:02           ` Arjan van de Ven
2007-11-09 12:04       ` Alan Cox
2007-11-09 14:49         ` Török Edwin
2007-11-09 22:38           ` Riki Oktarianto
2007-11-09 23:32         ` Matthias Schniedermeyer
2007-11-10  3:08           ` Jeff Garzik
2007-11-10 11:20             ` Matthias Schniedermeyer
2007-11-10 11:26             ` Matthias Schniedermeyer
2007-11-10 18:01           ` Mark Lord
2007-11-10 18:38             ` Matthias Schniedermeyer
2007-11-11 14:05               ` Thorsten Leemhuis
2007-11-11 18:24                 ` Matthias Schniedermeyer
2007-11-10  3:05         ` Jeff Garzik
2007-11-10  3:54           ` Theodore Tso
2007-11-10  3:57             ` Jeff Garzik
2007-11-10 18:37           ` Allen Martin
2007-11-10 19:04             ` Jeff Garzik
2007-11-13  7:27               ` Allen Martin
2007-11-13 15:27                 ` Alan Cox
2007-11-14 18:35                   ` Allen Martin
2007-11-14 18:46                     ` Mark Lord
2007-11-14 18:58                       ` Greg KH
2007-11-09 12:45   ` Riki Oktarianto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox