[PATCH] 2.5.19 IDE 82

From: Martin Dalecki (dalecki@evision-ventures.com)
Date: Sun Jun 02 2002 - 15:13:50 EST


Sun Jun 2 22:41:45 CEST 2002 ide-clean-82

- PPC compilation fix by Paul Mackerras.

- Various fixes by Bartek:

   fix ata_irq_enable() and ata_reset() for legacy ATA-1 devices

   in start_request() for REQ_DRIVE_ACB
   a) don't run ->prehandler() twice
   b) return ata_taskfile() value

diff -urN linux-2.5.19/drivers/ide/device.c linux/drivers/ide/device.c
--- linux-2.5.19/drivers/ide/device.c 2002-06-02 23:03:00.000000000 +0200
+++ linux/drivers/ide/device.c 2002-06-02 22:48:12.000000000 +0200
@@ -105,11 +105,12 @@
         if (!ch->io_ports[IDE_CONTROL_OFFSET])
                 return 0;
 
+ /* 0x08 is for legacy ATA-1 devices */
         if (on)
- OUT_BYTE(0x00, ch->io_ports[IDE_CONTROL_OFFSET]);
+ OUT_BYTE(0x08 | 0x00, ch->io_ports[IDE_CONTROL_OFFSET]);
         else {
                 if (!ch->intrproc)
- OUT_BYTE(0x02, ch->io_ports[IDE_CONTROL_OFFSET]);
+ OUT_BYTE(0x08 | 0x02, ch->io_ports[IDE_CONTROL_OFFSET]);
                 else
                         ch->intrproc(drive);
         }
@@ -131,9 +132,11 @@
                 return;
 
         printk("%s: reset\n", ch->name);
- OUT_BYTE(0x04, ch->io_ports[IDE_CONTROL_OFFSET]);
+ /* 0x08 is for legacy ATA-1 devices */
+ OUT_BYTE(0x08 | 0x04, ch->io_ports[IDE_CONTROL_OFFSET]);
         udelay(10);
- OUT_BYTE(0x00, ch->io_ports[IDE_CONTROL_OFFSET]);
+ /* 0x08 is for legacy ATA-1 devices */
+ OUT_BYTE(0x08 | 0x00, ch->io_ports[IDE_CONTROL_OFFSET]);
         do {
                 mdelay(50);
                 stat = IN_BYTE(ch->io_ports[IDE_STATUS_OFFSET]);
diff -urN linux-2.5.19/drivers/ide/ide.c linux/drivers/ide/ide.c
--- linux-2.5.19/drivers/ide/ide.c 2002-06-02 23:03:06.000000000 +0200
+++ linux/drivers/ide/ide.c 2002-06-02 22:48:20.000000000 +0200
@@ -754,14 +754,7 @@
                 if (!(ar))
                         goto args_error;
 
- ata_taskfile(drive, ar, NULL);
-
- if (((ar->command_type == IDE_DRIVE_TASK_RAW_WRITE) ||
- (ar->command_type == IDE_DRIVE_TASK_OUT)) &&
- ar->prehandler && ar->handler)
- return ar->prehandler(drive, rq);
-
- return ide_started;
+ return ata_taskfile(drive, ar, NULL);
         }
 
         /* The normal way of execution is to pass and execute the request
diff -urN linux-2.5.19/drivers/ide/ide-pmac.c linux/drivers/ide/ide-pmac.c
--- linux-2.5.19/drivers/ide/ide-pmac.c 2002-06-02 23:03:06.000000000 +0200
+++ linux/drivers/ide/ide-pmac.c 2002-06-02 22:57:41.000000000 +0200
@@ -431,7 +431,7 @@
                 goto out;
         }
         udelay(10);
- ata_irq_enale(drive, 0);
+ ata_irq_enable(drive, 0);
         OUT_BYTE(command, IDE_NSECTOR_REG);
         OUT_BYTE(SETFEATURES_XFER, IDE_FEATURE_REG);
         OUT_BYTE(WIN_SETFEATURES, IDE_COMMAND_REG);
@@ -1577,9 +1577,9 @@
          */
         if (used_dma && !ide_spin_wait_hwgroup(drive)) {
                 /* Lock HW group */
- set_bit(IDE_BUSY, &drive->channel->active);
+ set_bit(IDE_BUSY, drive->channel->active);
                 pmac_ide_check_dma(drive);
- clear_bit(IDE_BUSY, &drive->channel->active);
+ clear_bit(IDE_BUSY, drive->channel->active);
                 spin_unlock_irq(drive->channel->lock);
         }
 #endif
@@ -1626,7 +1626,7 @@
                 return;
         else {
                 /* Lock HW group */
- set_bit(IDE_BUSY, &drive->channel->active);
+ set_bit(IDE_BUSY, drive->channel->active);
                 /* Stop the device */
                 idepmac_sleep_device(drive, idx, base);
                 spin_unlock_irq(drive->channel->lock);
@@ -1656,7 +1656,7 @@
 
         /* We resume processing on the lock group */
         spin_lock_irq(drive->channel->lock);
- clear_bit(IDE_BUSY, &drive->channel->active);
+ clear_bit(IDE_BUSY, drive->channel->active);
         if (!list_empty(&drive->queue.queue_head))
                 do_ide_request(&drive->queue);
         spin_unlock_irq(drive->channel->lock);

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



This archive was generated by hypermail 2b29 : Fri Jun 07 2002 - 22:00:13 EST