aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorLennert Buytenhek <buytenh@wantstofly.org>2007-01-29 13:28:47 +0100
committerJeff Garzik <jeff@garzik.org>2007-01-30 09:14:56 -0500
commit7a0f1c8a4b1052da7efc7715e2e557255b632712 (patch)
tree18c8e67ea96005ce138c44f8df12b4a3e26becd1 /drivers/ata
parentpata_sil680: PIO1 taskfile transfers overclocking fix (repost) (diff)
downloadlinux-dev-7a0f1c8a4b1052da7efc7715e2e557255b632712.tar.xz
linux-dev-7a0f1c8a4b1052da7efc7715e2e557255b632712.zip
ata_if_xfermask() word 51 fix
If word 53 bit 1 isn't set, the maximum PIO mode is indicated by the upper 8 bits of word 51, not the lower 8 bits. Fixes PIO mode detection on old Compact Flash cards. Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-core.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index a388a8df0043..cf707029352e 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1037,7 +1037,7 @@ static unsigned int ata_id_xfermask(const u16 *id)
* the PIO timing number for the maximum. Turn it into
* a mask.
*/
- u8 mode = id[ATA_ID_OLD_PIO_MODES] & 0xFF;
+ u8 mode = (id[ATA_ID_OLD_PIO_MODES] >> 8) & 0xFF;
if (mode < 5) /* Valid PIO range */
pio_mask = (2 << mode) - 1;
else