]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/ata.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
[karo-tx-linux.git] / include / linux / ata.h
index b666b773e1118bb28171554d7e1846144f07d050..fed36418dd1c2fe8c1c084278080f2ff23169725 100644 (file)
@@ -704,9 +704,19 @@ static inline bool ata_id_wcache_enabled(const u16 *id)
 
 static inline bool ata_id_has_read_log_dma_ext(const u16 *id)
 {
+       /* Word 86 must have bit 15 set */
        if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15)))
                return false;
-       return id[ATA_ID_COMMAND_SET_3] & (1 << 3);
+
+       /* READ LOG DMA EXT support can be signaled either from word 119
+        * or from word 120. The format is the same for both words: Bit
+        * 15 must be cleared, bit 14 set and bit 3 set.
+        */
+       if ((id[ATA_ID_COMMAND_SET_3] & 0xC008) == 0x4008 ||
+           (id[ATA_ID_COMMAND_SET_4] & 0xC008) == 0x4008)
+               return true;
+
+       return false;
 }
 
 static inline bool ata_id_has_sense_reporting(const u16 *id)