Messages in this thread Patch in this message | | | From | Elias Oltmanns <> | Subject | [PATCH 2/5] Introduce ata_id_has_unload() | Date | Sat, 26 Jul 2008 08:24:35 +0200 |
| |
Add a function to check an ATA device's id for head unload support as specified in ATA-7.
Signed-off-by: Elias Oltmanns <eo@nebensachen.de> ---
include/linux/ata.h | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/include/linux/ata.h b/include/linux/ata.h index cf4ef6d..c92ac10 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -530,6 +530,21 @@ static inline bool ata_id_has_dipm(const u16 *id) } +static inline int ata_id_has_unload(const u16 *id) +{ + /* + * ATA-7 specifies two places to indicate unload feature support. + * Since I don't really understand the difference, I'll just check + * both and only return zero if none of them indicates otherwise. + */ + if ((id[ATA_ID_CFSSE] & 0xC000) == 0x4000 + && id[ATA_ID_CFSSE] & (1 << 13)) + return id[ATA_ID_CFSSE] & (1 << 13); + if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) == 0x4000) + return id[ATA_ID_CSF_DEFAULT] & (1 << 13); + return 0; +} + static inline int ata_id_has_fua(const u16 *id) { if ((id[ATA_ID_CFSSE] & 0xC000) != 0x4000)
| |