aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/core/mmc.c
diff options
context:
space:
mode:
authorPierre Ossman <drzeus@drzeus.cx>2007-05-01 10:11:57 -0400
committerPierre Ossman <drzeus@drzeus.cx>2007-05-01 10:11:57 -0400
commitbd766312618d2ecc85bce663f95faec601447ecb (patch)
tree65b38b556f766d0e41c553989271db82c26e860d /drivers/mmc/core/mmc.c
parent6abaa0c9fec563538f2a28a682af8c89bb9b125c (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.c22
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 */
59static void mmc_decode_cid(struct mmc_card *card) 59static 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 */
112static void mmc_decode_csd(struct mmc_card *card) 113static 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 /*