Platform: Add NS NV counters
Add a configurable amount of NS NV counters (up to 3), and expose them
to the NS caller.
Change-Id: I8adda25c1fae49c4dae36ccb562360f45ecbfc0a
Signed-off-by: Raef Coles <raef.coles@arm.com>
diff --git a/interface/src/tfm_platform_func_api.c b/interface/src/tfm_platform_func_api.c
index 3ef0c86..df566ec 100644
--- a/interface/src/tfm_platform_func_api.c
+++ b/interface/src/tfm_platform_func_api.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -50,3 +50,35 @@
(uint32_t)output, (uint32_t)outlen);
}
+enum tfm_platform_err_t
+tfm_platform_nv_counter_increment(uint32_t counter_id)
+{
+ struct psa_invec in_vec[1];
+
+ in_vec[0].base = &counter_id;
+ in_vec[0].len = sizeof(counter_id);
+
+ return (enum tfm_platform_err_t) tfm_ns_interface_dispatch(
+ (veneer_fn)tfm_platform_sp_nv_counter_increment_veneer,
+ (uint32_t)in_vec, 1,
+ (uint32_t)NULL, 0);
+}
+
+enum tfm_platform_err_t
+tfm_platform_nv_counter_read(uint32_t counter_id,
+ uint32_t size, uint8_t *val)
+{
+ struct psa_invec in_vec[1];
+ struct psa_outvec out_vec[1];
+
+ in_vec[0].base = &counter_id;
+ in_vec[0].len = sizeof(counter_id);
+
+ out_vec[0].base = val;
+ out_vec[0].len = size;
+
+ return (enum tfm_platform_err_t) tfm_ns_interface_dispatch(
+ (veneer_fn)tfm_platform_sp_nv_counter_read_veneer,
+ (uint32_t)in_vec, 1,
+ (uint32_t)out_vec, 1);
+}