@@ -220,6 +220,26 @@ static struct Command commands[] = {
" mmc rpmb secure-wp-mode-off /dev/block/mmcblk0 /dev/mmcblk0rpmb -",
NULL
},
+ { do_rpmb_sec_wp_mode_set, 3,
+ "rpmb secure-wp-disable", "<dev> <rpmb device> <key file>\n"
+ "Enabling updating WP related EXT_CSD and CSD fields.\n"
+ "Applicable only if secure wp mode is enabled.\n"
+ "You can specify '-' instead of key\n"
+ "Example:\n"
+ " echo -n AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH | \\\n"
+ " mmc rpmb secure-wp-disable /dev/block/mmcblk0 /dev/mmcblk0rpmb -",
+ NULL
+ },
+ { do_rpmb_sec_wp_mode_clear, 3,
+ "rpmb secure-wp-enable", "<dev> <rpmb device> <key file>\n"
+ "Disabling updating WP related EXT_CSD and CSD fields.\n"
+ "Applicable only if secure wp mode is enabled.\n"
+ "You can specify '-' instead of key\n"
+ "Example:\n"
+ " echo -n AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH | \\\n"
+ " mmc rpmb secure-wp-enable /dev/block/mmcblk0 /dev/mmcblk0rpmb -",
+ NULL
+ },
{ do_cache_en, -1,
"cache enable", "<device>\n"
"Enable the eMMC cache feature on <device>.\n"
@@ -2602,6 +2602,20 @@ int do_rpmb_sec_wp_disable(int nargs, char **argv)
return rpmb_auth_write(nargs, argv, 1, 0, usage);
}
+int do_rpmb_sec_wp_mode_set(int nargs, char **argv)
+{
+ char *usage = "Usage: mmc rpmb secure-wp-disable </path/to/mmcblkx> </path/to/mmcblkXrpmb> </path/to/key>\n";
+
+ return rpmb_auth_write(nargs, argv, 2, 1, usage);
+}
+
+int do_rpmb_sec_wp_mode_clear(int nargs, char **argv)
+{
+ char *usage = "Usage: mmc rpmb secure-wp-enable </path/to/mmcblkx> </path/to/mmcblkXrpmb> </path/to/key>\n";
+
+ return rpmb_auth_write(nargs, argv, 2, 0, usage);
+}
+
int do_rpmb_write_block(int nargs, char **argv)
{
int ret, dev_fd, data_fd;
@@ -41,6 +41,8 @@ int do_rpmb_read_block(int nargs, char **argv);
int do_rpmb_write_block(int nargs, char **argv);
int do_rpmb_sec_wp_enable(int nargs, char **argv);
int do_rpmb_sec_wp_disable(int nargs, char **argv);
+int do_rpmb_sec_wp_mode_set(int nargs, char **argv);
+int do_rpmb_sec_wp_mode_clear(int nargs, char **argv);
int do_cache_en(int nargs, char **argv);
int do_cache_dis(int nargs, char **argv);
int do_ffu(int nargs, char **argv);