|
@@ -127,6 +127,7 @@ static int mmc_decode_csd(struct mmc_card *card)
|
|
csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
|
|
csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
|
|
csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
|
|
csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
|
|
csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
|
|
csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
|
|
|
|
+ csd->dsr_imp = UNSTUFF_BITS(resp, 76, 1);
|
|
csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
|
|
csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
|
|
csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
|
|
csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
|
|
csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
|
|
csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
|
|
@@ -953,6 +954,13 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
|
|
mmc_decode_cid(card);
|
|
mmc_decode_cid(card);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * handling only for cards supporting DSR and hosts requesting
|
|
|
|
+ * DSR configuration
|
|
|
|
+ */
|
|
|
|
+ if (card->csd.dsr_imp && host->dsr_req)
|
|
|
|
+ mmc_set_dsr(host);
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Select card, as all following commands rely on that.
|
|
* Select card, as all following commands rely on that.
|
|
*/
|
|
*/
|