summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2004-04-30 16:21:34 +0000
committersos <sos@FreeBSD.org>2004-04-30 16:21:34 +0000
commit266c927d2d2cfa7215cda0904f1dd5eda7326c08 (patch)
tree71f292f51710a31f6f3816e3a505bf019ad96e72 /sys/dev/ata
parent71ff258eedd769521dfb98d6f01a83f8a735141f (diff)
downloadFreeBSD-src-266c927d2d2cfa7215cda0904f1dd5eda7326c08.zip
FreeBSD-src-266c927d2d2cfa7215cda0904f1dd5eda7326c08.tar.gz
Spring cleanup of macros
Diffstat (limited to 'sys/dev/ata')
-rw-r--r--sys/dev/ata/ata-all.c6
-rw-r--r--sys/dev/ata/ata-all.h103
-rw-r--r--sys/dev/ata/ata-commands.h4
-rw-r--r--sys/dev/ata/ata-disk.h4
-rw-r--r--sys/dev/ata/ata-isa.c4
-rw-r--r--sys/dev/ata/ata-lowlevel.c2
-rw-r--r--sys/dev/ata/ata-pci.h2
-rw-r--r--sys/dev/ata/ata-queue.c2
-rw-r--r--sys/dev/ata/atapi-cd.h10
-rw-r--r--sys/dev/ata/atapi-fd.h4
-rw-r--r--sys/dev/ata/atapi-tape.h4
11 files changed, 45 insertions, 100 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c
index c70a858..a781e96 100644
--- a/sys/dev/ata/ata-all.c
+++ b/sys/dev/ata/ata-all.c
@@ -120,7 +120,7 @@ ata_probe(device_t dev)
ch->device[SLAVE].unit = ATA_SLAVE;
ch->device[SLAVE].mode = ATA_PIO;
ch->dev = dev;
- ch->state = ATA_IDLE;
+ ch->lock = ATA_IDLE;
/* initialise device(s) on this channel */
ch->locking(ch, ATA_LF_LOCK);
@@ -236,7 +236,7 @@ ata_reinit(struct ata_channel *ch)
/* reset the HW */
if (bootverbose)
ata_printf(ch, -1, "reiniting channel ..\n");
- ATA_FORCELOCK_CH(ch, ATA_CONTROL);
+ ATA_FORCELOCK_CH(ch);
ch->flags |= ATA_IMMEDIATE_MODE;
ch->running = NULL;
devices = ch->devices;
@@ -317,7 +317,7 @@ ata_suspend(device_t dev)
return ENXIO;
ch->locking(ch, ATA_LF_LOCK);
- ATA_SLEEPLOCK_CH(ch, ATA_CONTROL);
+ ATA_SLEEPLOCK_CH(ch);
return 0;
}
diff --git a/sys/dev/ata/ata-all.h b/sys/dev/ata/ata-all.h
index b2a4116..7e78c2f 100644
--- a/sys/dev/ata/ata-all.h
+++ b/sys/dev/ata/ata-all.h
@@ -350,10 +350,9 @@ struct ata_channel {
#define ATA_ATAPI_MASTER 0x04
#define ATA_ATAPI_SLAVE 0x08
- int state; /* ATA channel state control */
+ int lock; /* ATA channel lock */
#define ATA_IDLE 0x0000
#define ATA_ACTIVE 0x0001
-#define ATA_CONTROL 0x0002
void (*reset)(struct ata_channel *);
void (*locking)(struct ata_channel *, int);
@@ -425,16 +424,17 @@ extern uma_zone_t ata_zone;
#define ata_free_request(request) uma_zfree(ata_zone, request)
/* macros for locking a channel */
-#define ATA_LOCK_CH(ch, value) \
- atomic_cmpset_acq_int(&(ch)->state, ATA_IDLE, (value))
+#define ATA_LOCK_CH(ch) \
+ atomic_cmpset_acq_int(&(ch)->lock, ATA_IDLE, ATA_ACTIVE)
-#define ATA_SLEEPLOCK_CH(ch, value) \
- while (!atomic_cmpset_acq_int(&(ch)->state, ATA_IDLE, (value))) \
- tsleep((caddr_t)&(ch), PRIBIO, "atalck", 1);
+#define ATA_SLEEPLOCK_CH(ch) \
+ while (!ATA_LOCK_CH(ch)) tsleep((caddr_t)&(ch), PRIBIO, "atalck", 1);
-#define ATA_FORCELOCK_CH(ch, value) atomic_store_rel_int(&(ch)->state, (value))
+#define ATA_FORCELOCK_CH(ch) \
+ atomic_store_rel_int(&(ch)->lock, ATA_ACTIVE)
-#define ATA_UNLOCK_CH(ch) atomic_store_rel_int(&(ch)->state, ATA_IDLE)
+#define ATA_UNLOCK_CH(ch) \
+ atomic_store_rel_int(&(ch)->lock, ATA_IDLE)
/* macros to hide busspace uglyness */
#define ATA_INB(res, offset) \
@@ -489,101 +489,44 @@ extern uma_zone_t ata_zone;
rman_get_bushandle((res)), \
(offset), (addr), (count))
-#define ATA_IDX_SET(ch, idx) \
- ATA_OUTB(ch->r_io[ATA_IDX_ADDR].res, ch->r_io[ATA_IDX_ADDR].offset, \
- ch->r_io[idx].offset)
-
#define ATA_IDX_INB(ch, idx) \
- ((ch->r_io[idx].res) \
- ? ATA_INB(ch->r_io[idx].res, ch->r_io[idx].offset) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_INB(ch->r_io[ATA_IDX_DATA].res, ch->r_io[ATA_IDX_DATA].offset)))
+ ATA_INB(ch->r_io[idx].res, ch->r_io[idx].offset)
#define ATA_IDX_INW(ch, idx) \
- ((ch->r_io[idx].res) \
- ? ATA_INW(ch->r_io[idx].res, ch->r_io[idx].offset) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_INW(ch->r_io[ATA_IDX_DATA].res, ch->r_io[ATA_IDX_DATA].offset)))
+ ATA_INW(ch->r_io[idx].res, ch->r_io[idx].offset)
#define ATA_IDX_INL(ch, idx) \
- ((ch->r_io[idx].res) \
- ? ATA_INL(ch->r_io[idx].res, ch->r_io[idx].offset) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_INL(ch->r_io[ATA_IDX_DATA].res, ch->r_io[ATA_IDX_DATA].offset)))
+ ATA_INL(ch->r_io[idx].res, ch->r_io[idx].offset)
#define ATA_IDX_INSW(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_INSW(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_INSW(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_INSW(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
#define ATA_IDX_INSW_STRM(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_INSW_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_INSW_STRM(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_INSW_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
#define ATA_IDX_INSL(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_INSL(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_INSL(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_INSL(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
#define ATA_IDX_INSL_STRM(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_INSL_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_INSL_STRM(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_INSL_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
#define ATA_IDX_OUTB(ch, idx, value) \
- ((ch->r_io[idx].res) \
- ? ATA_OUTB(ch->r_io[idx].res, ch->r_io[idx].offset, value) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_OUTB(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, value)))
+ ATA_OUTB(ch->r_io[idx].res, ch->r_io[idx].offset, value)
#define ATA_IDX_OUTW(ch, idx, value) \
- ((ch->r_io[idx].res) \
- ? ATA_OUTW(ch->r_io[idx].res, ch->r_io[idx].offset, value) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_OUTW(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, value)))
+ ATA_OUTW(ch->r_io[idx].res, ch->r_io[idx].offset, value)
#define ATA_IDX_OUTL(ch, idx, value) \
- ((ch->r_io[idx].res) \
- ? ATA_OUTL(ch->r_io[idx].res, ch->r_io[idx].offset, value) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_OUTL(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, value)))
+ ATA_OUTL(ch->r_io[idx].res, ch->r_io[idx].offset, value)
#define ATA_IDX_OUTSW(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_OUTSW(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_OUTSW(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_OUTSW(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
#define ATA_IDX_OUTSW_STRM(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_OUTSW_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_OUTSW_STRM(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_OUTSW_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
#define ATA_IDX_OUTSL(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_OUTSL(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_OUTSL(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_OUTSL(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
#define ATA_IDX_OUTSL_STRM(ch, idx, addr, count) \
- ((ch->r_io[idx].res) \
- ? ATA_OUTSL_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count) \
- : (ATA_IDX_SET(ch, idx), \
- ATA_OUTSL_STRM(ch->r_io[ATA_IDX_DATA].res, \
- ch->r_io[ATA_IDX_DATA].offset, addr, count)))
+ ATA_OUTSL_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, addr, count)
diff --git a/sys/dev/ata/ata-commands.h b/sys/dev/ata/ata-commands.h
index 8b81b00..ea27d68 100644
--- a/sys/dev/ata/ata-commands.h
+++ b/sys/dev/ata/ata-commands.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1998 - 2003 Søren Schmidt <sos@FreeBSD.org>
+ * Copyright (c) 1998 - 2004 Søren Schmidt <sos@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -43,6 +43,8 @@
#define ATA_WRITE_DMA48 0x35 /* write w/DMA command */
#define ATA_WRITE_DMA_QUEUED48 0x36 /* write w/DMA QUEUED command */
#define ATA_WRITE_MUL48 0x39 /* write multi command */
+#define ATA_READ_FPDMA_QUEUED 0x60 /* read w/DMA NCQ */
+#define ATA_WRITE_FPDMA_QUEUED 0x61 /* write w/DMA NCQ */
#define ATA_PACKET_CMD 0xa0 /* packet command */
#define ATA_ATAPI_IDENTIFY 0xa1 /* get ATAPI params*/
#define ATA_SERVICE 0xa2 /* service command */
diff --git a/sys/dev/ata/ata-disk.h b/sys/dev/ata/ata-disk.h
index 778169c..c24c4ae 100644
--- a/sys/dev/ata/ata-disk.h
+++ b/sys/dev/ata/ata-disk.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1998 - 2003 Søren Schmidt <sos@FreeBSD.org>
+ * Copyright (c) 1998 - 2004 Søren Schmidt <sos@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -45,7 +45,7 @@ struct ad_softc {
#define AD_F_TAG_ENABLED 0x0008
#define AD_F_RAID_SUBDISK 0x0010
- struct mtx queue_mtx; /* queue lock */
+ struct mtx queue_mtx; /* bio queue lock */
struct bio_queue_head queue; /* head of request queue */
struct disk *disk; /* disklabel/slice stuff */
};
diff --git a/sys/dev/ata/ata-isa.c b/sys/dev/ata/ata-isa.c
index eba0564..e793643 100644
--- a/sys/dev/ata/ata-isa.c
+++ b/sys/dev/ata/ata-isa.c
@@ -59,7 +59,7 @@ static struct isa_pnp_id ata_ids[] = {
};
static void
-ata_isa_lock(struct ata_channel *ch, int type)
+ata_isa_locknoop(struct ata_channel *ch, int type)
{
}
@@ -114,7 +114,7 @@ ata_isa_probe(device_t dev)
/* initialize softc for this channel */
ch->unit = 0;
ch->flags |= ATA_USE_16BIT;
- ch->locking = ata_isa_lock;
+ ch->locking = ata_isa_locknoop;
ch->device[MASTER].setmode = ata_isa_setmode;
ch->device[SLAVE].setmode = ata_isa_setmode;
ata_generic_hw(ch);
diff --git a/sys/dev/ata/ata-lowlevel.c b/sys/dev/ata/ata-lowlevel.c
index b21bfb6..8cb56a3 100644
--- a/sys/dev/ata/ata-lowlevel.c
+++ b/sys/dev/ata/ata-lowlevel.c
@@ -289,7 +289,7 @@ ata_generic_interrupt(void *data)
/* ignore this interrupt if there is no running request */
if (!request) {
- if (ATA_LOCK_CH(ch, ATA_CONTROL)) {
+ if (ATA_LOCK_CH(ch)) {
u_int8_t status = ATA_IDX_INB(ch, ATA_STATUS);
u_int8_t error = ATA_IDX_INB(ch, ATA_ERROR);
diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h
index 4329a09..741d3081 100644
--- a/sys/dev/ata/ata-pci.h
+++ b/sys/dev/ata/ata-pci.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2003 Søren Schmidt <sos@FreeBSD.org>
+ * Copyright (c) 2003, 2004 Søren Schmidt <sos@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/sys/dev/ata/ata-queue.c b/sys/dev/ata/ata-queue.c
index 975b7a0..8a6a10b 100644
--- a/sys/dev/ata/ata-queue.c
+++ b/sys/dev/ata/ata-queue.c
@@ -163,7 +163,7 @@ ata_start(struct ata_channel *ch)
/* lock the ATA HW for this request */
mtx_lock(&ch->queue_mtx);
ch->locking(ch, ATA_LF_LOCK);
- if (!ATA_LOCK_CH(ch, ATA_ACTIVE)) {
+ if (!ATA_LOCK_CH(ch)) {
mtx_unlock(&ch->queue_mtx);
return;
}
diff --git a/sys/dev/ata/atapi-cd.h b/sys/dev/ata/atapi-cd.h
index 352bffa..1618df5 100644
--- a/sys/dev/ata/atapi-cd.h
+++ b/sys/dev/ata/atapi-cd.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1998 - 2003 Søren Schmidt <sos@FreeBSD.org>
+ * Copyright (c) 1998 - 2004 Søren Schmidt <sos@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -301,7 +301,7 @@ struct acd_softc {
int flags; /* device state flags */
#define F_LOCKED 0x0001 /* this unit is locked */
- struct mtx queue_mtx; /* queue lock */
+ struct mtx queue_mtx; /* bio queue lock */
struct bio_queue_head queue; /* queue of i/o requests */
struct toc toc; /* table of disc contents */
struct audiopage au; /* audio page info */
@@ -312,9 +312,9 @@ struct acd_softc {
struct acd_softc **driver; /* softc's of changer slots */
int slot; /* this instance slot number */
time_t timestamp; /* this instance timestamp */
- u_int disk_size; /* size of current media */
- u_int block_size; /* blocksize currently used */
+ u_int32_t disk_size; /* size of current media */
+ u_int32_t block_size; /* blocksize currently used */
+ u_int32_t iomax; /* Max I/O request (bytes) */
struct g_geom *gp; /* geom instance */
struct g_provider *pp[MAXTRK+1]; /* providers */
- u_int iomax; /* Max I/O request (bytes) */
};
diff --git a/sys/dev/ata/atapi-fd.h b/sys/dev/ata/atapi-fd.h
index e51d1c3..4f37b0d 100644
--- a/sys/dev/ata/atapi-fd.h
+++ b/sys/dev/ata/atapi-fd.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1998 - 2003 Søren Schmidt <sos@FreeBSD.org>
+ * Copyright (c) 1998 - 2004 Søren Schmidt <sos@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -71,7 +71,7 @@ struct afd_cappage {
struct afd_softc {
struct ata_device *device; /* device softc */
int lun; /* logical device unit */
- struct mtx queue_mtx; /* queue lock */
+ struct mtx queue_mtx; /* bio queue lock */
struct bio_queue_head queue; /* queue of i/o requests */
struct afd_cappage cap; /* capabilities page info */
struct disk *disk; /* virtual drives */
diff --git a/sys/dev/ata/atapi-tape.h b/sys/dev/ata/atapi-tape.h
index 77c9076..15e3cbb 100644
--- a/sys/dev/ata/atapi-tape.h
+++ b/sys/dev/ata/atapi-tape.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1998 - 2003 Søren Schmidt <sos@FreeBSD.org>
+ * Copyright (c) 1998 - 2004 Søren Schmidt <sos@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -154,7 +154,7 @@ struct ast_softc {
#define F_ONSTREAM 0x0100 /* OnStream ADR device */
int blksize; /* block size (512 | 1024) */
- struct mtx queue_mtx; /* queue lock */
+ struct mtx queue_mtx; /* bio queue lock */
struct bio_queue_head queue; /* queue of i/o requests */
struct atapi_params *param; /* drive parameters table */
struct ast_cappage cap; /* capabilities page info */
OpenPOWER on IntegriCloud