summaryrefslogtreecommitdiff
path: root/debian/patches/13_ide_dma.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/13_ide_dma.patch')
-rw-r--r--debian/patches/13_ide_dma.patch127
1 files changed, 66 insertions, 61 deletions
diff --git a/debian/patches/13_ide_dma.patch b/debian/patches/13_ide_dma.patch
index 2fae496..412fdf9 100644
--- a/debian/patches/13_ide_dma.patch
+++ b/debian/patches/13_ide_dma.patch
@@ -6,10 +6,11 @@ supporting hardware.
2004-09-17 Sergio Lopez <koro@sinrega.org>
-diff -Naur i386.orig/linux/configure.ac i386/linux/configure.ac
---- i386.orig/linux/configure.ac 2004-09-17 01:03:19.000000000 +0200
-+++ i386/linux/configure.ac 2004-09-17 01:01:49.000000000 +0200
-@@ -123,6 +123,11 @@
+Index: i386/linux/configure.ac
+===================================================================
+--- i386/linux/configure.ac.orig 2006-08-26 20:23:11.000000000 +0300
++++ i386/linux/configure.ac 2006-08-26 20:23:17.000000000 +0300
+@@ -128,6 +128,11 @@
AC_DRIVER([ide], [CONFIG_BLK_DEV_IDE], [ \
cmd640.o ide-cd.o ide.o rz1000.o triton.o])
@@ -21,9 +22,10 @@ diff -Naur i386.orig/linux/configure.ac i386/linux/configure.ac
dnl SCSI Disk controllers
-diff -dur linux.orig/dev/drivers/block/ide.c linux/dev/drivers/block/ide.c
---- linux.orig/dev/drivers/block/ide.c 2001-06-28 10:55:02.000000000 +0200
-+++ linux/dev/drivers/block/ide.c 2004-09-16 21:30:40.000000000 +0200
+Index: linux/dev/drivers/block/ide.c
+===================================================================
+--- linux/dev/drivers/block/ide.c.orig 2006-08-26 20:19:09.000000000 +0300
++++ linux/dev/drivers/block/ide.c 2006-08-26 20:23:17.000000000 +0300
@@ -3594,9 +3594,6 @@
hwif->ctl_port = io[tmp + 1] + 2;
hwif->noprobe = 0;
@@ -55,9 +57,10 @@ diff -dur linux.orig/dev/drivers/block/ide.c linux/dev/drivers/block/ide.c
probe_for_hwifs ();
/*
-diff -dur linux.orig/src/drivers/block/ide.h linux/src/drivers/block/ide.h
---- linux.orig/src/drivers/block/ide.h 1999-04-26 07:51:39.000000000 +0200
-+++ linux/src/drivers/block/ide.h 2004-08-15 16:29:29.000000000 +0200
+Index: linux/src/drivers/block/ide.h
+===================================================================
+--- linux/src/drivers/block/ide.h.orig 2006-08-26 20:19:09.000000000 +0300
++++ linux/src/drivers/block/ide.h 2006-08-26 20:23:17.000000000 +0300
@@ -429,7 +429,8 @@
typedef enum { ide_unknown, ide_generic, ide_triton,
ide_cmd640, ide_dtc2278, ide_ali14xx,
@@ -68,9 +71,10 @@ diff -dur linux.orig/src/drivers/block/ide.h linux/src/drivers/block/ide.h
hwif_chipset_t;
typedef struct hwif_s {
-diff -dur linux.orig/src/drivers/block/triton.c linux/src/drivers/block/triton.c
---- linux.orig/src/drivers/block/triton.c 1999-04-26 07:51:41.000000000 +0200
-+++ linux/src/drivers/block/triton.c 2004-09-16 20:39:52.000000000 +0200
+Index: linux/src/drivers/block/triton.c
+===================================================================
+--- linux/src/drivers/block/triton.c.orig 2006-08-26 20:19:09.000000000 +0300
++++ linux/src/drivers/block/triton.c 2006-08-26 20:23:17.000000000 +0300
@@ -1,107 +1,20 @@
/*
* linux/drivers/block/triton.c Version 1.13 Aug 12, 1996
@@ -817,9 +821,6 @@ diff -dur linux.orig/src/drivers/block/triton.c linux/src/drivers/block/triton.c
- if (hwif->io_base == 0x1f0) {
- s_clks = ~stime >> 6;
- r_clks = ~stime >> 4;
-- } else {
-- s_clks = ~stime >> 2;
-- r_clks = ~stime;
+ s_clks = ((~time >> 12) & 3) + 2;
+ r_clks = ((~time >> 8) & 3) + 1;
+ printk(" %s timing: (0x%04x) sample_CLKs=%d, recovery_CLKs=%d\n",
@@ -839,19 +840,11 @@ diff -dur linux.orig/src/drivers/block/triton.c linux/src/drivers/block/triton.c
+ r_clks = (r_clks & 3) + 1;
+ printk(" slave: sample_CLKs=%d, recovery_CLKs=%d\n",
+ s_clks, r_clks);
- }
-- s_clks = (s_clks & 3) + 2;
-- r_clks = (r_clks & 3) + 1;
-- printk(" slave: sample_CLKs=%d, recovery_CLKs=%d\n",
-- s_clks, r_clks);
- }
-- }
-- print_triton_drive_flags (0, time & 0xf);
-- print_triton_drive_flags (1, (time >> 4) & 0xf);
++ }
++ }
+ print_triton_drive_flags (0, time & 0xf);
+ print_triton_drive_flags (1, (time >> 4) & 0xf);
- #endif /* DISPLAY_TRITON_TIMINGS */
-- }
++#endif /* DISPLAY_TRITON_TIMINGS */
+ } else if (vendor == PCI_VENDOR_ID_SI) {
+ pass_count++;
+ if (hwif->io_base == 0x1f0) {
@@ -901,9 +894,7 @@ diff -dur linux.orig/src/drivers/block/triton.c linux/src/drivers/block/triton.c
+ byte ideic, inmir;
+ byte irq_routing_table[] = { -1, 9, 3, 10, 4, 5, 7, 6,
+ 1, 11, 0, 12, 0, 14, 0, 15 };
-
--quit: if (rc) printk("ide: pcibios access failed - %s\n", pcibios_strerror(rc));
--}
++
+ if (bridgeset) {
+ pcibios_read_config_byte(bridgebus, bridgefn, 0x58, &ideic);
+ ideic = ideic & 0x03;
@@ -954,7 +945,9 @@ diff -dur linux.orig/src/drivers/block/triton.c linux/src/drivers/block/triton.c
+ } else if (hpt34x_flag) {
+ hwif->io_base = channel ? (bmiba + 0x28) : (bmiba + 0x20);
+ hwif->ctl_port = channel ? (bmiba + 0x3e) : (bmiba + 0x36);
-+ } else {
+ } else {
+- s_clks = ~stime >> 2;
+- r_clks = ~stime;
+ goto io_temps;
+ }
+ } else {
@@ -965,31 +958,11 @@ diff -dur linux.orig/src/drivers/block/triton.c linux/src/drivers/block/triton.c
+ }
+ hwif->irq = irq;
+ hwif->noprobe = 0;
-
--void ide_init_promise (byte bus, byte fn, ide_hwif_t *hwif0, ide_hwif_t *hwif1, unsigned short dma)
--{
-- int rc;
-- unsigned short pcicmd;
-- unsigned int bmiba = 0;
++
+ if (device == PCI_DEVICE_ID_ARTOP_ATP850UF) {
+ hwif->serialized = 1;
+ }
-
-- printk("ide: Enabling DMA for Promise Technology IDE Ultra-DMA 33 on PCI bus %d function %d, port 0x%04x\n", bus, fn, dma);
-- if ((rc = pcibios_read_config_word(bus, fn, 0x04, &pcicmd)) || (pcicmd & 1) == 0 || (pcicmd & 4) == 0)
-- goto abort;
-- if ((rc = pcibios_read_config_dword(bus, fn, 0x20, &bmiba)))
-- goto abort;
-- bmiba &= 0xfff0; /* extract port base address */
-- if (bmiba != dma || !bmiba)
-- goto abort;
-- hwif0->chipset = ide_promise_udma;
-- hwif1->chipset = ide_promise_udma;
-- init_triton_dma(hwif0, bmiba);
-- init_triton_dma(hwif1, bmiba + 0x08);
-- return;
--abort:
-- printk(KERN_WARNING "ide: Promise/33 not configured correctly (BIOS)\n");
++
+ if ((vendor == PCI_VENDOR_ID_PROMISE) ||
+ (vendor == PCI_VENDOR_ID_TTI)) {
+ set_promise_hpt343_extra(device, bmiba);
@@ -1008,16 +981,48 @@ diff -dur linux.orig/src/drivers/block/triton.c linux/src/drivers/block/triton.c
+ step_count++;
+ } else {
+ continue;
-+ }
-+ }
-+ }
-+ }
-+
+ }
+- s_clks = (s_clks & 3) + 2;
+- r_clks = (r_clks & 3) + 1;
+- printk(" slave: sample_CLKs=%d, recovery_CLKs=%d\n",
+- s_clks, r_clks);
+ }
+ }
+- print_triton_drive_flags (0, time & 0xf);
+- print_triton_drive_flags (1, (time >> 4) & 0xf);
+-#endif /* DISPLAY_TRITON_TIMINGS */
+ }
+
+-quit: if (rc) printk("ide: pcibios access failed - %s\n", pcibios_strerror(rc));
+-}
+-
+-void ide_init_promise (byte bus, byte fn, ide_hwif_t *hwif0, ide_hwif_t *hwif1, unsigned short dma)
+-{
+- int rc;
+- unsigned short pcicmd;
+- unsigned int bmiba = 0;
+-
+- printk("ide: Enabling DMA for Promise Technology IDE Ultra-DMA 33 on PCI bus %d function %d, port 0x%04x\n", bus, fn, dma);
+- if ((rc = pcibios_read_config_word(bus, fn, 0x04, &pcicmd)) || (pcicmd & 1) == 0 || (pcicmd & 4) == 0)
+- goto abort;
+- if ((rc = pcibios_read_config_dword(bus, fn, 0x20, &bmiba)))
+- goto abort;
+- bmiba &= 0xfff0; /* extract port base address */
+- if (bmiba != dma || !bmiba)
+- goto abort;
+- hwif0->chipset = ide_promise_udma;
+- hwif1->chipset = ide_promise_udma;
+- init_triton_dma(hwif0, bmiba);
+- init_triton_dma(hwif1, bmiba + 0x08);
+- return;
+-abort:
+- printk(KERN_WARNING "ide: Promise/33 not configured correctly (BIOS)\n");
+ quit: if (rc) printk("ide: pcibios access failed - %s\n", pcibios_strerror(rc));
}
-diff -dur linux.orig/src/include/linux/hdreg.h linux/src/include/linux/hdreg.h
---- linux.orig/src/include/linux/hdreg.h 1999-04-26 07:56:27.000000000 +0200
-+++ linux/src/include/linux/hdreg.h 2004-09-16 21:56:00.000000000 +0200
+Index: linux/src/include/linux/hdreg.h
+===================================================================
+--- linux/src/include/linux/hdreg.h.orig 2006-08-26 20:19:09.000000000 +0300
++++ linux/src/include/linux/hdreg.h 2006-08-26 20:23:17.000000000 +0300
@@ -92,11 +92,12 @@
#define HDIO_GETGEO 0x0301 /* get device geometry */
#define HDIO_GET_UNMASKINTR 0x0302 /* get current unmask setting */