Commit dbea8ae9 authored by Ulf Hansson's avatar Ulf Hansson
Browse files

mmc: core: Parse the SD SCR register for support of CMD48/49 and CMD58/59



In SD spec v4.x the support for CMD48/49 and CMD58/59 were introduced as
optional features. To let the card announce whether it supports the
commands, the SCR register has been extended with corresponding support
bits. Let's parse and store this information for later use.

Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Reviewed-by: default avatarShawn Lin <shawn.lin@rock-chips.com>
Acked-by: default avatarAvri Altman <avri.altman@wdc.com>
Link: https://lore.kernel.org/r/20210504161222.101536-9-ulf.hansson@linaro.org
parent 41e84fe1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -222,7 +222,9 @@ static int mmc_decode_scr(struct mmc_card *card)
	else
		card->erased_byte = 0x0;

	if (scr->sda_spec3)
	if (scr->sda_spec4)
		scr->cmds = UNSTUFF_BITS(resp, 32, 4);
	else if (scr->sda_spec3)
		scr->cmds = UNSTUFF_BITS(resp, 32, 2);

	/* SD Spec says: any SD Card shall set at least bits 0 and 2 */
+2 −0
Original line number Diff line number Diff line
@@ -139,6 +139,8 @@ struct sd_scr {
	unsigned char		cmds;
#define SD_SCR_CMD20_SUPPORT   (1<<0)
#define SD_SCR_CMD23_SUPPORT   (1<<1)
#define SD_SCR_CMD48_SUPPORT   (1<<2)
#define SD_SCR_CMD58_SUPPORT   (1<<3)
};

struct sd_ssr {