[U-Boot,1/3] mach-imx: Adding new argument for SIP call interface
diff mbox series

Message ID 20191021155851.16483-1-agust@denx.de
State Superseded
Delegated to: Stefano Babic
Headers show
Series
  • [U-Boot,1/3] mach-imx: Adding new argument for SIP call interface
Related show

Commit Message

Anatolij Gustschin Oct. 21, 2019, 3:58 p.m. UTC
From: Ye Li <ye.li@nxp.com>

Need to pass total 5 arguments for SIP HAB call on i.MX8MQ,
so update the interface to add new argument.

Signed-off-by: Ye Li <ye.li@nxp.com>
---
 arch/arm/include/asm/mach-imx/sys_proto.h | 3 ++-
 arch/arm/mach-imx/imx_bootaux.c           | 4 ++--
 arch/arm/mach-imx/sip.c                   | 4 +++-
 drivers/misc/imx8/fuse.c                  | 2 +-
 4 files changed, 8 insertions(+), 5 deletions(-)

Comments

Patrick Wildt Oct. 21, 2019, 5:12 p.m. UTC | #1
On Mon, Oct 21, 2019 at 05:58:49PM +0200, Anatolij Gustschin wrote:
> From: Ye Li <ye.li@nxp.com>
> 
> Need to pass total 5 arguments for SIP HAB call on i.MX8MQ,
> so update the interface to add new argument.
> 
> Signed-off-by: Ye Li <ye.li@nxp.com>
> ---
>  arch/arm/include/asm/mach-imx/sys_proto.h | 3 ++-
>  arch/arm/mach-imx/imx_bootaux.c           | 4 ++--
>  arch/arm/mach-imx/sip.c                   | 4 +++-
>  drivers/misc/imx8/fuse.c                  | 2 +-
>  4 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h
> index aa66fdc88f..139a7638c1 100644
> --- a/arch/arm/include/asm/mach-imx/sys_proto.h
> +++ b/arch/arm/include/asm/mach-imx/sys_proto.h
> @@ -143,7 +143,8 @@ int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout);
>  int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout);
>  
>  unsigned long call_imx_sip(unsigned long id, unsigned long reg0,
> -			   unsigned long reg1, unsigned long reg2);
> +			   unsigned long reg1, unsigned long reg2,
> +			   unsigned long reg3);
>  unsigned long call_imx_sip_ret2(unsigned long id, unsigned long reg0,
>  				unsigned long *reg1, unsigned long reg2,
>  				unsigned long reg3);
> diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c
> index 18d7e6819c..3d9422d5a2 100644
> --- a/arch/arm/mach-imx/imx_bootaux.c
> +++ b/arch/arm/mach-imx/imx_bootaux.c
> @@ -26,7 +26,7 @@ int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
>  
>  	/* Enable M4 */
>  #ifdef CONFIG_IMX8M
> -	call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0);
> +	call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0, 0);
>  #else
>  	clrsetbits_le32(SRC_BASE_ADDR + SRC_M4_REG_OFFSET,
>  			SRC_M4C_NON_SCLR_RST_MASK, SRC_M4_ENABLE_MASK);
> @@ -38,7 +38,7 @@ int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
>  int arch_auxiliary_core_check_up(u32 core_id)
>  {
>  #ifdef CONFIG_IMX8M
> -	return call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_STARTED, 0, 0);
> +	return call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_STARTED, 0, 0, 0);
>  #else
>  	unsigned int val;
>  
> diff --git a/arch/arm/mach-imx/sip.c b/arch/arm/mach-imx/sip.c
> index 968e7cf309..fca520c671 100644
> --- a/arch/arm/mach-imx/sip.c
> +++ b/arch/arm/mach-imx/sip.c
> @@ -7,7 +7,8 @@
>  #include <asm/arch/sys_proto.h>
>  
>  unsigned long call_imx_sip(unsigned long id, unsigned long reg0,
> -			   unsigned long reg1, unsigned long reg2)
> +			   unsigned long reg1, unsigned long reg2,
> +			   unsigned long reg3)
>  {
>  	struct pt_regs regs;
>  
> @@ -15,6 +16,7 @@ unsigned long call_imx_sip(unsigned long id, unsigned long reg0,
>  	regs.regs[1] = reg0;
>  	regs.regs[2] = reg1;
>  	regs.regs[3] = reg2;
> +	regs.regs[4] = reg3;
>  
>  	smc_call(&regs);
>  
> diff --git a/drivers/misc/imx8/fuse.c b/drivers/misc/imx8/fuse.c
> index 2f2fad2c17..1309215d4d 100644
> --- a/drivers/misc/imx8/fuse.c
> +++ b/drivers/misc/imx8/fuse.c
> @@ -74,7 +74,7 @@ int fuse_prog(u32 bank, u32 word, u32 val)
>  	}
>  
>  	return call_imx_sip(FSL_SIP_OTP_WRITE, (unsigned long)word,
> -			    (unsigned long)val, 0);
> +			    (unsigned long)val, 0, 0);
>  }
>  
>  int fuse_override(u32 bank, u32 word, u32 val)
> -- 
> 2.17.1
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot

