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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.