VIA VT610 IDE support for 2.4.28 (trivial)

From: Mathias Kretschmer
Date: Tue Nov 23 2004 - 02:25:49 EST


hi,

I found an older version of this patch (against 2.4.22) on some website. After a little bit of editing it applied cleanly to 2.4.27 (and now 2.4.28). It works fine for me on a ASUS P4P800-Deluxe with 4x 300GB disks.

Maybe someone finds this patch helpful. Any reason why the original patch did not make it into the kernel ?

-Mathias diff -u -r -N linux-2.4.28/drivers/ide/pci/generic.c linux-2.4.28-vt610/drivers/ide/pci/generic.c
--- linux-2.4.28/drivers/ide/pci/generic.c 2004-08-07 16:26:04.000000000 -0700
+++ linux-2.4.28-vt610/drivers/ide/pci/generic.c 2004-11-22 21:50:25.000000000 -0800
@@ -66,6 +66,9 @@
hwif->mwdma_mask = 0x07;
hwif->swdma_mask = 0x07;

+ if (hwif->pci_dev->device == PCI_DEVICE_ID_VIA_610)
+ hwif->udma_four = 1; /* mj */
+
if (!noautodma)
hwif->autodma = 1;
hwif->drives[0].autodma = hwif->autodma;
@@ -143,6 +146,7 @@
{ PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_PICCOLO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 9},
{ PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_PICCOLO_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 10},
{ PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_PICCOLO_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11},
+ { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_610, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12},
{ 0, },
};

diff -u -r -N linux-2.4.28/drivers/ide/pci/generic.h linux-2.4.28-vt610/drivers/ide/pci/generic.h
--- linux-2.4.28/drivers/ide/pci/generic.h 2004-08-07 16:26:04.000000000 -0700
+++ linux-2.4.28-vt610/drivers/ide/pci/generic.h 2004-11-22 21:50:13.000000000 -0800
@@ -157,6 +157,19 @@
.channels = 2,
.autodma = NOAUTODMA,
.bootable = ON_BOARD,
+ },{ /* 12 */
+ .vendor = PCI_VENDOR_ID_VIA,
+ .device = PCI_DEVICE_ID_VIA_610,
+ .name = "VIA_610",
+ .init_chipset = init_chipset_generic,
+ .init_iops = NULL,
+ .init_hwif = init_hwif_generic,
+ .init_dma = init_dma_generic,
+ .channels = 2,
+ .autodma = AUTODMA,
+ .enablebits = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
+ .bootable = ON_BOARD,
+ .extra = 0,
},{
.vendor = 0,
.device = 0,
diff -u -r -N linux-2.4.28/include/linux/pci_ids.h linux-2.4.28-vt610/include/linux/pci_ids.h
--- linux-2.4.28/include/linux/pci_ids.h 2004-11-17 03:54:22.000000000 -0800
+++ linux-2.4.28-vt610/include/linux/pci_ids.h 2004-11-22 21:54:09.000000000 -0800
@@ -1123,6 +1123,7 @@
#define PCI_DEVICE_ID_VIA_8233A 0x3147
#define PCI_DEVICE_ID_VIA_P4M266 0x3148
#define PCI_DEVICE_ID_VIA_8237_SATA 0x3149
+#define PCI_DEVICE_ID_VIA_610 0x3164
#define PCI_DEVICE_ID_VIA_P4X333 0x3168
#define PCI_DEVICE_ID_VIA_8235 0x3177
#define PCI_DEVICE_ID_VIA_8377_0 0x3189