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@xxxxxxxxxxxxxx> --- 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) -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html