summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gardner <gardner.ben@gmail.com>2010-02-23 12:41:22 -0600
committerJeff Garzik <jgarzik@redhat.com>2010-03-01 15:11:32 -0500
commit4b7d1c0509d0d07edc731f990791dc5518e51617 (patch)
tree25b85383e6b994fb4246e1c0ea5ba12b1b853d17
parent7e044a12c73f474e59f1ddecf08d6781c7830f0f (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>
-rw-r--r--include/linux/ata.h3
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)
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