diff options
author | Ben Gardner <gardner.ben@gmail.com> | 2010-02-23 13:41:22 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2010-03-01 15:11:32 -0500 |
commit | 4b7d1c0509d0d07edc731f990791dc5518e51617 (patch) | |
tree | 25b85383e6b994fb4246e1c0ea5ba12b1b853d17 /include/linux/ata.h | |
parent | 7e044a12c73f474e59f1ddecf08d6781c7830f0f (diff) |
ata: Detect Delkin Devices compact flash
I have a Delkin Devices compact flash card that isn't being recognized using the
SATA/PATA drivers.
The card is recognized and works with the deprecated ATA drivers.
The error I am seeing is:
ata1.00: failed to IDENTIFY (device reports invalid type, err_mask=0x0)
I tracked it down to ata_id_is_cfa() in include/linux/ata.h.
The Delkin card has id[0] set to 0x844a and id[83] set to 0.
This isn't what the kernel expects and is probably incorrect.
The simplest work-around is to add a check for 0x844a to ata_id_is_cfa().
Signed-off-by: Ben Gardner <gardner.ben@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'include/linux/ata.h')
-rw-r--r-- | include/linux/ata.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index 20f31567ccee..b4c85e2adef5 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -841,7 +841,8 @@ static inline int ata_id_current_chs_valid(const u16 *id) | |||
841 | 841 | ||
842 | static inline int ata_id_is_cfa(const u16 *id) | 842 | static inline int ata_id_is_cfa(const u16 *id) |
843 | { | 843 | { |
844 | if (id[ATA_ID_CONFIG] == 0x848A) /* Traditional CF */ | 844 | if ((id[ATA_ID_CONFIG] == 0x848A) || /* Traditional CF */ |
845 | (id[ATA_ID_CONFIG] == 0x844A)) /* Delkin Devices CF */ | ||
845 | return 1; | 846 | return 1; |
846 | /* | 847 | /* |
847 | * CF specs don't require specific value in the word 0 anymore and yet | 848 | * CF specs don't require specific value in the word 0 anymore and yet |