Message ID | 20171128123205.12610-6-peng.fan@nxp.com |
---|---|
State | Changes Requested |
Delegated to: | Stefano Babic |
Headers | show |
Series | imx: add i.MX8M support and i.MX8MQ EVK | expand |
On 28/11/2017 13:31, Peng Fan wrote: > Add SIP function to issue SMC call to Arm Trusted Firmware. I admit I do not know what is a SIP function. Patch simply adds a wrapper, can you add a commit message with a more detailed explanation for this ? > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > arch/arm/include/asm/mach-imx/sys_proto.h | 3 +++ > arch/arm/mach-imx/Makefile | 2 ++ > arch/arm/mach-imx/sip.c | 23 +++++++++++++++++++++++ > 3 files changed, 28 insertions(+) > create mode 100644 arch/arm/mach-imx/sip.c > > diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h > index a80a392a73..2d8afed406 100644 > --- a/arch/arm/include/asm/mach-imx/sys_proto.h > +++ b/arch/arm/include/asm/mach-imx/sys_proto.h > @@ -122,4 +122,7 @@ void lcdif_power_down(void); > int mxs_reset_block(struct mxs_register_32 *reg); > 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); > #endif > diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile > index d77c10e176..c807174363 100644 > --- a/arch/arm/mach-imx/Makefile > +++ b/arch/arm/mach-imx/Makefile > @@ -121,6 +121,8 @@ spl/u-boot-nand-spl.imx: SPL FORCE > > targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx) > > +obj-$(CONFIG_ARM64) += sip.o > + > obj-$(CONFIG_MX5) += mx5/ > obj-$(CONFIG_MX6) += mx6/ > obj-$(CONFIG_MX7) += mx7/ > diff --git a/arch/arm/mach-imx/sip.c b/arch/arm/mach-imx/sip.c > new file mode 100644 > index 0000000000..b724330d35 > --- /dev/null > +++ b/arch/arm/mach-imx/sip.c > @@ -0,0 +1,23 @@ > +/* > + * Copyright 2017 NXP > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > + > +#include <common.h> > +#include <asm/arch/sys_proto.h> > + > +unsigned long call_imx_sip(unsigned long id, unsigned long reg0, > + unsigned long reg1, unsigned long reg2) > +{ > + struct pt_regs regs; > + > + regs.regs[0] = id; > + regs.regs[1] = reg0; > + regs.regs[2] = reg1; > + regs.regs[3] = reg2; > + > + smc_call(®s); > + > + return regs.regs[0]; > +} > Best regards, Stefano
On Tue, Nov 28, 2017 at 07:16:52PM +0100, Stefano Babic wrote: >On 28/11/2017 13:31, Peng Fan wrote: >> Add SIP function to issue SMC call to Arm Trusted Firmware. > >I admit I do not know what is a SIP function. Patch simply adds a >wrapper, can you add a commit message with a more detailed explanation >for this ? ok. I'll add. This is just like psci call. Regards, Peng. > >> >> Signed-off-by: Peng Fan <peng.fan@nxp.com> >> --- >> arch/arm/include/asm/mach-imx/sys_proto.h | 3 +++ >> arch/arm/mach-imx/Makefile | 2 ++ >> arch/arm/mach-imx/sip.c | 23 +++++++++++++++++++++++ >> 3 files changed, 28 insertions(+) >> create mode 100644 arch/arm/mach-imx/sip.c >> >> diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h >> index a80a392a73..2d8afed406 100644 >> --- a/arch/arm/include/asm/mach-imx/sys_proto.h >> +++ b/arch/arm/include/asm/mach-imx/sys_proto.h >> @@ -122,4 +122,7 @@ void lcdif_power_down(void); >> int mxs_reset_block(struct mxs_register_32 *reg); >> 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); >> #endif >> diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile >> index d77c10e176..c807174363 100644 >> --- a/arch/arm/mach-imx/Makefile >> +++ b/arch/arm/mach-imx/Makefile >> @@ -121,6 +121,8 @@ spl/u-boot-nand-spl.imx: SPL FORCE >> >> targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx) >> >> +obj-$(CONFIG_ARM64) += sip.o >> + >> obj-$(CONFIG_MX5) += mx5/ >> obj-$(CONFIG_MX6) += mx6/ >> obj-$(CONFIG_MX7) += mx7/ >> diff --git a/arch/arm/mach-imx/sip.c b/arch/arm/mach-imx/sip.c >> new file mode 100644 >> index 0000000000..b724330d35 >> --- /dev/null >> +++ b/arch/arm/mach-imx/sip.c >> @@ -0,0 +1,23 @@ >> +/* >> + * Copyright 2017 NXP >> + * >> + * SPDX-License-Identifier: GPL-2.0+ >> + */ >> + >> +#include <common.h> >> +#include <asm/arch/sys_proto.h> >> + >> +unsigned long call_imx_sip(unsigned long id, unsigned long reg0, >> + unsigned long reg1, unsigned long reg2) >> +{ >> + struct pt_regs regs; >> + >> + regs.regs[0] = id; >> + regs.regs[1] = reg0; >> + regs.regs[2] = reg1; >> + regs.regs[3] = reg2; >> + >> + smc_call(®s); >> + >> + return regs.regs[0]; >> +} >> > >Best regards, >Stefano > >-- >===================================================================== >DENX Software Engineering GmbH, Managing Director: Wolfgang Denk >HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany >Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic@denx.de >=====================================================================
diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h index a80a392a73..2d8afed406 100644 --- a/arch/arm/include/asm/mach-imx/sys_proto.h +++ b/arch/arm/include/asm/mach-imx/sys_proto.h @@ -122,4 +122,7 @@ void lcdif_power_down(void); int mxs_reset_block(struct mxs_register_32 *reg); 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); #endif diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index d77c10e176..c807174363 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -121,6 +121,8 @@ spl/u-boot-nand-spl.imx: SPL FORCE targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx) +obj-$(CONFIG_ARM64) += sip.o + obj-$(CONFIG_MX5) += mx5/ obj-$(CONFIG_MX6) += mx6/ obj-$(CONFIG_MX7) += mx7/ diff --git a/arch/arm/mach-imx/sip.c b/arch/arm/mach-imx/sip.c new file mode 100644 index 0000000000..b724330d35 --- /dev/null +++ b/arch/arm/mach-imx/sip.c @@ -0,0 +1,23 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <asm/arch/sys_proto.h> + +unsigned long call_imx_sip(unsigned long id, unsigned long reg0, + unsigned long reg1, unsigned long reg2) +{ + struct pt_regs regs; + + regs.regs[0] = id; + regs.regs[1] = reg0; + regs.regs[2] = reg1; + regs.regs[3] = reg2; + + smc_call(®s); + + return regs.regs[0]; +}
Add SIP function to issue SMC call to Arm Trusted Firmware. Signed-off-by: Peng Fan <peng.fan@nxp.com> --- arch/arm/include/asm/mach-imx/sys_proto.h | 3 +++ arch/arm/mach-imx/Makefile | 2 ++ arch/arm/mach-imx/sip.c | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 arch/arm/mach-imx/sip.c