[patch] getting back udma3 on BX chipset for 2.4.27

From: Artyom Tarasenko
Date: Wed Aug 25 2004 - 09:21:35 EST


Hi,

some time between 2.4.18 and 2.4.22 the support of udma3 (aka UDMA-44) was lost. Here is a trivial patch to get it back (if someone is interested I can make it cleaner). Having IBM-DTLA-307030 and SAMSUNG SV1604N drives I got significant advantage of using udma3 (23M/s vs 30M/s).

Regards,
Artyom Tarasenko.

--- drivers/ide/ide-lib.orig.c Wed Aug 25 14:47:42 2004
+++ drivers/ide/ide-lib.c Wed Aug 25 14:59:29 2004
@@ -107,6 +107,10 @@
if ((id->dma_ultra & 0x0008) &&
(id->dma_ultra & hwif->ultra_mask))
{ speed = XFER_UDMA_3; break; }
+ case 0x05:
+ if ((id->dma_ultra & 0x0008) &&
+ (id->dma_ultra & hwif->ultra_mask))
+ { speed = XFER_UDMA_3; break; }
case 0x01:
if ((id->dma_ultra & 0x0004) &&
(id->dma_ultra & hwif->ultra_mask))
@@ -161,13 +165,13 @@
#ifdef CONFIG_BLK_DEV_IDEDMA
static u8 speed_max[] = {
XFER_MW_DMA_2, XFER_UDMA_2, XFER_UDMA_4,
- XFER_UDMA_5, XFER_UDMA_6
+ XFER_UDMA_5, XFER_UDMA_6,XFER_UDMA_3
};

// printk("%s: mode 0x%02x, speed 0x%02x\n", __FUNCTION__, mode, speed);

/* So that we remember to update this if new modes appear */
- if (mode > 4)
+ if (mode > 5)
BUG();
return min(speed, speed_max[mode]);
#else /* !CONFIG_BLK_DEV_IDEDMA */

--- drivers/ide/pci/piix.orig.c Sun Aug 8 01:26:04 2004
+++ drivers/ide/pci/piix.c Wed Aug 25 16:15:49 2004
@@ -301,8 +301,11 @@
case PCI_DEVICE_ID_INTEL_82372FB_1:
mode = 2;
break;
- /* UDMA 33 capable */
+ /* UDMA 44 capable */
case PCI_DEVICE_ID_INTEL_82371AB:
+ mode = 5;
+ break;
+ /* UDMA 33 capable */
case PCI_DEVICE_ID_INTEL_82443MX_1:
case PCI_DEVICE_ID_INTEL_82451NX:
case PCI_DEVICE_ID_INTEL_82801AB_1:

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/