From 41257fb9cd00a300f8cea3325e02faa499365b3e Mon Sep 17 00:00:00 2001 From: heyuanjie87 Date: Mon, 31 Jul 2023 20:51:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[sdio]=E7=BB=99card=E6=B7=BB=E5=8A=A0ext=5F?= =?UTF-8?q?csd=E6=88=90=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/include/drivers/mmcsd_card.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/drivers/include/drivers/mmcsd_card.h b/components/drivers/include/drivers/mmcsd_card.h index da10d1ecc61..445b4f1b063 100644 --- a/components/drivers/include/drivers/mmcsd_card.h +++ b/components/drivers/include/drivers/mmcsd_card.h @@ -164,6 +164,11 @@ struct rt_mmcsd_card { struct rt_sdio_cis cis; /* common tuple info */ struct rt_sdio_function *sdio_function[SDIO_MAX_FUNCTIONS + 1]; /* SDIO functions (devices) */ rt_list_t blk_devices; /* for block device list */ + + struct + { + rt_uint32_t cache_size; + } ext_csd; }; #ifdef __cplusplus From cdf97257ae7175fb4f093d9ce6d13ca086510441 Mon Sep 17 00:00:00 2001 From: heyuanjie87 Date: Mon, 31 Jul 2023 20:55:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[sdio]=E6=89=93=E5=BC=80emmc=E5=86=85?= =?UTF-8?q?=E9=83=A8cache?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/sdio/mmc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/components/drivers/sdio/mmc.c b/components/drivers/sdio/mmc.c index 567c1a4fa51..47c543396dc 100644 --- a/components/drivers/sdio/mmc.c +++ b/components/drivers/sdio/mmc.c @@ -209,6 +209,12 @@ static int mmc_parse_ext_csd(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd) card->hs_max_data_rate = 52000000; } + card->ext_csd.cache_size = + ext_csd[EXT_CSD_CACHE_SIZE + 0] << 0 | + ext_csd[EXT_CSD_CACHE_SIZE + 1] << 8 | + ext_csd[EXT_CSD_CACHE_SIZE + 2] << 16 | + ext_csd[EXT_CSD_CACHE_SIZE + 3] << 24; + card_capacity = *((rt_uint32_t *)&ext_csd[EXT_CSD_SEC_CNT]); card->card_sec_cnt = card_capacity; card_capacity *= card->card_blksize; @@ -613,6 +619,12 @@ static rt_int32_t mmcsd_mmc_init_card(struct rt_mmcsd_host *host, goto err0; } + if (card->ext_csd.cache_size > 0) + { + mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, + EXT_CSD_CACHE_CTRL, 1); + } + host->card = card; rt_free(ext_csd); From 6273e6e413ec5272fbd2c1ee7d504199aca94719 Mon Sep 17 00:00:00 2001 From: heyuanjie87 Date: Tue, 1 Aug 2023 10:27:39 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[sdio]=E6=B7=BB=E5=8A=A0ext=5Fcsd=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E7=BB=93=E6=9E=84=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/include/drivers/mmcsd_card.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/components/drivers/include/drivers/mmcsd_card.h b/components/drivers/include/drivers/mmcsd_card.h index 445b4f1b063..d348c9affab 100644 --- a/components/drivers/include/drivers/mmcsd_card.h +++ b/components/drivers/include/drivers/mmcsd_card.h @@ -127,7 +127,10 @@ struct rt_sdio_function { #define SDIO_MAX_FUNCTIONS 7 - +struct rt_mmc_ext_csd +{ + rt_uint32_t cache_size; +}; struct rt_mmcsd_card { struct rt_mmcsd_host *host; @@ -165,10 +168,7 @@ struct rt_mmcsd_card { struct rt_sdio_function *sdio_function[SDIO_MAX_FUNCTIONS + 1]; /* SDIO functions (devices) */ rt_list_t blk_devices; /* for block device list */ - struct - { - rt_uint32_t cache_size; - } ext_csd; + struct rt_mmc_ext_csd ext_csd; }; #ifdef __cplusplus