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);