aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Schmidt <sos@FreeBSD.org>2002-07-22 18:36:14 +0000
committerSøren Schmidt <sos@FreeBSD.org>2002-07-22 18:36:14 +0000
commit5c0d1ab990500ad2a8f72cff4796f42236c7c0e1 (patch)
tree712aa9083d96de5c74ffd320fc416be7c3aa6409
parent2dadf47412892ccb429a655de7c3a77992b417ad (diff)
Notes
-rw-r--r--sys/dev/ata/atapi-all.c7
-rw-r--r--sys/dev/ata/atapi-all.h1
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/ata/atapi-all.c b/sys/dev/ata/atapi-all.c
index 2b47ef4ac0949..27a1a3aca355e 100644
--- a/sys/dev/ata/atapi-all.c
+++ b/sys/dev/ata/atapi-all.c
@@ -199,15 +199,17 @@ atapi_queue_cmd(struct ata_device *atadev, int8_t *ccb, caddr_t data,
TAILQ_INSERT_HEAD(&atadev->channel->atapi_queue, request, chain);
else
TAILQ_INSERT_TAIL(&atadev->channel->atapi_queue, request, chain);
- splx(s);
ata_start(atadev->channel);
/* if callback used, then just return, gets called from interrupt context */
- if (callback)
+ if (callback) {
+ splx(s);
return 0;
+ }
/* wait for request to complete */
tsleep((caddr_t)request, PRIBIO, "atprq", 0);
+ splx(s);
error = request->error;
if (error)
bcopy(&request->sense, atadev->result, sizeof(struct atapi_reqsense));
@@ -660,6 +662,7 @@ atapi_cmd2str(u_int8_t cmd)
case 0x1a: return ("MODE_SENSE");
case 0x1b: return ("START_STOP");
case 0x1e: return ("PREVENT_ALLOW");
+ case 0x23: return ("ATAPI_READ_FORMAT_CAPACITIES");
case 0x25: return ("READ_CAPACITY");
case 0x28: return ("READ_BIG");
case 0x2a: return ("WRITE_BIG");
diff --git a/sys/dev/ata/atapi-all.h b/sys/dev/ata/atapi-all.h
index 63d4a7572cb21..92f123ea06edb 100644
--- a/sys/dev/ata/atapi-all.h
+++ b/sys/dev/ata/atapi-all.h
@@ -82,6 +82,7 @@
#define SS_RETENSION 0x02
#define SS_EJECT 0x04
#define ATAPI_PREVENT_ALLOW 0x1e /* media removal */
+#define ATAPI_READ_FORMAT_CAPACITIES 0x23 /* get format capacities */
#define ATAPI_READ_CAPACITY 0x25 /* get volume capacity */
#define ATAPI_READ_BIG 0x28 /* read data */
#define ATAPI_WRITE_BIG 0x2a /* write data */