diff options
author | Lennert Buytenhek <buytenh@wantstofly.org> | 2007-01-29 07:28:47 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-01-30 09:14:56 -0500 |
commit | 7a0f1c8a4b1052da7efc7715e2e557255b632712 (patch) | |
tree | 18c8e67ea96005ce138c44f8df12b4a3e26becd1 /drivers/ata | |
parent | 5dcade90db19205b9ebb8241a22664560973f81a (diff) |
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.c | 2 |
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) | |||
1037 | * the PIO timing number for the maximum. Turn it into | 1037 | * the PIO timing number for the maximum. Turn it into |
1038 | * a mask. | 1038 | * a mask. |
1039 | */ | 1039 | */ |
1040 | u8 mode = id[ATA_ID_OLD_PIO_MODES] & 0xFF; | 1040 | u8 mode = (id[ATA_ID_OLD_PIO_MODES] >> 8) & 0xFF; |
1041 | if (mode < 5) /* Valid PIO range */ | 1041 | if (mode < 5) /* Valid PIO range */ |
1042 | pio_mask = (2 << mode) - 1; | 1042 | pio_mask = (2 << mode) - 1; |
1043 | else | 1043 | else |