Reviewed-by: Patrick Wildt <patrick@blueri.se>
Anatolij Gustschin Oct. 22, 2019, 7:53 a.m. UTC | #2
On Mon, 21 Oct 2019 17:58:49 +0200
Anatolij Gustschin agust@denx.de wrote:
...
> Need to pass total 5 arguments for SIP HAB call on i.MX8MQ,
> so update the interface to add new argument.

with current git master this patch breaks building imx8m-power-domain.c.
I'll fix it v2 patch.

--
Anatolij

Patch
diff mbox series

diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h
index aa66fdc88f..139a7638c1 100644
--- a/arch/arm/include/asm/mach-imx/sys_proto.h
+++ b/arch/arm/include/asm/mach-imx/sys_proto.h
@@ -143,7 +143,8 @@  int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout);
 int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout);
 
 unsigned long call_imx_sip(unsigned long id, unsigned long reg0,
-			   unsigned long reg1, unsigned long reg2);
+			   unsigned long reg1, unsigned long reg2,
+			   unsigned long reg3);
 unsigned long call_imx_sip_ret2(unsigned long id, unsigned long reg0,
 				unsigned long *reg1, unsigned long reg2,
 				unsigned long reg3);
diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c
index 18d7e6819c..3d9422d5a2 100644
--- a/arch/arm/mach-imx/imx_bootaux.c
+++ b/arch/arm/mach-imx/imx_bootaux.c
@@ -26,7 +26,7 @@  int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
 
 	/* Enable M4 */
 #ifdef CONFIG_IMX8M
-	call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0);
+	call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0, 0);
 #else
 	clrsetbits_le32(SRC_BASE_ADDR + SRC_M4_REG_OFFSET,
 			SRC_M4C_NON_SCLR_RST_MASK, SRC_M4_ENABLE_MASK);
@@ -38,7 +38,7 @@  int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
 int arch_auxiliary_core_check_up(u32 core_id)
 {
 #ifdef CONFIG_IMX8M
-	return call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_STARTED, 0, 0);
+	return call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_STARTED, 0, 0, 0);
 #else
 	unsigned int val;
 
diff --git a/arch/arm/mach-imx/sip.c b/arch/arm/mach-imx/sip.c
index 968e7cf309..fca520c671 100644
--- a/arch/arm/mach-imx/sip.c
+++ b/arch/arm/mach-imx/sip.c
@@ -7,7 +7,8 @@ 
 #include <asm/arch/sys_proto.h>
 
 unsigned long call_imx_sip(unsigned long id, unsigned long reg0,
-			   unsigned long reg1, unsigned long reg2)
+			   unsigned long reg1, unsigned long reg2,
+			   unsigned long reg3)
 {
 	struct pt_regs regs;
 
@@ -15,6 +16,7 @@  unsigned long call_imx_sip(unsigned long id, unsigned long reg0,
 	regs.regs[1] = reg0;
 	regs.regs[2] = reg1;
 	regs.regs[3] = reg2;
+	regs.regs[4] = reg3;
 
 	smc_call(&regs);
 
diff --git a/drivers/misc/imx8/fuse.c b/drivers/misc/imx8/fuse.c
index 2f2fad2c17..1309215d4d 100644
--- a/drivers/misc/imx8/fuse.c
+++ b/drivers/misc/imx8/fuse.c
@@ -74,7 +74,7 @@  int fuse_prog(u32 bank, u32 word, u32 val)
 	}
 
 	return call_imx_sip(FSL_SIP_OTP_WRITE, (unsigned long)word,
-			    (unsigned long)val, 0);
+			    (unsigned long)val, 0, 0);
 }
 
 int fuse_override(u32 bank, u32 word, u32 val)