libata: Handle drives that require a spin-up command before first access
authorMark Lord <liml@rtr.ca>
Tue, 17 Apr 2007 22:26:07 +0000 (18:26 -0400)
committerJeff Garzik <jeff@garzik.org>
Sat, 28 Apr 2007 18:40:40 +0000 (14:40 -0400)
commit169439c2e35f01e7832a9b4fc8a7446980c3d593
tree83cbc6898be74b2bfb49bd4eaa966913c49de9da
parent1e999736cafdffc374f22eed37b291129ef82e4e
libata: Handle drives that require a spin-up command before first access

(S)ATA drives can be configured for "power-up in standby",
a mode whereby a specific "spin up now!" command is required
before the first media access.

Currently, a drive with this feature enabled can not be used at all
with libata, and once in this mode, the drive becomes a doorstop.

The older drivers/ide subsystem at least enumerates the drive,
so that it can be woken up after the fact from a userspace HDIO_*
command, but not libata.

This patch adds support to libata for the "power-up in standby"
mode where a "spin up now!" command (SET_FEATURES) is needed.
With this, libata will recognize such drives, spin them up,
and then re-IDENTIFY them if necessary to get a full/complete
set of drive features data.

Drives in this state are determined by looking for
special values in id[2], as documented in the current ATA specs.

Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-core.c
include/linux/ata.h