diff mbox

[v3] mmc: core: remove the check of mmc_card_blockaddr for SD cards

Message ID 1502071634-94106-1-git-send-email-shawn.lin@rock-chips.com (mailing list archive)
State New, archived
Headers show

Commit Message

Shawn Lin Aug. 7, 2017, 2:07 a.m. UTC
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>

---

Changes in v3:
- still keep data->timeout_clks = 0 for hosts

Changes in v2:
- rephrase the changelog and only remove mmc_card_blockaddr.

 drivers/mmc/core/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ulf Hansson Aug. 8, 2017, 10:38 a.m. UTC | #1
On 7 August 2017 at 04:07, Shawn Lin <shawn.lin@rock-chips.com> wrote:
> 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>

Thanks, applied for next!

Kind regards
Uffe

>
> ---
>
> Changes in v3:
> - still keep data->timeout_clks = 0 for hosts
>
> Changes in v2:
> - rephrase the changelog and only remove mmc_card_blockaddr.
>
>  drivers/mmc/core/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index 6177eb0..5dd1c00 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -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;
>                 }
> --
> 1.9.1
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 6177eb0..5dd1c00 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -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;
 		}