diff options
author | Peng Fan | 2020-05-11 15:16:07 +0800 |
---|---|---|
committer | Peng Fan | 2020-07-14 15:23:46 +0800 |
commit | c2eaa6eb09f474c4af51443256fe072d2e137719 (patch) | |
tree | 8fad6f4965889fd2367728ed72209c9514f0c0ff /drivers/misc/imx8 | |
parent | bf26b9421eb78c7ff3ecf42a8b5bcde0315343b5 (diff) |
imx8: fuse: use arm_smccc_smc
Use arm_smccc_smc to replace call_imx_sip
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'drivers/misc/imx8')
-rw-r--r-- | drivers/misc/imx8/fuse.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/misc/imx8/fuse.c b/drivers/misc/imx8/fuse.c index 4d7f2f524d0..be181229370 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) |