mmc_decode_ext_csd(card, ext_csd) //mmc/core/mmc.c mmc_select_card_type(card); //mmc/core/mmc.c 根据caps的速度模式和extcsd读出的数据确定类型 读写erase_size(依赖于CID和Extended CSD) //切换分区 mmc_switch(card, ..., EXT_CSD_PART_CONFIG, ...) //CMD6 mmc/core/mmc_ops....
*/ err = mmc_send_csd(card, card->raw_csd); // 发送CMD9指令,MMC_SEND_CSD // 要求mmc card发送csd寄存器,存储到card->raw_csd中,也就是原始的csd寄存器的值。 // 此时mmc card还是处于standby state err = mmc_decode_csd(card); // 解析raw_csd,获取到各个bit的值并设置到card->csd中的...
// 此时mmc card还是处于standby state err = mmc_decode_csd(card); // 解析raw_csd,获取到各个bit的值并设置到card->csd中的相应成员上 err = mmc_decode_cid(card); // 解析raw_cid,获取到各个bit的值并设置到card->cid中的相应成员上 } /* * Select card, as all following commands rely on t...
h).mmc_decode_csd:对获取的csd寄存器值解析 i).mmc_decode_cid:对前面获取的cid寄存器解析 j).mmc_select_card:发送CMD7,在standby和transfer状态之间进行转换,此处转换到transfer状态 k).mmc_get_ext_csd->mmc_send_ext_csd->mmc_send_cxd_data->sg_init_one mmc_set_data_timeout->mmc_wait_for_req...
@@ -571,6 +573,7 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)card->erased_byte = 0x0;/* eMMC v4.5 or later */card->ext_csd.generic_cmd6_time = DEFAULT_CMD6_TIMEOUT_MS;if (card->ext_csd.rev >= 6) {card...
erase_group_def & 1) card->erase_size = card->ext_csd.hc_erase_size; else card->erase_size = card->csd.erase_size; mmc_init_erase(card); } /* * Given a 128-bit response, decode to our card CSD structure. */ static int mmc_decode_csd(struct mmc_card *card) { struct mmc_...
card->ext_csd.raw_hc_erase_gap_size; else card->wp_grp_size = card->csd.erase_size * (card->csd.wp_grp_size + 1); } /* * Given a 128-bit response, decode to our card CSD structure. */ @@ -186,6 +197,7 @@ static int mmc_decode_csd(struct mmc_card *card) b = UNST...
sdmmc_err_t sdmmc_mmc_send_ext_csd_data(sdmmc_card_t* card, void *out_data, size_t datalen); sdmmc_err_t sdmmc_mmc_switch(sdmmc_card_t* card, uint8_t set, uint8_t index, uint8_t value); sdmmc_err_t sdmmc_mmc_decode_cid(int mmc_ver, sdmmc_response_t resp, sdmm...
#include "sdio_cis.h" #include "bus.h" #define dev_to_mmc_card(d) container_of(d, struct mmc_card, dev) #define to_mmc_driver(d) container_of(d, struct mmc_driver, drv) /*显示mmc类型 */ static ssize_t mmc_type_show(struct device *dev, ...
err = mmc_decode_csd(card);if(err)gotofree_card; err = mmc_decode_cid(card);if(err)gotofree_card; }/* * Select card, as all following commands rely on that. */if(!mmc_host_is_spi(host)) { err = mmc_select_card(card);if(err)gotofree_card; ...