* [PATCH] libata: spin up + down disk, lk 2.4.32
@ 2005-12-07 12:36 Douglas Gilbert
2005-12-07 13:57 ` Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Douglas Gilbert @ 2005-12-07 12:36 UTC (permalink / raw)
To: linux-scsi, linux-ide, jgarzik
[-- Attachment #1: Type: text/plain, Size: 263 bytes --]
I was asked recently to port the START STOP UNIT
SCSI command in libata back to lk 2.4.32 .
Changelog:
- add START STOP UNIT SCSI command to libata
allowing SATA disks to be spun down and up
Signed-off-by: Douglas Gilbert <dougg@torque.net>
Doug Gilbert
[-- Attachment #2: libata2432ss.diff --]
[-- Type: text/x-patch, Size: 2717 bytes --]
--- linux/include/linux/ata.h 2005-11-23 22:17:01.000000000 +1000
+++ linux/include/linux/ata.h2432ss 2005-11-24 16:52:06.000000000 +1000
@@ -108,6 +108,8 @@
/* ATA device commands */
ATA_CMD_CHK_POWER = 0xE5, /* check power mode */
+ ATA_CMD_STANDBY = 0xE2, /* place in standby power mode */
+ ATA_CMD_IDLE = 0xE3, /* place in idle power mode */
ATA_CMD_EDD = 0x90, /* execute device diagnostic */
ATA_CMD_FLUSH = 0xE7,
ATA_CMD_FLUSH_EXT = 0xEA,
--- linux/drivers/scsi/libata-scsi.c 2005-11-23 22:17:01.000000000 +1000
+++ linux/drivers/scsi/libata-scsi.c2432ss 2005-11-24 17:09:21.000000000 +1000
@@ -350,6 +350,63 @@
}
/**
+ * ata_scsi_start_stop_xlat - Translate SCSI START STOP UNIT command
+ * @qc: Storage for translated ATA taskfile
+ * @scsicmd: SCSI command to translate
+ *
+ * Sets up an ATA taskfile to issue STANDBY (to stop) or READ VERIFY
+ * (to start). Perhaps these commands should be preceded by
+ * CHECK POWER MODE to see what power mode the device is already in.
+ *
+ * LOCKING:
+ * spin_lock_irqsave(host_set lock)
+ *
+ * RETURNS:
+ * Zero on success, non-zero on error.
+ */
+
+static unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc,
+ u8 *scsicmd)
+{
+ struct ata_taskfile *tf = &qc->tf;
+
+ /*
+ * Should probably precede any commands to change power mode with
+ * CHECK POWER MODE to see what the current state of the device is.
+ * The patch author does not know how to do this.
+ * D. Gilbert 20050731
+ */
+ tf->flags |= ATA_TFLAG_DEVICE | ATA_TFLAG_ISADDR;
+ tf->protocol = ATA_PROT_NODATA;
+ if (scsicmd[1] & 0x1) {
+ ; /* ignore IMMED bit, violates sat-r04 */
+ }
+ if (scsicmd[4] & 0x2)
+ return 1; /* LOEJ bit set not supported */
+ if (((scsicmd[4] >> 4) & 0xf) != 0)
+ return 1; /* power conditions not supported */
+ if (scsicmd[4] & 0x1) {
+ tf->nsect = 1; /* 1 sector, lba=0 */
+ tf->lbah = 0x0;
+ tf->lbam = 0x0;
+ tf->lbal = 0x0;
+ tf->device |= ATA_LBA;
+ tf->command = ATA_CMD_VERIFY; /* READ VERIFY */
+ } else {
+ tf->nsect = 0; /* time period value (0 implies now) */
+ tf->command = ATA_CMD_STANDBY;
+ }
+ /*
+ * Standby and Idle condition timers could be implemented but that
+ * would require libata to implement the Power condition mode page
+ * and allow the user to change it. Changing mode pages requires
+ * MODE SELECT to be implemented.
+ */
+
+ return 0;
+}
+
+/**
* ata_scsi_flush_xlat - Translate SCSI SYNCHRONIZE CACHE command
* @qc: Storage for translated ATA taskfile
* @scsicmd: SCSI command to translate (ignored)
@@ -1393,6 +1450,8 @@
case VERIFY:
case VERIFY_16:
return ata_scsi_verify_xlat;
+ case START_STOP:
+ return ata_scsi_start_stop_xlat;
}
return NULL;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] libata: spin up + down disk, lk 2.4.32
2005-12-07 12:36 [PATCH] libata: spin up + down disk, lk 2.4.32 Douglas Gilbert
@ 2005-12-07 13:57 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2005-12-07 13:57 UTC (permalink / raw)
To: dougg; +Cc: linux-scsi, linux-ide
Douglas Gilbert wrote:
> I was asked recently to port the START STOP UNIT
> SCSI command in libata back to lk 2.4.32 .
>
> Changelog:
> - add START STOP UNIT SCSI command to libata
> allowing SATA disks to be spun down and up
>
> Signed-off-by: Douglas Gilbert <dougg@torque.net>
It's already backported...
Jeff
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-12-07 13:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-07 12:36 [PATCH] libata: spin up + down disk, lk 2.4.32 Douglas Gilbert
2005-12-07 13:57 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).