Commit 064f7e58 authored by Krishna Konda's avatar Krishna Konda Committed by Ulf Hansson

mmc: core: expose info about enhanced rpmb support

Following eMMC JEDEC JESD84-B51 standard, an enhanced form of
rpmb is supported. What this enhanced mode supports is in addition
to be able to write one rpmb or two rpmb frames at a time,
32 frames can be written at a time.

Expose this information present in ext csd field so that the
user space application that wants to make use of this can do so.
Signed-off-by: default avatarKrishna Konda <kkonda@codeaurora.org>
Signed-off-by: default avatarVeerabhadrarao Badiganti <vbadigan@codeaurora.org>
Link: https://lore.kernel.org/r/1588341189-4371-1-git-send-email-vbadigan@codeaurora.orgSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 1dc5a615
...@@ -647,6 +647,9 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd) ...@@ -647,6 +647,9 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
mmc_hostname(card->host), mmc_hostname(card->host),
card->ext_csd.cmdq_depth); card->ext_csd.cmdq_depth);
} }
card->ext_csd.enhanced_rpmb_supported =
(card->ext_csd.rel_param &
EXT_CSD_WR_REL_PARAM_EN_RPMB_REL_WR);
} }
out: out:
return err; return err;
...@@ -786,6 +789,8 @@ MMC_DEV_ATTR(enhanced_area_offset, "%llu\n", ...@@ -786,6 +789,8 @@ MMC_DEV_ATTR(enhanced_area_offset, "%llu\n",
card->ext_csd.enhanced_area_offset); card->ext_csd.enhanced_area_offset);
MMC_DEV_ATTR(enhanced_area_size, "%u\n", card->ext_csd.enhanced_area_size); MMC_DEV_ATTR(enhanced_area_size, "%u\n", card->ext_csd.enhanced_area_size);
MMC_DEV_ATTR(raw_rpmb_size_mult, "%#x\n", card->ext_csd.raw_rpmb_size_mult); MMC_DEV_ATTR(raw_rpmb_size_mult, "%#x\n", card->ext_csd.raw_rpmb_size_mult);
MMC_DEV_ATTR(enhanced_rpmb_supported, "%#x\n",
card->ext_csd.enhanced_rpmb_supported);
MMC_DEV_ATTR(rel_sectors, "%#x\n", card->ext_csd.rel_sectors); MMC_DEV_ATTR(rel_sectors, "%#x\n", card->ext_csd.rel_sectors);
MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr); MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr);
MMC_DEV_ATTR(rca, "0x%04x\n", card->rca); MMC_DEV_ATTR(rca, "0x%04x\n", card->rca);
...@@ -843,6 +848,7 @@ static struct attribute *mmc_std_attrs[] = { ...@@ -843,6 +848,7 @@ static struct attribute *mmc_std_attrs[] = {
&dev_attr_enhanced_area_offset.attr, &dev_attr_enhanced_area_offset.attr,
&dev_attr_enhanced_area_size.attr, &dev_attr_enhanced_area_size.attr,
&dev_attr_raw_rpmb_size_mult.attr, &dev_attr_raw_rpmb_size_mult.attr,
&dev_attr_enhanced_rpmb_supported.attr,
&dev_attr_rel_sectors.attr, &dev_attr_rel_sectors.attr,
&dev_attr_ocr.attr, &dev_attr_ocr.attr,
&dev_attr_rca.attr, &dev_attr_rca.attr,
......
...@@ -48,6 +48,7 @@ struct mmc_ext_csd { ...@@ -48,6 +48,7 @@ struct mmc_ext_csd {
u8 sec_feature_support; u8 sec_feature_support;
u8 rel_sectors; u8 rel_sectors;
u8 rel_param; u8 rel_param;
bool enhanced_rpmb_supported;
u8 part_config; u8 part_config;
u8 cache_ctrl; u8 cache_ctrl;
u8 rst_n_function; u8 rst_n_function;
......
...@@ -325,6 +325,7 @@ static inline bool mmc_ready_for_data(u32 status) ...@@ -325,6 +325,7 @@ static inline bool mmc_ready_for_data(u32 status)
*/ */
#define EXT_CSD_WR_REL_PARAM_EN (1<<2) #define EXT_CSD_WR_REL_PARAM_EN (1<<2)
#define EXT_CSD_WR_REL_PARAM_EN_RPMB_REL_WR (1<<4)
#define EXT_CSD_BOOT_WP_B_PWR_WP_DIS (0x40) #define EXT_CSD_BOOT_WP_B_PWR_WP_DIS (0x40)
#define EXT_CSD_BOOT_WP_B_PERM_WP_DIS (0x10) #define EXT_CSD_BOOT_WP_B_PERM_WP_DIS (0x10)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment