mmc: core: Block CMD23 support for UHS104/SDXC cards.
SD cards operating at UHS104 or better support SET_BLOCK_COUNT. Signed-off-by: Andrei Warkentin <andreiw@motorola.com> Reviewed-by: Arindam Nath <arindam.nath@amd.com> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
parent
e89d456fcd
commit
f0d89972b0
|
@ -1057,9 +1057,12 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
|
|||
blk_queue_logical_block_size(md->queue.queue, 512);
|
||||
set_capacity(md->disk, size);
|
||||
|
||||
if (mmc_host_cmd23(card->host) &&
|
||||
mmc_card_mmc(card))
|
||||
md->flags |= MMC_BLK_CMD23;
|
||||
if (mmc_host_cmd23(card->host)) {
|
||||
if (mmc_card_mmc(card) ||
|
||||
(mmc_card_sd(card) &&
|
||||
card->scr.cmds & SD_SCR_CMD23_SUPPORT))
|
||||
md->flags |= MMC_BLK_CMD23;
|
||||
}
|
||||
|
||||
if (mmc_card_mmc(card) &&
|
||||
md->flags & MMC_BLK_CMD23 &&
|
||||
|
|
|
@ -203,6 +203,8 @@ static int mmc_decode_scr(struct mmc_card *card)
|
|||
else
|
||||
card->erased_byte = 0x0;
|
||||
|
||||
if (scr->sda_spec3)
|
||||
scr->cmds = UNSTUFF_BITS(resp, 32, 2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -72,6 +72,9 @@ struct sd_scr {
|
|||
unsigned char bus_widths;
|
||||
#define SD_SCR_BUS_WIDTH_1 (1<<0)
|
||||
#define SD_SCR_BUS_WIDTH_4 (1<<2)
|
||||
unsigned char cmds;
|
||||
#define SD_SCR_CMD20_SUPPORT (1<<0)
|
||||
#define SD_SCR_CMD23_SUPPORT (1<<1)
|
||||
};
|
||||
|
||||
struct sd_ssr {
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
|
||||
#define SCR_SPEC_VER_0 0 /* Implements system specification 1.0 - 1.01 */
|
||||
#define SCR_SPEC_VER_1 1 /* Implements system specification 1.10 */
|
||||
#define SCR_SPEC_VER_2 2 /* Implements system specification 2.00 */
|
||||
#define SCR_SPEC_VER_2 2 /* Implements system specification 2.00-3.0X */
|
||||
|
||||
/*
|
||||
* SD bus widths
|
||||
|
|
Loading…
Reference in a new issue