--- linux/drivers/ide/pci/generic.h	Mon Aug 25 13:44:41 2003
+++ linux-2.4.22.2/drivers/ide/pci/generic.h	Mon Sep 22 20:36:26 2003
@@ -140,6 +140,19 @@
 		.enablebits	= {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
 		.bootable	= ON_BOARD,
 		.extra		= 0,
+	},{	/* 10 */
+		.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,
--- linux/drivers/ide/pci/generic.c	Mon Aug 25 13:44:41 2003
+++ linux-2.4.22.2/drivers/ide/pci/generic.c	Mon Sep 22 20:42:48 2003
@@ -65,6 +65,8 @@
 	hwif->ultra_mask = 0x7f;
 	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;
@@ -141,6 +143,7 @@
 	{ PCI_VENDOR_ID_VIA,    PCI_DEVICE_ID_VIA_82C561,          PCI_ANY_ID, PCI_ANY_ID, 0, 0, 7},
 	{ PCI_VENDOR_ID_OPTI,   PCI_DEVICE_ID_OPTI_82C558,         PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8},
 	{ PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_PICCOLO,	   PCI_ANY_ID, PCI_ANY_ID, 0, 0, 9},
+	{ PCI_VENDOR_ID_VIA,    PCI_DEVICE_ID_VIA_610,             PCI_ANY_ID, PCI_ANY_ID, 0, 0, 10},
 	{ 0, },
 };
 
--- linux/include/linux/pci_ids.h	Mon Aug 25 13:44:44 2003
+++ linux-2.4.22.2/include/linux/pci_ids.h	Mon Sep 22 20:36:13 2003
@@ -1085,6 +1085,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
