summaryrefslogtreecommitdiff
path: root/include/mmc.h
diff options
context:
space:
mode:
authorYing-Chun Liu (PaulLiu) <paul.liu@linaro.org>2022-04-25 21:59:02 +0800
committerJaehoon Chung <jh80.chung@samsung.com>2022-07-27 15:19:09 +0900
commit19a29ff362d4cc9e7f420021de57e3193812d4c6 (patch)
treed88db226f2c9f2169f4a4ec2e40d7cdad9c308b0 /include/mmc.h
parent3363a73ddfcda752256b8c06ffde75f6b8d5b819 (diff)
downloadu-boot-19a29ff362d4cc9e7f420021de57e3193812d4c6.tar.gz
u-boot-19a29ff362d4cc9e7f420021de57e3193812d4c6.tar.bz2
u-boot-19a29ff362d4cc9e7f420021de57e3193812d4c6.zip
drivers: mmc: write protect single boot area
Add features to write protect single boot area rather than all boot areas. Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org> Cc: Peng Fan <peng.fan@nxp.com> Cc: Jaehoon Chung <jh80.chung@samsung.com>
Diffstat (limited to 'include/mmc.h')
-rw-r--r--include/mmc.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/mmc.h b/include/mmc.h
index 073b01f82b..f519d86972 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -308,6 +308,10 @@ static inline bool mmc_is_tuning_cmd(uint cmdidx)
#define EXT_CSD_HS_CTRL_REL (1 << 0) /* host controlled WR_REL_SET */
+#define EXT_CSD_BOOT_WP_B_SEC_WP_SEL (0x80) /* enable partition selector */
+#define EXT_CSD_BOOT_WP_B_PWR_WP_SEC_SEL (0x02) /* partition selector to protect */
+#define EXT_CSD_BOOT_WP_B_PWR_WP_EN (0x01) /* power-on write-protect */
+
#define EXT_CSD_WR_DATA_REL_USR (1 << 0) /* user data area WR_REL */
#define EXT_CSD_WR_DATA_REL_GP(x) (1 << ((x)+1)) /* GP part (x+1) WR_REL */
@@ -991,6 +995,18 @@ int mmc_send_ext_csd(struct mmc *mmc, u8 *ext_csd);
*/
int mmc_boot_wp(struct mmc *mmc);
+/**
+ * mmc_boot_wp_single_partition() - set write protection to a boot partition.
+ *
+ * This function sets a single boot partition to protect and leave the
+ * other partition writable.
+ *
+ * @param mmc the mmc device.
+ * @param partition 0 - first boot partition, 1 - second boot partition.
+ * @return 0 for success
+ */
+int mmc_boot_wp_single_partition(struct mmc *mmc, int partition);
+
static inline enum dma_data_direction mmc_get_dma_dir(struct mmc_data *data)
{
return data->flags & MMC_DATA_WRITE ? DMA_TO_DEVICE : DMA_FROM_DEVICE;