diff mbox series

[4/6] imx8: fuse: use arm_smccc_smc

Message ID 20200511094837.8572-5-peng.fan@nxp.com
State Accepted
Commit c2eaa6eb09f474c4af51443256fe072d2e137719
Headers show
Series imx: clean up sip file | expand

Commit Message

Peng Fan May 11, 2020, 9:48 a.m. UTC
Use arm_smccc_smc to replace call_imx_sip

Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 drivers/misc/imx8/fuse.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)
diff mbox series

Patch

diff --git a/drivers/misc/imx8/fuse.c b/drivers/misc/imx8/fuse.c
index 4d7f2f524d..be18122937 100644
--- a/drivers/misc/imx8/fuse.c
+++ b/drivers/misc/imx8/fuse.c
@@ -9,6 +9,7 @@ 
 #include <fuse.h>
 #include <asm/arch/sci/sci.h>
 #include <asm/arch/sys_proto.h>
+#include <linux/arm-smccc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -36,22 +37,24 @@  int fuse_read(u32 bank, u32 word, u32 *val)
 
 int fuse_sense(u32 bank, u32 word, u32 *val)
 {
-	unsigned long ret = 0, value = 0;
+	struct arm_smccc_res res;
 
 	if (bank != 0) {
 		printf("Invalid bank argument, ONLY bank 0 is supported\n");
 		return -EINVAL;
 	}
 
-	ret = call_imx_sip_ret2(FSL_SIP_OTP_READ, (unsigned long)word, &value,
-				0, 0);
-	*val = (u32)value;
+	arm_smccc_smc(FSL_SIP_OTP_READ, (unsigned long)word, 0, 0,
+		      0, 0, 0, 0, &res);
+	*val = (u32)res.a1;
 
-	return ret;
+	return res.a0;
 }
 
 int fuse_prog(u32 bank, u32 word, u32 val)
 {
+	struct arm_smccc_res res;
+
 	if (bank != 0) {
 		printf("Invalid bank argument, ONLY bank 0 is supported\n");
 		return -EINVAL;
@@ -78,8 +81,10 @@  int fuse_prog(u32 bank, u32 word, u32 val)
 		}
 	}
 
-	return call_imx_sip(FSL_SIP_OTP_WRITE, (unsigned long)word,
-			    (unsigned long)val, 0, 0);
+	arm_smccc_smc(FSL_SIP_OTP_WRITE, (unsigned long)word,
+		      (unsigned long)val, 0, 0, 0, 0, 0, &res);
+
+	return res.a0;
 }
 
 int fuse_override(u32 bank, u32 word, u32 val)