mmc: core: remove the check of mmc_card_blockaddr for SD cards
authorShawn Lin <shawn.lin@rock-chips.com>
Mon, 7 Aug 2017 02:07:14 +0000 (10:07 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 30 Aug 2017 12:01:51 +0000 (14:01 +0200)
Per the SD physical layer simplified specification V4.10,
section 4.6.2, CSD version 1.0 SD card should use taac, nsac
and r2w_factor for calculating the data access time. But the
taac and nsac for SDHC(CSD version 2.0) are always fixed and
the software should use the recommended value for timeout. When
parsing the CSD, we sanely set them to zero for SDHC(CSD version
2.0), all the calculation for timeout_ns and timeout_clk is zero
as well. So what we actually want to limit here is either SDHC
case or unreasonable timeout reported by the cards. In principle
we should at least be able to remove the bogus check for the
mmc_card_blockaddr.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/core.c

index 6177eb09bf1b49edaeaa28e6ab036550d33819a9..5dd1c00d95f5ed94b33e3915029e9bfe8a6277a0 100644 (file)
@@ -763,7 +763,7 @@ void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card)
                /*
                 * SDHC cards always use these fixed values.
                 */
-               if (timeout_us > limit_us || mmc_card_blockaddr(card)) {
+               if (timeout_us > limit_us) {
                        data->timeout_ns = limit_us * 1000;
                        data->timeout_clks = 0;
                }