diff options
Diffstat (limited to 'include/linux/ata.h')
| -rw-r--r-- | include/linux/ata.h | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index a53318b8cbd0..6617c9f8f2ca 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
| @@ -89,6 +89,8 @@ enum { | |||
| 89 | ATA_ID_DLF = 128, | 89 | ATA_ID_DLF = 128, |
| 90 | ATA_ID_CSFO = 129, | 90 | ATA_ID_CSFO = 129, |
| 91 | ATA_ID_CFA_POWER = 160, | 91 | ATA_ID_CFA_POWER = 160, |
| 92 | ATA_ID_CFA_KEY_MGMT = 162, | ||
| 93 | ATA_ID_CFA_MODES = 163, | ||
| 92 | ATA_ID_ROT_SPEED = 217, | 94 | ATA_ID_ROT_SPEED = 217, |
| 93 | ATA_ID_PIO4 = (1 << 1), | 95 | ATA_ID_PIO4 = (1 << 1), |
| 94 | 96 | ||
| @@ -106,6 +108,8 @@ enum { | |||
| 106 | ATA_PIO5 = ATA_PIO4 | (1 << 5), | 108 | ATA_PIO5 = ATA_PIO4 | (1 << 5), |
| 107 | ATA_PIO6 = ATA_PIO5 | (1 << 6), | 109 | ATA_PIO6 = ATA_PIO5 | (1 << 6), |
| 108 | 110 | ||
| 111 | ATA_PIO4_ONLY = (1 << 4), | ||
| 112 | |||
| 109 | ATA_SWDMA0 = (1 << 0), | 113 | ATA_SWDMA0 = (1 << 0), |
| 110 | ATA_SWDMA1 = ATA_SWDMA0 | (1 << 1), | 114 | ATA_SWDMA1 = ATA_SWDMA0 | (1 << 1), |
| 111 | ATA_SWDMA2 = ATA_SWDMA1 | (1 << 2), | 115 | ATA_SWDMA2 = ATA_SWDMA1 | (1 << 2), |
| @@ -115,6 +119,8 @@ enum { | |||
| 115 | ATA_MWDMA0 = (1 << 0), | 119 | ATA_MWDMA0 = (1 << 0), |
| 116 | ATA_MWDMA1 = ATA_MWDMA0 | (1 << 1), | 120 | ATA_MWDMA1 = ATA_MWDMA0 | (1 << 1), |
| 117 | ATA_MWDMA2 = ATA_MWDMA1 | (1 << 2), | 121 | ATA_MWDMA2 = ATA_MWDMA1 | (1 << 2), |
| 122 | ATA_MWDMA3 = ATA_MWDMA2 | (1 << 3), | ||
| 123 | ATA_MWDMA4 = ATA_MWDMA3 | (1 << 4), | ||
| 118 | 124 | ||
| 119 | ATA_MWDMA12_ONLY = (1 << 1) | (1 << 2), | 125 | ATA_MWDMA12_ONLY = (1 << 1) | (1 << 2), |
| 120 | ATA_MWDMA2_ONLY = (1 << 2), | 126 | ATA_MWDMA2_ONLY = (1 << 2), |
| @@ -129,6 +135,8 @@ enum { | |||
| 129 | ATA_UDMA7 = ATA_UDMA6 | (1 << 7), | 135 | ATA_UDMA7 = ATA_UDMA6 | (1 << 7), |
| 130 | /* ATA_UDMA7 is just for completeness... doesn't exist (yet?). */ | 136 | /* ATA_UDMA7 is just for completeness... doesn't exist (yet?). */ |
| 131 | 137 | ||
| 138 | ATA_UDMA24_ONLY = (1 << 2) | (1 << 4), | ||
| 139 | |||
| 132 | ATA_UDMA_MASK_40C = ATA_UDMA2, /* udma0-2 */ | 140 | ATA_UDMA_MASK_40C = ATA_UDMA2, /* udma0-2 */ |
| 133 | 141 | ||
| 134 | /* DMA-related */ | 142 | /* DMA-related */ |
| @@ -242,8 +250,6 @@ enum { | |||
| 242 | ATA_CMD_MEDIA_UNLOCK = 0xDF, | 250 | ATA_CMD_MEDIA_UNLOCK = 0xDF, |
| 243 | /* marked obsolete in the ATA/ATAPI-7 spec */ | 251 | /* marked obsolete in the ATA/ATAPI-7 spec */ |
| 244 | ATA_CMD_RESTORE = 0x10, | 252 | ATA_CMD_RESTORE = 0x10, |
| 245 | /* EXABYTE specific */ | ||
| 246 | ATA_EXABYTE_ENABLE_NEST = 0xF0, | ||
| 247 | 253 | ||
| 248 | /* READ_LOG_EXT pages */ | 254 | /* READ_LOG_EXT pages */ |
| 249 | ATA_LOG_SATA_NCQ = 0x10, | 255 | ATA_LOG_SATA_NCQ = 0x10, |
| @@ -731,12 +737,17 @@ static inline int ata_id_current_chs_valid(const u16 *id) | |||
| 731 | 737 | ||
| 732 | static inline int ata_id_is_cfa(const u16 *id) | 738 | static inline int ata_id_is_cfa(const u16 *id) |
| 733 | { | 739 | { |
| 734 | if (id[ATA_ID_CONFIG] == 0x848A) /* Standard CF */ | 740 | if (id[ATA_ID_CONFIG] == 0x848A) /* Traditional CF */ |
| 735 | return 1; | 741 | return 1; |
| 736 | /* Could be CF hiding as standard ATA */ | 742 | /* |
| 737 | if (ata_id_major_version(id) >= 3 && | 743 | * CF specs don't require specific value in the word 0 anymore and yet |
| 738 | id[ATA_ID_COMMAND_SET_1] != 0xFFFF && | 744 | * they forbid to report the ATA version in the word 80 and require the |
| 739 | (id[ATA_ID_COMMAND_SET_1] & (1 << 2))) | 745 | * CFA feature set support to be indicated in the word 83 in this case. |
| 746 | * Unfortunately, some cards only follow either of this requirements, | ||
| 747 | * and while those that don't indicate CFA feature support need some | ||
| 748 | * sort of quirk list, it seems impractical for the ones that do... | ||
| 749 | */ | ||
| 750 | if ((id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004) | ||
| 740 | return 1; | 751 | return 1; |
| 741 | return 0; | 752 | return 0; |
| 742 | } | 753 | } |
