From: Martin Dalecki <dalecki@evision-ventures.com>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH] IDE 58
Date: Tue, 07 May 2002 17:03:21 +0200 [thread overview]
Message-ID: <3CD7ECB9.9050606@evision-ventures.com> (raw)
In-Reply-To: <Pine.LNX.4.44.0205052046590.1405-100000@home.transmeta.com>
[-- Attachment #1: Type: text/plain, Size: 629 bytes --]
Tue May 7 14:28:47 CEST 2002 ide-clean-58
- Apply m68k fixes by Roman Zippel.
- Apply CDROM PIO mode fix by Osamu Tamita.
(You are true "Hawk-eye" hovering over my head! Respect - and many Thanks.)
- Virtualize the udma_enable method as well to help ARM and PPC people. Please
please if you would like to have some other methods virtualized in a similar
way - just tell me or even better do it yourself at the end of ide-dma.c.
I *don't mind* patches.
- Fix the pmac code to adhere to the new API. It's supposed to work again.
However this is blind coding... I give myself 80% chances for it to work ;-).
[-- Attachment #2: ide-clean-58.diff --]
[-- Type: text/plain, Size: 18516 bytes --]
diff -urN linux-2.5.14/drivers/ide/buddha.c linux/drivers/ide/buddha.c
--- linux-2.5.14/drivers/ide/buddha.c 2002-05-06 05:38:01.000000000 +0200
+++ linux/drivers/ide/buddha.c 2002-05-07 15:41:02.000000000 +0200
@@ -1,10 +1,10 @@
/*
* linux/drivers/ide/buddha.c -- Amiga Buddha, Catweasel and X-Surf IDE Driver
*
- * Copyright (C) 1997 by Geert Uytterhoeven
+ * Copyright (C) 1997, 2001 by Geert Uytterhoeven and others
*
- * This driver was written by based on the specifications in README.buddha and
- * the X-Surf info from Inside_XSurf.txt available at
+ * This driver was written based on the specifications in README.buddha and
+ * the X-Surf info from Inside_XSurf.txt available at
* http://www.jschoenfeld.com
*
* This file is subject to the terms and conditions of the GNU General Public
@@ -52,7 +52,7 @@
BUDDHA_BASE1, BUDDHA_BASE2, BUDDHA_BASE3
};
-static const u_int xsurf_bases[XSURF_NUM_HWIFS] __initdata = {
+static u_int xsurf_bases[XSURF_NUM_HWIFS] __initdata = {
XSURF_BASE1, XSURF_BASE2
};
@@ -97,7 +97,7 @@
BUDDHA_IRQ1, BUDDHA_IRQ2, BUDDHA_IRQ3
};
-static const int xsurf_irqports[XSURF_NUM_HWIFS] __initdata = {
+static int xsurf_irqports[XSURF_NUM_HWIFS] __initdata = {
XSURF_IRQ1, XSURF_IRQ2
};
@@ -108,8 +108,9 @@
* Board information
*/
-enum BuddhaType_Enum {BOARD_BUDDHA, BOARD_CATWEASEL, BOARD_XSURF};
-typedef enum BuddhaType_Enum BuddhaType;
+typedef enum BuddhaType_Enum {
+ BOARD_BUDDHA, BOARD_CATWEASEL, BOARD_XSURF
+} BuddhaType;
/*
@@ -175,15 +176,20 @@
if (!request_mem_region(board+XSURF_BASE1, 0x1000, "IDE"))
continue;
if (!request_mem_region(board+XSURF_BASE2, 0x1000, "IDE"))
+ goto fail_base2;
+ if (!request_mem_region(board+XSURF_IRQ1, 0x8, "IDE")) {
+ release_mem_region(board+XSURF_BASE2, 0x1000);
+fail_base2:
+ release_mem_region(board+XSURF_BASE1, 0x1000);
continue;
- if (!request_mem_region(board+XSURF_IRQ1, 0x8, "IDE"))
- continue;
+ }
}
buddha_board = ZTWO_VADDR(board);
/* write to BUDDHA_IRQ_MR to enable the board IRQ */
/* X-Surf doesn't have this. IRQs are always on */
- if(type != BOARD_XSURF) *(char *)(buddha_board+BUDDHA_IRQ_MR) = 0;
+ if (type != BOARD_XSURF)
+ z_writeb(0, buddha_board+BUDDHA_IRQ_MR);
for(i=0;i<buddha_num_hwifs;i++) {
if(type != BOARD_XSURF) {
diff -urN linux-2.5.14/drivers/ide/Config.in linux/drivers/ide/Config.in
--- linux-2.5.14/drivers/ide/Config.in 2002-05-07 17:56:57.000000000 +0200
+++ linux/drivers/ide/Config.in 2002-05-07 15:41:02.000000000 +0200
@@ -103,7 +103,7 @@
dep_mbool ' Amiga IDE Doubler support (EXPERIMENTAL)' CONFIG_BLK_DEV_IDEDOUBLER $CONFIG_BLK_DEV_GAYLE $CONFIG_EXPERIMENTAL
fi
if [ "$CONFIG_ZORRO" = "y" -a "$CONFIG_EXPERIMENTAL" = "y" ]; then
- dep_mbool ' Buddha/Catweasel IDE interface support (EXPERIMENTAL)' CONFIG_BLK_DEV_BUDDHA $CONFIG_ZORRO $CONFIG_EXPERIMENTAL
+ dep_mbool ' Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)' CONFIG_BLK_DEV_BUDDHA $CONFIG_ZORRO $CONFIG_EXPERIMENTAL
fi
if [ "$CONFIG_ATARI" = "y" ]; then
dep_bool ' Falcon IDE interface support' CONFIG_BLK_DEV_FALCON_IDE $CONFIG_ATARI
diff -urN linux-2.5.14/drivers/ide/falconide.c linux/drivers/ide/falconide.c
--- linux-2.5.14/drivers/ide/falconide.c 2002-05-06 05:38:01.000000000 +0200
+++ linux/drivers/ide/falconide.c 2002-05-07 15:41:02.000000000 +0200
@@ -7,7 +7,7 @@
* License. See the file COPYING in the main directory of this archive for
* more details.
*/
-#include <linux/config.h>
+
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
diff -urN linux-2.5.14/drivers/ide/ide.c linux/drivers/ide/ide.c
--- linux-2.5.14/drivers/ide/ide.c 2002-05-07 17:57:04.000000000 +0200
+++ linux/drivers/ide/ide.c 2002-05-07 15:48:53.000000000 +0200
@@ -2097,6 +2097,7 @@
ch->atapi_read = old.atapi_read;
ch->atapi_write = old.atapi_write;
ch->XXX_udma = old.XXX_udma;
+ ch->udma_enable = old.udma_enable;
ch->udma_start = old.udma_start;
ch->udma_stop = old.udma_stop;
ch->udma_read = old.udma_read;
diff -urN linux-2.5.14/drivers/ide/ide-cd.c linux/drivers/ide/ide-cd.c
--- linux-2.5.14/drivers/ide/ide-cd.c 2002-05-07 17:57:04.000000000 +0200
+++ linux/drivers/ide/ide-cd.c 2002-05-07 15:43:27.000000000 +0200
@@ -962,7 +962,7 @@
/* First, figure out if we need to bit-bucket
any of the leading sectors. */
- nskip = MIN(rq->current_nr_sectors - bio_sectors(rq->bio), sectors_to_transfer);
+ nskip = MIN((int)(rq->current_nr_sectors - bio_sectors(rq->bio)), sectors_to_transfer);
while (nskip > 0) {
/* We need to throw away a sector. */
diff -urN linux-2.5.14/drivers/ide/ide-dma.c linux/drivers/ide/ide-dma.c
--- linux-2.5.14/drivers/ide/ide-dma.c 2002-05-07 17:56:57.000000000 +0200
+++ linux/drivers/ide/ide-dma.c 2002-05-07 15:49:00.000000000 +0200
@@ -533,8 +533,20 @@
{
struct ata_channel *ch = drive->channel;
int set_high = 1;
- u8 unit = (drive->select.b.unit & 0x01);
- u64 addr = BLK_BOUNCE_HIGH;
+ u8 unit;
+ u64 addr;
+
+
+ /* Method overloaded by host chip specific code. */
+ if (ch->udma_enable) {
+ ch->udma_enable(drive, on, verbose);
+
+ return;
+ }
+
+ /* Fall back to the default implementation. */
+ unit = (drive->select.b.unit & 0x01);
+ addr = BLK_BOUNCE_HIGH;
if (!on) {
if (verbose)
diff -urN linux-2.5.14/drivers/ide/ide-pmac.c linux/drivers/ide/ide-pmac.c
--- linux-2.5.14/drivers/ide/ide-pmac.c 2002-05-06 05:38:04.000000000 +0200
+++ linux/drivers/ide/ide-pmac.c 2002-05-07 17:52:35.000000000 +0200
@@ -256,7 +256,15 @@
#define IDE_WAKEUP_DELAY_MS 2000
static void pmac_ide_setup_dma(struct device_node *np, int ix);
-static int pmac_ide_dmaproc(ide_dma_action_t func, struct ata_device *drive, struct request *rq);
+
+static void pmac_udma_enable(struct ata_device *drive, int on, int verbose);
+static int pmac_udma_start(struct ata_device *drive, struct request *rq);
+static int pmac_udma_stop(struct ata_device *drive);
+static int pmac_do_udma(unsigned int reading, struct ata_device *drive, struct request *rq);
+static int pmac_udma_read(struct ata_device *drive, struct request *rq);
+static int pmac_udma_write(struct ata_device *drive, struct request *rq);
+static int pmac_udma_irq_status(struct ata_device *drive);
+static int pmac_ide_dmaproc(struct ata_device *drive);
static int pmac_ide_build_dmatable(struct ata_device *drive, struct request *rq, int ix, int wr);
static int pmac_ide_tune_chipset(struct ata_device *drive, byte speed);
static void pmac_ide_tuneproc(struct ata_device *drive, byte pio);
@@ -323,7 +331,13 @@
ide_hwifs[ix].selectproc = pmac_ide_selectproc;
ide_hwifs[ix].speedproc = &pmac_ide_tune_chipset;
if (pmac_ide[ix].dma_regs && pmac_ide[ix].dma_table_cpu) {
- ide_hwifs[ix].udma = pmac_ide_dmaproc;
+ ide_hwifs[ix].udma_enable = pmac_udma_enable;
+ ide_hwifs[ix].udma_start = pmac_udma_start;
+ ide_hwifs[ix].udma_stop = pmac_udma_stop;
+ ide_hwifs[ix].udma_read = pmac_udma_read;
+ ide_hwifs[ix].udma_write = pmac_udma_write;
+ ide_hwifs[ix].udma_irq_status = pmac_udma_irq_status;
+ ide_hwifs[ix].XXX_udma = pmac_ide_dmaproc;
#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC_AUTO
if (!noautodma)
ide_hwifs[ix].autodma = 1;
@@ -1025,7 +1039,13 @@
pmif->dma_table_cpu, pmif->dma_table_dma);
return;
}
- ide_hwifs[ix].udma = pmac_ide_dmaproc;
+ ide_hwifs[ix].udma_enable = pmac_udma_enable;
+ ide_hwifs[ix].udma_start = pmac_udma_start;
+ ide_hwifs[ix].udma_stop = pmac_udma_stop;
+ ide_hwifs[ix].udma_read = pmac_udma_read;
+ ide_hwifs[ix].udma_write = pmac_udma_write;
+ ide_hwifs[ix].udma_irq_status = pmac_udma_irq_status;
+ ide_hwifs[ix].XXX_udma = pmac_ide_dmaproc;
#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC_AUTO
if (!noautodma)
ide_hwifs[ix].autodma = 1;
@@ -1336,130 +1356,178 @@
blk_queue_bounce_limit(&drive->queue, addr);
}
-static int pmac_ide_dmaproc(ide_dma_action_t func, struct ata_device *drive, struct request *rq)
+static void pmac_udma_enable(struct ata_device *drive, int on, int verbose)
+{
+ if (verbose) {
+ printk(KERN_INFO "%s: DMA disabled\n", drive->name);
+ }
+
+ drive->using_dma = 0;
+ ide_toggle_bounce(drive, 0);
+}
+
+static int pmac_udma_start(struct ata_device *drive, struct request *rq)
{
- int ix, dstat, reading, ata4;
+ int ix, ata4;
+ volatile struct dbdma_regs *dma;
+
+ /* Can we stuff a pointer to our intf structure in config_data
+ * or select_data in hwif ?
+ */
+ ix = pmac_ide_find(drive);
+ if (ix < 0)
+ return 0;
+ dma = pmac_ide[ix].dma_regs;
+ ata4 = (pmac_ide[ix].kind == controller_kl_ata4 ||
+ pmac_ide[ix].kind == controller_kl_ata4_80);
+
+ out_le32(&dma->control, (RUN << 16) | RUN);
+ /* Make sure it gets to the controller right now */
+ (void)in_le32(&dma->control);
+ return 0;
+}
+
+static int pmac_udma_stop(struct ata_device *drive)
+{
+ int ix, dstat, ata4;
+ volatile struct dbdma_regs *dma;
+
+ /* Can we stuff a pointer to our intf structure in config_data
+ * or select_data in hwif ?
+ */
+ ix = pmac_ide_find(drive);
+ if (ix < 0)
+ return 0;
+ dma = pmac_ide[ix].dma_regs;
+ ata4 = (pmac_ide[ix].kind == controller_kl_ata4 ||
+ pmac_ide[ix].kind == controller_kl_ata4_80);
+
+ drive->waiting_for_dma = 0;
+ dstat = in_le32(&dma->status);
+ out_le32(&dma->control, ((RUN|WAKE|DEAD) << 16));
+ pmac_ide_destroy_dmatable(drive->channel, ix);
+ /* verify good dma status */
+ return (dstat & (RUN|DEAD|ACTIVE)) != RUN;
+}
+
+static int pmac_do_udma(unsigned int reading, struct ata_device *drive, struct request *rq)
+{
+ int ix, ata4;
volatile struct dbdma_regs *dma;
byte unit = (drive->select.b.unit & 0x01);
-
+
/* Can we stuff a pointer to our intf structure in config_data
* or select_data in hwif ?
*/
ix = pmac_ide_find(drive);
if (ix < 0)
- return 0;
+ return 0;
dma = pmac_ide[ix].dma_regs;
ata4 = (pmac_ide[ix].kind == controller_kl_ata4 ||
pmac_ide[ix].kind == controller_kl_ata4_80);
-
- switch (func) {
- case ide_dma_off:
- printk(KERN_INFO "%s: DMA disabled\n", drive->name);
- case ide_dma_off_quietly:
- drive->using_dma = 0;
- ide_toggle_bounce(drive, 0);
- break;
- case ide_dma_on:
- case ide_dma_check:
- /* Change this to better match ide-dma.c */
- pmac_ide_check_dma(drive);
- ide_toggle_bounce(drive, drive->using_dma);
- break;
- case ide_dma_read:
- case ide_dma_write:
- reading = (func == ide_dma_read);
- if (!pmac_ide_build_dmatable(drive, rq, ix, !reading))
- return 1;
- /* Apple adds 60ns to wrDataSetup on reads */
- if (ata4 && (pmac_ide[ix].timings[unit] & TR_66_UDMA_EN)) {
- out_le32((unsigned *)(IDE_DATA_REG + IDE_TIMING_CONFIG + _IO_BASE),
- pmac_ide[ix].timings[unit] +
- ((func == ide_dma_read) ? 0x00800000UL : 0));
- (void)in_le32((unsigned *)(IDE_DATA_REG + IDE_TIMING_CONFIG + _IO_BASE));
- }
- drive->waiting_for_dma = 1;
- if (drive->type != ATA_DISK)
- return 0;
- ide_set_handler(drive, ide_dma_intr, WAIT_CMD, NULL);
- if ((rq->flags & REQ_DRIVE_ACB) &&
- (drive->addressing == 1)) {
- struct ata_taskfile *args = rq->special;
- OUT_BYTE(args->taskfile.command, IDE_COMMAND_REG);
- } else if (drive->addressing) {
- OUT_BYTE(reading ? WIN_READDMA_EXT : WIN_WRITEDMA_EXT, IDE_COMMAND_REG);
- } else {
- OUT_BYTE(reading ? WIN_READDMA : WIN_WRITEDMA, IDE_COMMAND_REG);
- }
- /* fall through */
- case ide_dma_begin:
- out_le32(&dma->control, (RUN << 16) | RUN);
- /* Make sure it gets to the controller right now */
- (void)in_le32(&dma->control);
- break;
- case ide_dma_end: /* returns 1 on error, 0 otherwise */
- drive->waiting_for_dma = 0;
- dstat = in_le32(&dma->status);
- out_le32(&dma->control, ((RUN|WAKE|DEAD) << 16));
- pmac_ide_destroy_dmatable(drive->channel, ix);
- /* verify good dma status */
- return (dstat & (RUN|DEAD|ACTIVE)) != RUN;
- case ide_dma_test_irq: /* returns 1 if dma irq issued, 0 otherwise */
- /* We have to things to deal with here:
- *
- * - The dbdma won't stop if the command was started
- * but completed with an error without transfering all
- * datas. This happens when bad blocks are met during
- * a multi-block transfer.
- *
- * - The dbdma fifo hasn't yet finished flushing to
- * to system memory when the disk interrupt occurs.
- *
- * The trick here is to increment drive->waiting_for_dma,
- * and return as if no interrupt occured. If the counter
- * reach a certain timeout value, we then return 1. If
- * we really got the interrupt, it will happen right away
- * again.
- * Apple's solution here may be more elegant. They issue
- * a DMA channel interrupt (a separate irq line) via a DBDMA
- * NOP command just before the STOP, and wait for both the
- * disk and DBDMA interrupts to have completed.
- */
-
- /* If ACTIVE is cleared, the STOP command have passed and
- * transfer is complete.
- */
- if (!(in_le32(&dma->status) & ACTIVE))
- return 1;
- if (!drive->waiting_for_dma)
- printk(KERN_WARNING "ide%d, ide_dma_test_irq \
- called while not waiting\n", ix);
- /* If dbdma didn't execute the STOP command yet, the
- * active bit is still set */
- drive->waiting_for_dma++;
- if (drive->waiting_for_dma >= DMA_WAIT_TIMEOUT) {
- printk(KERN_WARNING "ide%d, timeout waiting \
- for dbdma command stop\n", ix);
- return 1;
- }
- udelay(1);
+ if (!pmac_ide_build_dmatable(drive, rq, ix, !reading))
+ return 1;
+ /* Apple adds 60ns to wrDataSetup on reads */
+ if (ata4 && (pmac_ide[ix].timings[unit] & TR_66_UDMA_EN)) {
+ out_le32((unsigned *)(IDE_DATA_REG + IDE_TIMING_CONFIG + _IO_BASE),
+ pmac_ide[ix].timings[unit] +
+ ((reading) ? 0x00800000UL : 0));
+ (void)in_le32((unsigned *)(IDE_DATA_REG + IDE_TIMING_CONFIG + _IO_BASE));
+ }
+ drive->waiting_for_dma = 1;
+ if (drive->type != ATA_DISK)
+ return 0;
+ ide_set_handler(drive, ide_dma_intr, WAIT_CMD, NULL);
+ if ((rq->flags & REQ_DRIVE_ACB) &&
+ (drive->addressing == 1)) {
+ struct ata_taskfile *args = rq->special;
+ OUT_BYTE(args->taskfile.command, IDE_COMMAND_REG);
+ } else if (drive->addressing) {
+ OUT_BYTE(reading ? WIN_READDMA_EXT : WIN_WRITEDMA_EXT, IDE_COMMAND_REG);
+ } else {
+ OUT_BYTE(reading ? WIN_READDMA : WIN_WRITEDMA, IDE_COMMAND_REG);
+ }
+
+ return udma_start(drive, rq);
+}
+
+static int pmac_udma_read(struct ata_device *drive, struct request *rq)
+{
+ return pmac_do_udma(1, drive, rq);
+}
+
+static int pmac_udma_write(struct ata_device *drive, struct request *rq)
+{
+ return pmac_do_udma(0, drive, rq);
+}
+
+/*
+ * FIXME: This should be attached to a channel as we can see now!
+ */
+static int pmac_udma_irq_status(struct ata_device *drive)
+{
+ int ix, ata4;
+ volatile struct dbdma_regs *dma;
+
+ /* Can we stuff a pointer to our intf structure in config_data
+ * or select_data in hwif ?
+ */
+ ix = pmac_ide_find(drive);
+ if (ix < 0)
return 0;
+ dma = pmac_ide[ix].dma_regs;
+ ata4 = (pmac_ide[ix].kind == controller_kl_ata4 ||
+ pmac_ide[ix].kind == controller_kl_ata4_80);
+
+ /* We have to things to deal with here:
+ *
+ * - The dbdma won't stop if the command was started but completed with
+ * an error without transfering all datas. This happens when bad blocks
+ * are met during a multi-block transfer.
+ *
+ * - The dbdma fifo hasn't yet finished flushing to to system memory
+ * when the disk interrupt occurs.
+ *
+ * The trick here is to increment drive->waiting_for_dma, and return as
+ * if no interrupt occured. If the counter reach a certain timeout
+ * value, we then return 1. If we really got the interrupt, it will
+ * happen right away again. Apple's solution here may be more elegant.
+ * They issue a DMA channel interrupt (a separate irq line) via a DBDMA
+ * NOP command just before the STOP, and wait for both the disk and
+ * DBDMA interrupts to have completed.
+ */
- /* Let's implement tose just in case someone wants them */
- case ide_dma_bad_drive:
- case ide_dma_good_drive:
- return check_drive_lists(drive, (func == ide_dma_good_drive));
- case ide_dma_lostirq:
- case ide_dma_timeout:
- printk(KERN_WARNING "ide_pmac_dmaproc: chipset supported func only: %d\n", func);
+ /* If ACTIVE is cleared, the STOP command have passed and
+ * transfer is complete.
+ */
+ if (!(in_le32(&dma->status) & ACTIVE))
return 1;
- default:
- printk(KERN_WARNING "ide_pmac_dmaproc: unsupported func: %d\n", func);
+ if (!drive->waiting_for_dma)
+ printk(KERN_WARNING "ide%d, ide_dma_test_irq \
+ called while not waiting\n", ix);
+
+ /* If dbdma didn't execute the STOP command yet, the
+ * active bit is still set */
+ drive->waiting_for_dma++;
+ if (drive->waiting_for_dma >= DMA_WAIT_TIMEOUT) {
+ printk(KERN_WARNING "ide%d, timeout waiting \
+ for dbdma command stop\n", ix);
return 1;
}
+ udelay(1);
return 0;
}
-#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
+
+static int pmac_ide_dmaproc(struct ata_device *drive)
+{
+ /* Change this to better match ide-dma.c */
+ pmac_ide_check_dma(drive);
+ ide_toggle_bounce(drive, drive->using_dma);
+
+ return 0;
+}
+#endif
static void idepmac_sleep_device(ide_drive_t *drive, int i, unsigned base)
{
diff -urN linux-2.5.14/drivers/ide/ide-taskfile.c linux/drivers/ide/ide-taskfile.c
--- linux-2.5.14/drivers/ide/ide-taskfile.c 2002-05-07 17:57:01.000000000 +0200
+++ linux/drivers/ide/ide-taskfile.c 2002-05-07 15:41:02.000000000 +0200
@@ -39,8 +39,6 @@
#define DTF(x...)
#endif
-#define SUPPORT_VLB_SYNC 1
-
/*
* for now, taskfile requests are special :/
*/
diff -urN linux-2.5.14/include/asm-m68k/ide.h linux/include/asm-m68k/ide.h
--- linux-2.5.14/include/asm-m68k/ide.h 2002-05-07 17:56:58.000000000 +0200
+++ linux/include/asm-m68k/ide.h 2002-05-07 15:41:02.000000000 +0200
@@ -121,6 +121,7 @@
#define inb(p) in_8(ADDR_TRANS_B(p))
#define inb_p(p) in_8(ADDR_TRANS_B(p))
#define inw(p) in_be16(ADDR_TRANS_W(p))
+#define inw_p(p) in_be16(ADDR_TRANS_W(p))
#define outb(v,p) out_8(ADDR_TRANS_B(p),v)
#define outb_p(v,p) out_8(ADDR_TRANS_B(p),v)
#define outw(v,p) out_be16(ADDR_TRANS_W(p),v)
diff -urN linux-2.5.14/include/linux/ide.h linux/include/linux/ide.h
--- linux-2.5.14/include/linux/ide.h 2002-05-07 17:57:04.000000000 +0200
+++ linux/include/linux/ide.h 2002-05-07 15:48:57.000000000 +0200
@@ -459,6 +459,8 @@
int (*XXX_udma)(struct ata_device *);
+ void (*udma_enable)(struct ata_device *, int, int);
+
int (*udma_start) (struct ata_device *, struct request *rq);
int (*udma_stop) (struct ata_device *);
next prev parent reply other threads:[~2002-05-07 16:06 UTC|newest]
Thread overview: 228+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-06 3:53 Linux-2.5.14 Linus Torvalds
2002-05-06 6:30 ` Linux-2.5.14 Daniel Pittman
2002-05-06 6:51 ` Linux-2.5.14 Andrew Morton
2002-05-06 15:13 ` Linux-2.5.14 Linus Torvalds
2002-05-07 4:28 ` Linux-2.5.14 Daniel Pittman
2002-05-09 3:53 ` Linux-2.5.14 Daniel Pittman
2002-05-09 4:34 ` Linux-2.5.14 Andrew Morton
2002-05-09 6:02 ` Linux-2.5.14 Daniel Pittman
2002-05-06 6:47 ` Linux-2.5.14 bert hubert
2002-05-06 7:07 ` Linux-2.5.14 Andrew Morton
2002-05-06 14:00 ` Linux-2.5.14 Rik van Riel
2002-05-06 9:09 ` [PATCH] 2.5.14 IDE 55 Martin Dalecki
2002-05-06 17:48 ` David Lang
2002-05-06 22:40 ` Roman Zippel
2002-05-07 10:10 ` Martin Dalecki
2002-05-07 11:31 ` Roman Zippel
2002-05-07 10:31 ` Martin Dalecki
2002-05-07 10:34 ` Martin Dalecki
2002-05-07 11:48 ` Roman Zippel
2002-05-07 11:19 ` Martin Dalecki
2002-05-07 12:35 ` Roman Zippel
2002-05-07 12:36 ` Andrey Panin
2002-05-07 11:32 ` Martin Dalecki
2002-05-07 12:38 ` Dave Jones
2002-05-07 0:03 ` Roman Zippel
2002-05-07 10:12 ` Martin Dalecki
2002-05-07 11:39 ` Roman Zippel
2002-05-07 10:40 ` Martin Dalecki
2002-05-07 12:42 ` Roman Zippel
2002-05-07 11:22 ` [PATCH] 2.5.14 IDE 56 Martin Dalecki
2002-05-07 14:02 ` Padraig Brady
2002-05-07 13:15 ` Martin Dalecki
2002-05-07 14:30 ` Padraig Brady
2002-05-07 15:08 ` Anton Altaparmakov
2002-05-07 15:36 ` Linus Torvalds
2002-05-07 16:20 ` Jan Harkes
2002-05-07 15:26 ` Martin Dalecki
2002-05-07 21:36 ` Jan Harkes
2002-05-08 0:25 ` Guest section DW
2002-05-08 3:03 ` Jan Harkes
2002-05-08 9:03 ` Martin Dalecki
2002-05-08 12:10 ` Alan Cox
2002-05-08 10:51 ` Martin Dalecki
2002-05-07 16:29 ` Padraig Brady
2002-05-07 16:51 ` Linus Torvalds
2002-05-07 18:29 ` Kai Henningsen
2002-05-08 7:48 ` Juan Quintela
2002-05-08 16:54 ` Linus Torvalds
2002-05-07 17:08 ` Alan Cox
2002-05-07 17:00 ` Linus Torvalds
2002-05-07 17:19 ` benh
2002-05-07 17:24 ` Linus Torvalds
2002-05-07 17:30 ` benh
2002-05-10 1:45 ` Mike Fedyk
2002-05-07 17:43 ` Richard Gooch
2002-05-07 18:05 ` Linus Torvalds
2002-05-07 18:26 ` Alan Cox
2002-05-07 18:16 ` Linus Torvalds
2002-05-07 18:40 ` Richard Gooch
2002-05-07 18:46 ` Linus Torvalds
2002-05-07 23:54 ` Roman Zippel
2002-05-08 6:57 ` Kai Henningsen
2002-05-08 9:37 ` Ian Molton
2002-05-09 13:58 ` Pavel Machek
2002-05-08 8:21 ` Martin Dalecki
2002-05-07 17:27 ` Jauder Ho
2002-05-08 8:13 ` Martin Dalecki
2002-05-07 18:29 ` Patrick Mochel
2002-05-07 18:02 ` Greg KH
2002-05-07 18:44 ` Richard Gooch
2002-05-07 18:44 ` Patrick Mochel
2002-05-07 19:21 ` Richard Gooch
2002-05-07 19:58 ` Patrick Mochel
2002-05-07 18:49 ` Thunder from the hill
2002-05-07 19:47 ` Patrick Mochel
2002-05-07 22:03 ` Richard Gooch
2002-05-08 8:14 ` Russell King
2002-05-08 16:07 ` Richard Gooch
2002-05-08 17:07 ` Russell King
2002-05-08 8:18 ` Martin Dalecki
2002-05-08 8:07 ` Martin Dalecki
2002-05-08 7:58 ` Martin Dalecki
2002-05-08 12:18 ` Alan Cox
2002-05-08 11:09 ` Martin Dalecki
2002-05-08 12:42 ` Alan Cox
2002-05-08 11:23 ` Martin Dalecki
2002-05-09 2:37 ` Lincoln Dale
2002-05-09 3:10 ` Andrew Morton
2002-05-09 10:05 ` Lincoln Dale
2002-05-09 18:50 ` Andrew Morton
2002-05-10 0:33 ` Andi Kleen
2002-05-10 0:48 ` Andrew Morton
2002-05-10 1:06 ` Andi Kleen
2002-05-13 17:51 ` Pavel Machek
2002-05-14 21:44 ` Andi Kleen
2002-05-10 6:50 ` O_DIRECT performance impact on 2.4.18 (was: Re: [PATCH] 2.5.14 IDE 56) Lincoln Dale
2002-05-10 7:15 ` O_DIRECT performance impact on 2.4.18 (was: Re: [PATCH] 2.5.14IDE 56) Andrew Morton
2002-05-10 7:21 ` Jens Axboe
2002-05-10 8:12 ` Andrea Arcangeli
2002-05-10 10:14 ` Lincoln Dale
2002-05-10 12:36 ` Andrea Arcangeli
2002-05-11 3:23 ` Lincoln Dale
2002-05-13 11:19 ` Andrea Arcangeli
2002-05-13 23:58 ` Lincoln Dale
2002-05-14 0:22 ` Andrea Arcangeli
2002-05-14 2:43 ` O_DIRECT on 2.4.19pre8aa2 md device Lincoln Dale
2002-05-21 15:51 ` Andrea Arcangeli
2002-05-22 1:18 ` Lincoln Dale
2002-05-22 2:51 ` Andrea Arcangeli
2002-06-03 4:53 ` high-end i/o performance of 2.4.19pre8aa2 (was: Re: O_DIRECT on 2.4.19pre8aa2 device) Lincoln Dale
2002-05-12 11:23 ` O_DIRECT performance impact on 2.4.18 (was: Re: [PATCH] 2.5.14IDE 56) Lincoln Dale
2002-05-13 11:37 ` Andrea Arcangeli
2002-05-10 15:55 ` O_DIRECT performance impact on 2.4.18 (was: Re: [PATCH] 2.5.14 IDE 56) Linus Torvalds
2002-05-11 1:01 ` Gerrit Huizenga
2002-05-11 18:04 ` Linus Torvalds
2002-05-11 18:19 ` Larry McVoy
2002-05-11 18:35 ` Linus Torvalds
2002-05-11 18:37 ` Larry McVoy
2002-05-11 18:56 ` Linus Torvalds
2002-05-11 21:42 ` Gerrit Huizenga
2002-05-11 18:43 ` Mr. James W. Laferriere
2002-05-11 23:38 ` Lincoln Dale
2002-05-12 0:36 ` yodaiken
2002-05-12 2:40 ` Andrew Morton
2002-05-11 18:26 ` O_DIRECT performance impact on 2.4.18 (was: Re: [PATCH] 2.5.14 Alan Cox
2002-05-11 18:09 ` Linus Torvalds
2002-05-11 18:45 ` O_DIRECT performance impact on 2.4.18 (was: Re: [PATCH] 2.5.14 IDE 56) yodaiken
2002-05-11 19:55 ` O_DIRECT performance impact on 2.4.18 Bernd Eckenfels
2002-05-11 14:18 ` O_DIRECT performance impact on 2.4.18 (was: Re: [PATCH] 2.5.14 IDE 56) Roy Sigurd Karlsbakk
2002-05-11 14:24 ` Jens Axboe
2002-05-11 18:25 ` Gerrit Huizenga
2002-05-11 20:17 ` Jens Axboe
2002-05-11 22:27 ` Gerrit Huizenga
2002-05-11 23:17 ` Lincoln Dale
2002-05-09 4:16 ` [PATCH] 2.5.14 IDE 56 Andre Hedrick
2002-05-09 13:32 ` Alan Cox
2002-05-09 14:58 ` Alan Cox
2002-05-08 18:21 ` Erik Andersen
2002-05-08 18:59 ` Dave Jones
2002-05-08 19:31 ` Alan Cox
2002-05-08 21:16 ` Erik Andersen
2002-05-08 22:14 ` Alan Cox
2002-05-09 13:13 ` Pavel Machek
2002-05-09 19:22 ` Daniel Jacobowitz
2002-05-10 12:01 ` Padraig Brady
2002-05-09 13:18 ` Pavel Machek
2002-05-07 17:10 ` Richard B. Johnson
2002-05-08 7:36 ` Martin Dalecki
2002-05-08 17:22 ` Greg KH
2002-05-08 18:46 ` Denis Vlasenko
2002-05-07 11:27 ` [PATCH] 2.5.14 IDE 57 Martin Dalecki
2002-05-07 13:16 ` Anton Altaparmakov
2002-05-07 12:34 ` Martin Dalecki
2002-05-07 13:56 ` Mikael Pettersson
2002-05-07 14:04 ` Dave Jones
2002-05-07 13:57 ` Anton Altaparmakov
2002-05-07 14:08 ` Dave Jones
2002-05-07 13:11 ` Martin Dalecki
2002-05-07 14:29 ` Anton Altaparmakov
2002-05-07 13:36 ` Martin Dalecki
2002-05-07 15:08 ` Anton Altaparmakov
2002-05-07 16:51 ` Dave Jones
2002-05-08 3:38 ` Anton Altaparmakov
2002-05-08 11:47 ` Dave Jones
2002-05-07 15:07 ` Padraig Brady
2002-05-07 17:21 ` Andre Hedrick
2002-05-11 14:09 ` Aaron Lehmann
2002-05-07 15:03 ` Martin Dalecki [this message]
2002-05-08 6:42 ` [PATCH] IDE 58 Paul Mackerras
2002-05-08 8:53 ` Martin Dalecki
2002-05-08 10:37 ` Bjorn Wesen
2002-05-08 10:16 ` Martin Dalecki
2002-05-08 19:06 ` Linus Torvalds
2002-05-08 19:10 ` Benjamin Herrenschmidt
2002-05-08 20:31 ` Alan Cox
2002-05-08 19:49 ` Benjamin Herrenschmidt
2002-05-08 20:44 ` Alan Cox
2002-05-08 20:04 ` Benjamin Herrenschmidt
2002-05-09 20:20 ` Ian Molton
2002-05-08 20:36 ` Andre Hedrick
2002-05-08 20:29 ` Andre Hedrick
2002-05-08 20:06 ` Benjamin Herrenschmidt
2002-05-09 12:14 ` Martin Dalecki
2002-05-09 15:19 ` Eric W. Biederman
2002-05-09 20:20 ` Ian Molton
2002-05-08 11:00 ` Benjamin Herrenschmidt
2002-05-09 19:58 ` [PATCH] 2.5.14 IDE 59 Martin Dalecki
2002-05-11 4:16 ` William Lee Irwin III
2002-05-11 16:59 ` [PATCH] 2.5.15 IDE 60 Martin Dalecki
2002-05-11 18:47 ` Pierre Rousselet
2002-05-11 19:12 ` Andre Hedrick
2002-05-11 19:52 ` Pierre Rousselet
2002-05-11 23:48 ` Andre Hedrick
2002-05-12 19:19 ` pdc202xx.c fails to compile in 2.5.15 Zlatko Calusic
2002-05-12 19:40 ` Jurriaan on Alpha
2002-05-12 22:00 ` Petr Vandrovec
2002-05-13 12:03 ` Alan Cox
2002-05-13 9:48 ` [PATCH] 2.5.15 IDE 61 Martin Dalecki
2002-05-13 12:17 ` [PATCH] 2.5.15 IDE 62 Martin Dalecki
2002-05-13 13:48 ` Jens Axboe
2002-05-13 13:02 ` Martin Dalecki
2002-05-13 15:38 ` Jens Axboe
2002-05-13 15:45 ` Martin Dalecki
2002-05-13 16:54 ` Linus Torvalds
2002-05-13 16:55 ` Jens Axboe
2002-05-13 16:00 ` Martin Dalecki
2002-05-13 18:02 ` benh
2002-05-13 15:50 ` Martin Dalecki
2002-05-13 17:52 ` benh
2002-05-13 15:55 ` Martin Dalecki
2002-05-13 19:13 ` benh
2002-05-14 8:48 ` Martin Dalecki
2002-05-17 11:40 ` Martin Dalecki
2002-05-17 2:27 ` Benjamin Herrenschmidt
2002-05-13 15:36 ` Tom Rini
2002-05-14 10:26 ` [PATCH] 2.5.15 IDE 62a Martin Dalecki
2002-05-14 10:28 ` [PATCH] 2.5.15 IDE 63 Martin Dalecki
2002-05-15 12:04 ` [PATCH] 2.5.15 IDE 64 Martin Dalecki
2002-05-15 13:12 ` Russell King
2002-05-15 12:14 ` Martin Dalecki
-- strict thread matches above, loose matches on Subject: below --
2002-05-08 11:12 [PATCH] IDE 58 Benjamin Herrenschmidt
2002-05-08 10:25 ` Martin Dalecki
2002-05-08 18:29 ` Anton Altaparmakov
2002-05-08 18:55 ` Andre Hedrick
2002-05-09 11:34 ` Martin Dalecki
2002-05-09 13:22 ` Alan Cox
[not found] <Pine.LNX.4.10.10205081154370.30697-100000@master.linux-ide .org>
2002-05-08 19:00 ` Anton Altaparmakov
2002-05-08 19:08 ` Andre Hedrick
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3CD7ECB9.9050606@evision-ventures.com \
--to=dalecki@evision-ventures.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox