ATAng stage 2: sync part of the ata_dma*() API. No operational changes.
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 18 Feb 2004 00:50:00 +0000 (00:50 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 18 Feb 2004 00:50:00 +0000 (00:50 +0000)
sys/dev/disk/ata/ata-all.c
sys/dev/disk/ata/ata-all.h
sys/dev/disk/ata/ata-disk.c
sys/dev/disk/ata/ata-dma.c
sys/dev/disk/ata/ata-isa.c
sys/dev/disk/ata/atapi-all.c

index ece7362..3ed11ce 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-all.c,v 1.50.2.45 2003/03/12 14:47:12 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-all.c,v 1.11 2004/02/18 00:37:08 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-all.c,v 1.12 2004/02/18 00:50:00 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -1377,7 +1377,7 @@ ata_change_mode(struct ata_device *atadev, int mode)
     }
 
     ATA_SLEEPLOCK_CH(atadev->channel, ATA_ACTIVE);
-    ata_dmainit(atadev->channel, atadev->unit, pmode, wmode, umode);
+    ata_dmainit(atadev, pmode, wmode, umode);
     ATA_UNLOCK_CH(atadev->channel);
     ata_start(atadev->channel); /* XXX SOS */
 }
index fbebbf6..29c5a64 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.26.2.12 2003/01/30 07:19:59 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-all.h,v 1.4 2003/11/30 20:14:18 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-all.h,v 1.5 2004/02/18 00:50:00 dillon Exp $
  */
 
 #ifndef _SYS_MPIPE_H_
@@ -272,11 +272,11 @@ int ata_find_dev(device_t, u_int32_t, u_int32_t);
 
 void *ata_dmaalloc(struct ata_channel *, int, int);
 void ata_dmafree(struct ata_channel *, void *buf);
-void ata_dmainit(struct ata_channel *, int, int, int, int);
+void ata_dmainit(struct ata_device *, int, int, int);
 int ata_dmasetup(struct ata_channel *, int, struct ata_dmaentry *, caddr_t, int);
 void ata_dmastart(struct ata_channel *, int, struct ata_dmaentry *, int);
 int ata_dmastatus(struct ata_channel *);
-int ata_dmadone(struct ata_channel *);
+int ata_dmadone(struct ata_device *);
 
 /* macros for locking a channel */
 #define ATA_LOCK_CH(ch, value)\
index dc69e44..08b1293 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.60.2.24 2003/01/30 07:19:59 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-disk.c,v 1.10 2004/02/18 00:37:08 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-disk.c,v 1.11 2004/02/18 00:50:00 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -180,11 +180,10 @@ ad_attach(struct ata_device *atadev, int alreadylocked)
 
     /* use DMA if allowed and if drive/controller supports it */
     if (ata_dma)
