The macros ata_id_has_lba() and ata_id_has_dma() seem to have their bits
reversed. LBA support is bit 9 of word 49 in the identify page, whereas
DMA support is bit 8 of word 49 in the identify page.
--- ata.original.h 2004-07-19 17:49:26.000000000 -0700
+++ ata.h 2004-07-19 17:49:05.000000000 -0700
@@ -209,8 +209,8 @@
#define ata_id_has_lba48(dev) ((dev)->id[83] & (1 << 10))
#define ata_id_has_wcache(dev) ((dev)->id[82] & (1 << 5))
#define ata_id_has_pm(dev) ((dev)->id[82] & (1 << 3))
-#define ata_id_has_lba(dev) ((dev)->id[49] & (1 << 8))
-#define ata_id_has_dma(dev) ((dev)->id[49] & (1 << 9))
+#define ata_id_has_lba(dev) ((dev)->id[49] & (1 << 9))
+#define ata_id_has_dma(dev) ((dev)->id[49] & (1 << 8))
#define ata_id_removeable(dev) ((dev)->id[0] & (1 << 7))
#define ata_id_u32(dev,n) \
(((u32) (dev)->id[(n) + 1] << 16) | ((u32) (dev)->id[(n)]))