diff options
author | Pierre Ossman <drzeus@drzeus.cx> | 2007-05-01 10:11:57 -0400 |
---|---|---|
committer | Pierre Ossman <drzeus@drzeus.cx> | 2007-05-01 10:11:57 -0400 |
commit | bd766312618d2ecc85bce663f95faec601447ecb (patch) | |
tree | 65b38b556f766d0e41c553989271db82c26e860d /drivers/mmc/core/mmc.c | |
parent | 6abaa0c9fec563538f2a28a682af8c89bb9b125c (diff) |
mmc: remove old card states
Remove card states that no longer make any sense.
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'drivers/mmc/core/mmc.c')
-rw-r--r-- | drivers/mmc/core/mmc.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 619581e4916..42cc2867ed7 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c | |||
@@ -56,7 +56,7 @@ static const unsigned int tacc_mant[] = { | |||
56 | /* | 56 | /* |
57 | * Given the decoded CSD structure, decode the raw CID to our CID structure. | 57 | * Given the decoded CSD structure, decode the raw CID to our CID structure. |
58 | */ | 58 | */ |
59 | static void mmc_decode_cid(struct mmc_card *card) | 59 | static int mmc_decode_cid(struct mmc_card *card) |
60 | { | 60 | { |
61 | u32 *resp = card->raw_cid; | 61 | u32 *resp = card->raw_cid; |
62 | 62 | ||
@@ -101,15 +101,16 @@ static void mmc_decode_cid(struct mmc_card *card) | |||
101 | default: | 101 | default: |
102 | printk("%s: card has unknown MMCA version %d\n", | 102 | printk("%s: card has unknown MMCA version %d\n", |
103 | mmc_hostname(card->host), card->csd.mmca_vsn); | 103 | mmc_hostname(card->host), card->csd.mmca_vsn); |
104 | mmc_card_set_bad(card); | 104 | return -EINVAL; |
105 | break; | ||
106 | } | 105 | } |
106 | |||
107 | return 0; | ||
107 | } | 108 | } |
108 | 109 | ||
109 | /* | 110 | /* |
110 | * Given a 128-bit response, decode to our card CSD structure. | 111 | * Given a 128-bit response, decode to our card CSD structure. |
111 | */ | 112 | */ |
112 | static void mmc_decode_csd(struct mmc_card *card) | 113 | static int mmc_decode_csd(struct mmc_card *card) |
113 | { | 114 | { |
114 | struct mmc_csd *csd = &card->csd; | 115 | struct mmc_csd *csd = &card->csd; |
115 | unsigned int e, m, csd_struct; | 116 | unsigned int e, m, csd_struct; |
@@ -123,8 +124,7 @@ static void mmc_decode_csd(struct mmc_card *card) | |||
123 | if (csd_struct != 1 && csd_struct != 2) { | 124 | if (csd_struct != 1 && csd_struct != 2) { |
124 | printk("%s: unrecognised CSD structure version %d\n", | 125 | printk("%s: unrecognised CSD structure version %d\n", |
125 | mmc_hostname(card->host), csd_struct); | 126 | mmc_hostname(card->host), csd_struct); |
126 | mmc_card_set_bad(card); | 127 | return -EINVAL; |
127 | return; | ||
128 | } | 128 | } |
129 | 129 | ||
130 | csd->mmca_vsn = UNSTUFF_BITS(resp, 122, 4); | 130 | csd->mmca_vsn = UNSTUFF_BITS(resp, 122, 4); |
@@ -149,6 +149,8 @@ static void mmc_decode_csd(struct mmc_card *card) | |||
149 | csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3); | 149 | csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3); |
150 | csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4); | 150 | csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4); |
151 | csd->write_partial = UNSTUFF_BITS(resp, 21, 1); | 151 | csd->write_partial = UNSTUFF_BITS(resp, 21, 1); |
152 | |||
153 | return 0; | ||
152 | } | 154 | } |
153 | 155 | ||
154 | /* | 156 | /* |
@@ -300,8 +302,12 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr, | |||
300 | if (err != MMC_ERR_NONE) | 302 | if (err != MMC_ERR_NONE) |
301 | goto free_card; | 303 | goto free_card; |
302 | 304 | ||
303 | mmc_decode_csd(card); | 305 | err = mmc_decode_csd(card); |
304 | mmc_decode_cid(card); | 306 | if (err < 0) |
307 | goto free_card; | ||
308 | err = mmc_decode_cid(card); | ||
309 | if (err < 0) | ||
310 | goto free_card; | ||
305 | } | 311 | } |
306 | 312 | ||
307 | /* | 313 | /* |