-       ata_dmainit(atadev->channel, atadev->unit, ata_pmode(atadev->param), 
+       ata_dmainit(atadev, ata_pmode(atadev->param), 
                    ata_wmode(atadev->param), ata_umode(atadev->param));
     else
-       ata_dmainit(atadev->channel, atadev->unit,
-                   ata_pmode(atadev->param), -1, -1);
+       ata_dmainit(atadev, ata_pmode(atadev->param), -1, -1);
 
     /* use tagged queueing if allowed and supported */
     if (ata_tags && ad_tagsupported(adp)) {
@@ -613,7 +612,7 @@ ad_interrupt(struct ad_request *request)
 
     /* finish DMA transfer */
     if (request->flags & ADR_F_DMA_USED)
-       dma_stat = ata_dmadone(adp->device->channel);
+       dma_stat = ata_dmadone(adp->device);
 
     /* do we have a corrected soft error ? */
     if (adp->device->channel->status & ATA_S_CORR)
@@ -640,8 +639,7 @@ ad_interrupt(struct ad_request *request)
            if (request->retries++ < AD_MAX_RETRIES)
                printf(" retrying\n");
            else {
-               ata_dmainit(adp->device->channel, adp->device->unit, 
-                           ata_pmode(adp->device->param), -1, -1);
+               ata_dmainit(adp->device, ata_pmode(adp->device->param), -1, -1);
                printf(" falling back to PIO mode\n");
            }
            TAILQ_INSERT_HEAD(&adp->device->channel->ata_queue, request, chain);
@@ -652,8 +650,7 @@ ad_interrupt(struct ad_request *request)
        if (request->flags & ADR_F_DMA_USED) {
            untimeout((timeout_t *)ad_timeout, request,request->timeout_handle);
            ad_invalidatequeue(adp, request);
-           ata_dmainit(adp->device->channel, adp->device->unit,
-                       ata_pmode(adp->device->param), -1, -1);
+           ata_dmainit(adp->device, ata_pmode(adp->device->param), -1, -1);
            request->flags |= ADR_F_FORCE_PIO;
            printf(" trying PIO mode\n");
            TAILQ_INSERT_HEAD(&adp->device->channel->ata_queue, request, chain);
@@ -896,11 +893,10 @@ ad_timeout(struct ad_request *request)
               request->tag, request->serv);
 
     if (request->flags & ADR_F_DMA_USED) {
-       ata_dmadone(adp->device->channel);
+       ata_dmadone(adp->device);
        ad_invalidatequeue(adp, request);
        if (request->retries == AD_MAX_RETRIES) {
-           ata_dmainit(adp->device->channel, adp->device->unit,
-                       ata_pmode(adp->device->param), -1, -1);
+           ata_dmainit(adp->device, ata_pmode(adp->device->param), -1, -1);
            ata_prtdev(adp->device, "trying fallback to PIO mode\n");
            request->retries = 0;
        }
@@ -931,13 +927,11 @@ ad_reinit(struct ata_device *atadev)
     ata_command(atadev, ATA_C_SET_MULTI, 0,
                adp->transfersize / DEV_BSIZE, 0, ATA_WAIT_READY);
     if (adp->device->mode >= ATA_DMA)
-       ata_dmainit(atadev->channel, atadev->unit,
-                   ata_pmode(adp->device->param),
+       ata_dmainit(atadev, ata_pmode(adp->device->param),
                    ata_wmode(adp->device->param),
                    ata_umode(adp->device->param));
     else
-       ata_dmainit(atadev->channel, atadev->unit,
-                   ata_pmode(adp->device->param), -1, -1);
+       ata_dmainit(atadev, ata_pmode(adp->device->param), -1, -1);
 }
 
 void
index 6d51801..4ca9ed8 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.35.2.31 2003/05/07 16:46:11 jhb Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-dma.c,v 1.10 2004/01/28 12:48:49 joerg Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-dma.c,v 1.11 2004/02/18 00:50:00 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -79,10 +79,10 @@ ata_dmafree(struct ata_channel *ch, void *dmatab)
 }
 
 void
-ata_dmainit(struct ata_channel *ch, int device,
-           int apiomode, int wdmamode, int udmamode)
+ata_dmainit(struct ata_device *atadev, int apiomode, int wdmamode, int udmamode)
 {
-    struct ata_device *atadev = &ch->device[ATA_DEV(device)];
+    struct ata_channel *ch = atadev->channel;
+    int device = atadev->unit;
     device_t parent = device_get_parent(ch->dev);
     int devno = (ch->unit << 1) + ATA_DEV(device);
     int error;
@@ -1255,10 +1255,13 @@ ata_dmastart(struct ata_channel *ch, int device,
 }
 
 int
-ata_dmadone(struct ata_channel *ch)
+ata_dmadone(struct ata_device *atadev)
 {
+    struct ata_channel *ch;
     int error;
 
+    ch = atadev->channel;
+
     ATA_OUTB(ch->r_bmio, ATA_BMCMD_PORT, 
                ATA_INB(ch->r_bmio, ATA_BMCMD_PORT) & ~ATA_BMCMD_START_STOP);
     ch->flags &= ~ATA_DMA_ACTIVE;
index b818f80..c708ef1 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-isa.c,v 1.4.2.1 2002/03/18 08:37:33 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-isa.c,v 1.4 2003/11/30 20:14:18 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-isa.c,v 1.5 2004/02/18 00:50:00 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -120,8 +120,7 @@ ata_dmafree(struct ata_channel *ch, void *dmatab)
 }
 
 void
-ata_dmainit(struct ata_channel *ch, int device,
-           int piomode, int wdmamode, int udmamode)
+ata_dmainit(struct ata_device *atadev, int piomode, int wdmamode, int udmamode)
 {
 }
 
@@ -139,7 +138,7 @@ ata_dmastart(struct ata_channel *ch, int device,
 }
 
 int
-ata_dmadone(struct ata_channel *ch)
+ata_dmadone(struct ata_device *atadev)
 {
     return -1;
 }
index 3947853..07d959c 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-all.c,v 1.46.2.18 2002/10/31 23:10:33 thomas Exp $
- * $DragonFly: src/sys/dev/disk/ata/atapi-all.c,v 1.6 2004/02/18 00:37:08 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/atapi-all.c,v 1.7 2004/02/18 00:50:00 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -81,7 +81,7 @@ atapi_attach(struct ata_device *atadev, int alreadylocked)
     if (!alreadylocked)
        ATA_SLEEPLOCK_CH(atadev->channel, ATA_CONTROL);
     if (atapi_dma && !(atadev->param->drq_type == ATAPI_DRQT_INTR)) {
-       ata_dmainit(atadev->channel, atadev->unit,
+       ata_dmainit(atadev,
                    (ata_pmode(atadev->param) < 0) ? 
                    (atadev->param->support_dma ? 4:0):ata_pmode(atadev->param),
                    (ata_wmode(atadev->param) < 0) ? 
@@ -89,7 +89,7 @@ atapi_attach(struct ata_device *atadev, int alreadylocked)
                    ata_umode(atadev->param));
     }
     else
-       ata_dmainit(atadev->channel, atadev->unit,
+       ata_dmainit(atadev,
                    ata_pmode(atadev->param) < 0 ? 0 : ata_pmode(atadev->param),
                    -1, -1);
     ATA_UNLOCK_CH(atadev->channel);
@@ -372,7 +372,7 @@ atapi_interrupt(struct atapi_request *request)
     }
 
     if (request->flags & ATPR_F_DMA_USED) {
-       dma_stat = ata_dmadone(atadev->channel);
+       dma_stat = ata_dmadone(atadev);
        if ((atadev->channel->status & (ATA_S_ERROR | ATA_S_DWF)) ||
            dma_stat & ATA_BMSTAT_ERROR) {
            request->result = ATA_INB(atadev->channel->r_io, ATA_ERROR);
@@ -494,14 +494,14 @@ atapi_reinit(struct ata_device *atadev)
 {
     /* reinit device parameters */
      if (atadev->mode >= ATA_DMA)
-       ata_dmainit(atadev->channel, atadev->unit,
+       ata_dmainit(atadev,
                    (ata_pmode(atadev->param) < 0) ?
                    (atadev->param->support_dma ? 4:0):ata_pmode(atadev->param),
                    (ata_wmode(atadev->param) < 0) ? 
                    (atadev->param->support_dma ? 2:0):ata_wmode(atadev->param),
                    ata_umode(atadev->param));
     else
-       ata_dmainit(atadev->channel, atadev->unit,
+       ata_dmainit(atadev,
                    ata_pmode(atadev->param)<0 ? 0 : ata_pmode(atadev->param),
                    -1, -1);
 }
@@ -631,9 +631,9 @@ atapi_timeout(struct atapi_request *request)
               atapi_cmd2str(request->ccb[0]));
 
     if (request->flags & ATPR_F_DMA_USED) {
-       ata_dmadone(atadev->channel);
+       ata_dmadone(atadev);
        if (request->retries == ATAPI_MAX_RETRIES) {
-           ata_dmainit(atadev->channel, atadev->unit,
+           ata_dmainit(atadev,
                        (ata_pmode(atadev->param) < 0) ? 0 :
                         ata_pmode(atadev->param), -1, -1);
            ata_prtdev(atadev, "trying fallback to PIO mode\n");