Commit cda56ac29f2d8288d62978272856884d26e0b47b
Committed by
Pierre Ossman
1 parent
559595a985
Exists in
master
and in
39 other branches
mmc: fix data timeout for SEND_EXT_CSD
Commit 0d3e0460f307e84904968aad6cff97bd688583d8 "MMC: CSD and CID timeout values" inadvertently broke the timeout for the MMC command SEND_EXT_CSD. This patch puts it back again. Depending on the characteristics of the controller, this bug may prevent the use of MMC cards. Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Showing 1 changed file with 9 additions and 6 deletions Side-by-side Diff
drivers/mmc/core/mmc_ops.c
... | ... | @@ -248,12 +248,15 @@ |
248 | 248 | |
249 | 249 | sg_init_one(&sg, data_buf, len); |
250 | 250 | |
251 | - /* | |
252 | - * The spec states that CSR and CID accesses have a timeout | |
253 | - * of 64 clock cycles. | |
254 | - */ | |
255 | - data.timeout_ns = 0; | |
256 | - data.timeout_clks = 64; | |
251 | + if (opcode == MMC_SEND_CSD || opcode == MMC_SEND_CID) { | |
252 | + /* | |
253 | + * The spec states that CSR and CID accesses have a timeout | |
254 | + * of 64 clock cycles. | |
255 | + */ | |
256 | + data.timeout_ns = 0; | |
257 | + data.timeout_clks = 64; | |
258 | + } else | |
259 | + mmc_set_data_timeout(&data, card); | |
257 | 260 | |
258 | 261 | mmc_wait_for_req(host, &mrq); |
259 | 262 |