Skip to contentSkip to conversation

Support for DMA on ICH6M / piix.

PATCH New Uwe Hermann 1 participant 1 message Mar 24, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Support for DMA on ICH6M / piix.

Hi,

the disk drive in my laptop cannot enable DMA with "hdparm -d1 /dev/hda", unless I use a kernel with the supplied patch.

The patch was originally written by Erik Slagter for 2.6.12 (see http://marc.theaimsgroup.com/?l=linux-ide&m=112030174904055&w=2) and I have successfully used it until 2.6.14. I want to upgrade to 2.6.16 ASAP, so I adapted the patch for vanilla 2.6.16.

It works for me, but you might want to check whether it messes up things...

More info on my hardware:

$ dmesg | grep SAMSUNG
hda: SAMSUNG MP0804H, ATA DISK drive
$ lspci | grep ICH6M
0000:00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03)

The patch:

drivers/ide/pci/piix.c +4 -0
diff -Naurp linux-2.6.16.orig/drivers/ide/pci/piix.c linux-2.6.16/drivers/ide/pci/piix.c
@@ -132,6 +132,7 @@ static u8 piix_ratemask (ide_drive_t *dr
 		case PCI_DEVICE_ID_INTEL_82801DB_11:
 		case PCI_DEVICE_ID_INTEL_82801EB_11:
 		case PCI_DEVICE_ID_INTEL_ESB_2:
+		case PCI_DEVICE_ID_INTEL_ICH6_5:
 		case PCI_DEVICE_ID_INTEL_ICH6_19:
 		case PCI_DEVICE_ID_INTEL_ICH7_21:
 		case PCI_DEVICE_ID_INTEL_ESB2_18:
@@ -447,6 +448,7 @@ static unsigned int __devinit init_chips
 		case PCI_DEVICE_ID_INTEL_82801EB_11:
 		case PCI_DEVICE_ID_INTEL_82801E_11:
 		case PCI_DEVICE_ID_INTEL_ESB_2:
+		case PCI_DEVICE_ID_INTEL_ICH6_5:
 		case PCI_DEVICE_ID_INTEL_ICH6_19:
 		case PCI_DEVICE_ID_INTEL_ICH7_21:
 		case PCI_DEVICE_ID_INTEL_ESB2_18:
@@ -578,6 +580,7 @@ static ide_pci_device_t piix_pci_info[] 
 	/* 22 */ DECLARE_PIIX_DEV("ICH4"),
 	/* 23 */ DECLARE_PIIX_DEV("ESB2"),
 	/* 24 */ DECLARE_PIIX_DEV("ICH8M"),
+	/* 25 */ DECLARE_PIIX_DEV("ICH6M"),
 };
 
 /**
@@ -655,6 +658,7 @@ static struct pci_device_id piix_pci_tbl
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 22},
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_18, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 23},
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 24},
+	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 25},
 	{ 0, },
 };
 MODULE_DEVICE_TABLE(pci, piix_pci_tbl);
include/linux/pci_ids.h +1 -0
diff -Naurp linux-2.6.16.orig/include/linux/pci_ids.h linux-2.6.16/include/linux/pci_ids.h
@@ -2092,6 +2092,7 @@
 #define PCI_DEVICE_ID_INTEL_ICH6_0	0x2640
 #define PCI_DEVICE_ID_INTEL_ICH6_1	0x2641
 #define PCI_DEVICE_ID_INTEL_ICH6_2	0x2642
+#define PCI_DEVICE_ID_INTEL_ICH6_5	0x2653
 #define PCI_DEVICE_ID_INTEL_ICH6_16	0x266a
 #define PCI_DEVICE_ID_INTEL_ICH6_17	0x266d
 #define PCI_DEVICE_ID_INTEL_ICH6_18	0x266e

HTH, Uwe.

Signature · 4 lines
Uwe Hermann 
http://www.hermann-uwe.de
http://www.it-services-uh.de  | http://www.crazy-hacks.org 
http://www.holsham-traders.de | http://www.unmaintained-free-software.org