diff options
Diffstat (limited to 'include/linux/ata.h')
-rw-r--r-- | include/linux/ata.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index 1ce19c1ef0e9..a26ebd25bac1 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -667,6 +667,15 @@ static inline int ata_id_has_dword_io(const u16 *id) | |||
667 | return 0; | 667 | return 0; |
668 | } | 668 | } |
669 | 669 | ||
670 | static inline int ata_id_has_unload(const u16 *id) | ||
671 | { | ||
672 | if (ata_id_major_version(id) >= 7 && | ||
673 | (id[ATA_ID_CFSSE] & 0xC000) == 0x4000 && | ||
674 | id[ATA_ID_CFSSE] & (1 << 13)) | ||
675 | return 1; | ||
676 | return 0; | ||
677 | } | ||
678 | |||
670 | static inline int ata_id_current_chs_valid(const u16 *id) | 679 | static inline int ata_id_current_chs_valid(const u16 *id) |
671 | { | 680 | { |
672 | /* For ATA-1 devices, if the INITIALIZE DEVICE PARAMETERS command | 681 | /* For ATA-1 devices, if the INITIALIZE DEVICE PARAMETERS command |
@@ -745,7 +754,7 @@ static inline int ata_ok(u8 status) | |||
745 | static inline int lba_28_ok(u64 block, u32 n_block) | 754 | static inline int lba_28_ok(u64 block, u32 n_block) |
746 | { | 755 | { |
747 | /* check the ending block number */ | 756 | /* check the ending block number */ |
748 | return ((block + n_block - 1) < ((u64)1 << 28)) && (n_block <= 256); | 757 | return ((block + n_block) < ((u64)1 << 28)) && (n_block <= 256); |
749 | } | 758 | } |
750 | 759 | ||
751 | static inline int lba_48_ok(u64 block, u32 n_block) | 760 | static inline int lba_48_ok(u64 block, u32 n_block) |