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
4 changed files with 12 additions and 4 deletions
|
@ -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);
|
blk_queue_logical_block_size(md->queue.queue, 512);
|
||||||
set_capacity(md->disk, size);
|
set_capacity(md->disk, size);
|
||||||
|
|
||||||
if (mmc_host_cmd23(card->host) &&
|
if (mmc_host_cmd23(card->host)) {
|
||||||
mmc_card_mmc(card))
|
if (mmc_card_mmc(card) ||
|
||||||
md->flags |= MMC_BLK_CMD23;
|
(mmc_card_sd(card) &&
|
||||||
|
card->scr.cmds & SD_SCR_CMD23_SUPPORT))
|
||||||
|
md->flags |= MMC_BLK_CMD23;
|
||||||
|
}
|
||||||
|
|
||||||
if (mmc_card_mmc(card) &&
|
if (mmc_card_mmc(card) &&
|
||||||
md->flags & MMC_BLK_CMD23 &&
|
md->flags & MMC_BLK_CMD23 &&
|
||||||
|
|
|
@ -203,6 +203,8 @@ static int mmc_decode_scr(struct mmc_card *card)
|
||||||
else
|
else
|
||||||
card->erased_byte = 0x0;
|
card->erased_byte = 0x0;
|
||||||
|
|
||||||
|
if (scr->sda_spec3)
|
||||||
|
scr->cmds = UNSTUFF_BITS(resp, 32, 2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,9 @@ struct sd_scr {
|
||||||
unsigned char bus_widths;
|
unsigned char bus_widths;
|
||||||
#define SD_SCR_BUS_WIDTH_1 (1<<0)
|
#define SD_SCR_BUS_WIDTH_1 (1<<0)
|
||||||
#define SD_SCR_BUS_WIDTH_4 (1<<2)
|
#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 {
|
struct sd_ssr {
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
|
|
||||||
#define SCR_SPEC_VER_0 0 /* Implements system specification 1.0 - 1.01 */
|
#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_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
|
* SD bus widths
|
||||||
|
|
Loading…
Add table
Reference in a new issue