app: rpmbtests: Add test for verifying secure write protect
Write protect few partitions in LUN 0
Change-Id: I6a15788377c3dd9178284eb9ae8941ef008a9e4b
diff --git a/app/rpmbtests/ufs_rpmb.c b/app/rpmbtests/ufs_rpmb.c
index d951933..b84dfe7 100644
--- a/app/rpmbtests/ufs_rpmb.c
+++ b/app/rpmbtests/ufs_rpmb.c
@@ -86,6 +86,44 @@
printf("\n");
}
+bool swp_test()
+{
+ int ret = 0;
+ qsee_stor_secure_wp_info_t cb = {0};
+ // Write protect 4 partitions in Lun 0.
+ cb.lun_number = 0;
+ cb.num_entries = 4;
+ cb.wp_entries[0].wp_enable = 0x1;
+ cb.wp_entries[0].wp_type_mask = 0x1;
+ cb.wp_entries[0].addr = 8;
+ cb.wp_entries[0].num_blocks = 8192;
+
+ cb.wp_entries[1].wp_enable = 0x1;
+ cb.wp_entries[1].wp_type_mask = 0x1;
+ cb.wp_entries[1].addr = 74120;
+ cb.wp_entries[1].num_blocks = 32;
+
+ cb.wp_entries[2].wp_enable = 0x1;
+ cb.wp_entries[2].wp_type_mask = 0x1;
+ cb.wp_entries[2].addr = 6;
+ cb.wp_entries[2].num_blocks = 2;
+
+ cb.wp_entries[3].wp_enable = 0x1;
+ cb.wp_entries[3].wp_type_mask = 0x1;
+ cb.wp_entries[3].addr = 73736;
+ cb.wp_entries[3].num_blocks = 256;
+
+ ret = swp_write(cb);
+ if (ret)
+ {
+ dprintf(CRITICAL, "SWP Write Test Failed\n");
+ return false;
+ }
+ else
+ dprintf(CRITICAL, "SWP Write Test Passed\n");
+ return true;
+}
+
bool rpmb_test(struct ufs_dev *dev, uint16_t address, uint16_t rpmb_num_blocks)
{
struct rpmb_frame data_frame, result_frame[rpmb_num_blocks];
diff --git a/app/rpmbtests/ufs_rpmb.h b/app/rpmbtests/ufs_rpmb.h
index 5d16a7b..06f221e 100644
--- a/app/rpmbtests/ufs_rpmb.h
+++ b/app/rpmbtests/ufs_rpmb.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2015 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -40,6 +40,7 @@
printf("\n");
}
+bool swp_test();
void rpmb_run_test();
bool rpmb_test(struct ufs_dev *dev, uint16_t address, uint16_t rpmb_num_blocks);
void dump_rpmb_data(struct rpmb_frame *result_frame);