diff options
author | Ben Gardner <gardner.ben@gmail.com> | 2010-02-23 12:41:22 -0600 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2010-03-01 15:11:32 -0500 |
commit | 4b7d1c0509d0d07edc731f990791dc5518e51617 (patch) | |
tree | 25b85383e6b994fb4246e1c0ea5ba12b1b853d17 | |
parent | 7e044a12c73f474e59f1ddecf08d6781c7830f0f (diff) | |
download | linux-3.10-4b7d1c0509d0d07edc731f990791dc5518e51617.tar.gz linux-3.10-4b7d1c0509d0d07edc731f990791dc5518e51617.tar.bz2 linux-3.10-4b7d1c0509d0d07edc731f990791dc5518e51617.zip |
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>
-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 20f31567cce..b4c85e2adef 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) static inline int ata_id_is_cfa(const u16 *id) { - if (id[ATA_ID_CONFIG] == 0x848A) /* Traditional CF */ + if ((id[ATA_ID_CONFIG] == 0x848A) || /* Traditional CF */ + (id[ATA_ID_CONFIG] == 0x844A)) /* Delkin Devices CF */ return 1; /* * CF specs don't require specific value in the word 0 anymore and yet |