[U-Boot] [PATCHv6 3/6] ARMv8/layerscape: Add FSL PPA support
From: Hou Zhiqiang The FSL Primary Protected Application (PPA) is a software component loaded during boot which runs in TrustZone and remains resident after boot. Use the secure firmware framework to integrate FSL PPA into U-Boot. Signed-off-by: Hou Zhiqiang --- V6: - Use the secure firmware framework to integrate PPA. V5: - Added API sec_firmware_init() implementation. V4: - Moved secure firmware validation API to this patch. - Moved secure firmware getting supported PSCI version API to this patch. V3: - Refactor the code. - Add PPA firmware version info output. arch/arm/cpu/armv8/fsl-layerscape/Makefile | 1 + arch/arm/cpu/armv8/fsl-layerscape/ppa.c| 48 ++ arch/arm/include/asm/arch-fsl-layerscape/ppa.h | 16 + arch/arm/include/asm/armv8/sec_firmware.h | 4 +++ 4 files changed, 69 insertions(+) create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/ppa.c create mode 100644 arch/arm/include/asm/arch-fsl-layerscape/ppa.h diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile b/arch/arm/cpu/armv8/fsl-layerscape/Makefile index eb2cbc3..bcf6b48 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile +++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile @@ -10,6 +10,7 @@ obj-y += soc.o obj-$(CONFIG_MP) += mp.o obj-$(CONFIG_OF_LIBFDT) += fdt.o obj-$(CONFIG_SPL) += spl.o +obj-$(CONFIG_FSL_LS_PPA) += ppa.o ifneq ($(CONFIG_FSL_LSCH3),) obj-y += fsl_lsch3_speed.o diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c new file mode 100644 index 000..ae7d364 --- /dev/null +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c @@ -0,0 +1,48 @@ +/* + * Copyright 2016 NXP Semiconductor, Inc. + * + * SPDX-License-Identifier:GPL-2.0+ + */ +#include +#include +#include +#include +#include +#include +#ifdef CONFIG_FSL_LSCH3 +#include +#elif defined(CONFIG_FSL_LSCH2) +#include +#endif +#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT +#include +#endif + +int ppa_init(void) +{ + void *ppa_fit_addr; + u32 *boot_loc_ptr_l, *boot_loc_ptr_h; + int ret; + +#ifdef CONFIG_SYS_LS_PPA_FW_IN_NOR + ppa_fit_addr = (void *)CONFIG_SYS_LS_PPA_FW_ADDR; +#else +#error "No CONFIG_SYS_LS_PPA_FW_IN_xxx defined" +#endif + +#ifdef CONFIG_FSL_LSCH3 + struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); + boot_loc_ptr_l = &gur->bootlocptrl; + boot_loc_ptr_h = &gur->bootlocptrh; +#elif defined(CONFIG_FSL_LSCH2) + struct ccsr_scfg __iomem *scfg = (void *)(CONFIG_SYS_FSL_SCFG_ADDR); + boot_loc_ptr_l = &scfg->scratchrw[1]; + boot_loc_ptr_h = &scfg->scratchrw[0]; +#endif + + debug("fsl-ppa: boot_loc_ptr_l = 0x%p, boot_loc_ptr_h =0x%p\n", + boot_loc_ptr_l, boot_loc_ptr_h); + ret = sec_firmware_init(ppa_fit_addr, boot_loc_ptr_l, boot_loc_ptr_h); + + return ret; +} diff --git a/arch/arm/include/asm/arch-fsl-layerscape/ppa.h b/arch/arm/include/asm/arch-fsl-layerscape/ppa.h new file mode 100644 index 000..1f1442b --- /dev/null +++ b/arch/arm/include/asm/arch-fsl-layerscape/ppa.h @@ -0,0 +1,16 @@ +/* + * Copyright 2016 NXP Semiconductor, Inc. + * + * SPDX-License-Identifier:GPL-2.0+ + */ + +#ifndef __FSL_PPA_H_ +#define __FSL_PPA_H_ + +#define SEC_FIRMWARE_FIT_IMAGE "firmware" +#define SEC_FIRMEWARE_FIT_CNF_NAME "config@1" +#define SEC_FIRMWARE_TARGET_EL 2 + +int ppa_init(void); + +#endif diff --git a/arch/arm/include/asm/armv8/sec_firmware.h b/arch/arm/include/asm/armv8/sec_firmware.h index 041fd4e..53aefda 100644 --- a/arch/arm/include/asm/armv8/sec_firmware.h +++ b/arch/arm/include/asm/armv8/sec_firmware.h @@ -7,6 +7,10 @@ #ifndef __SEC_FIRMWARE_H_ #define __SEC_FIRMWARE_H_ +#ifdef CONFIG_FSL_LS_PPA +#include +#endif + int sec_firmware_init(void *, u32 *, u32 *); int _sec_firmware_entry(void *, u32 *, u32 *); bool sec_firmware_is_valid(void *); -- 2.1.0.27.g96db324 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCHv6 3/6] ARMv8/layerscape: Add FSL PPA support
On 06/21/2016 08:41 PM, Zhiqiang Hou wrote: > From: Hou Zhiqiang > > The FSL Primary Protected Application (PPA) is a software component > loaded during boot which runs in TrustZone and remains resident > after boot. > > Use the secure firmware framework to integrate FSL PPA into U-Boot. > > Signed-off-by: Hou Zhiqiang > --- > V6: > - Use the secure firmware framework to integrate PPA. > > V5: > - Added API sec_firmware_init() implementation. > > V4: > - Moved secure firmware validation API to this patch. > - Moved secure firmware getting supported PSCI version API to this patch. > > V3: > - Refactor the code. > - Add PPA firmware version info output. > > arch/arm/cpu/armv8/fsl-layerscape/Makefile | 1 + > arch/arm/cpu/armv8/fsl-layerscape/ppa.c| 48 > ++ > arch/arm/include/asm/arch-fsl-layerscape/ppa.h | 16 + > arch/arm/include/asm/armv8/sec_firmware.h | 4 +++ > 4 files changed, 69 insertions(+) > create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/ppa.c > create mode 100644 arch/arm/include/asm/arch-fsl-layerscape/ppa.h > > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile > b/arch/arm/cpu/armv8/fsl-layerscape/Makefile > index eb2cbc3..bcf6b48 100644 > --- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile > +++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile > @@ -10,6 +10,7 @@ obj-y += soc.o > obj-$(CONFIG_MP) += mp.o > obj-$(CONFIG_OF_LIBFDT) += fdt.o > obj-$(CONFIG_SPL) += spl.o > +obj-$(CONFIG_FSL_LS_PPA) += ppa.o > > ifneq ($(CONFIG_FSL_LSCH3),) > obj-y += fsl_lsch3_speed.o > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c > b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c > new file mode 100644 > index 000..ae7d364 > --- /dev/null > +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c > @@ -0,0 +1,48 @@ > +/* > + * Copyright 2016 NXP Semiconductor, Inc. > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > +#include > +#include > +#include > +#include > +#include > +#include > +#ifdef CONFIG_FSL_LSCH3 > +#include > +#elif defined(CONFIG_FSL_LSCH2) > +#include > +#endif > +#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT > +#include > +#endif > + > +int ppa_init(void) > +{ > + void *ppa_fit_addr; > + u32 *boot_loc_ptr_l, *boot_loc_ptr_h; > + int ret; > + > +#ifdef CONFIG_SYS_LS_PPA_FW_IN_NOR > + ppa_fit_addr = (void *)CONFIG_SYS_LS_PPA_FW_ADDR; > +#else > +#error "No CONFIG_SYS_LS_PPA_FW_IN_xxx defined" > +#endif > + > +#ifdef CONFIG_FSL_LSCH3 > + struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); > + boot_loc_ptr_l = &gur->bootlocptrl; > + boot_loc_ptr_h = &gur->bootlocptrh; > +#elif defined(CONFIG_FSL_LSCH2) > + struct ccsr_scfg __iomem *scfg = (void *)(CONFIG_SYS_FSL_SCFG_ADDR); > + boot_loc_ptr_l = &scfg->scratchrw[1]; > + boot_loc_ptr_h = &scfg->scratchrw[0]; > +#endif > + > + debug("fsl-ppa: boot_loc_ptr_l = 0x%p, boot_loc_ptr_h =0x%p\n", > + boot_loc_ptr_l, boot_loc_ptr_h); Alignment issue. Didn't checkpatch remind you about this? York ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCHv6 3/6] ARMv8/layerscape: Add FSL PPA support
Hi York, Thanks for your comments! > -Original Message- > From: york sun > Sent: 2016年6月23日 0:13 > To: Zhiqiang Hou ; u-boot@lists.denx.de; > albert.u.b...@aribaud.net; scottw...@freescale.com; > mingkai...@freescale.com; york...@freescale.com; le...@freescale.com; > prabha...@freescale.com; bhupesh.sha...@freescale.com > Subject: Re: [PATCHv6 3/6] ARMv8/layerscape: Add FSL PPA support > > On 06/21/2016 08:41 PM, Zhiqiang Hou wrote: > > From: Hou Zhiqiang > > > > The FSL Primary Protected Application (PPA) is a software component > > loaded during boot which runs in TrustZone and remains resident after > > boot. > > > > Use the secure firmware framework to integrate FSL PPA into U-Boot. > > > > Signed-off-by: Hou Zhiqiang > > --- > > V6: > > - Use the secure firmware framework to integrate PPA. > > > > V5: > > - Added API sec_firmware_init() implementation. > > > > V4: > > - Moved secure firmware validation API to this patch. > > - Moved secure firmware getting supported PSCI version API to this patch. > > > > V3: > > - Refactor the code. > > - Add PPA firmware version info output. > > > > arch/arm/cpu/armv8/fsl-layerscape/Makefile | 1 + > > arch/arm/cpu/armv8/fsl-layerscape/ppa.c| 48 > ++ > > arch/arm/include/asm/arch-fsl-layerscape/ppa.h | 16 + > > arch/arm/include/asm/armv8/sec_firmware.h | 4 +++ > > 4 files changed, 69 insertions(+) > > create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/ppa.c > > create mode 100644 arch/arm/include/asm/arch-fsl-layerscape/ppa.h > > > > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile > > b/arch/arm/cpu/armv8/fsl-layerscape/Makefile > > index eb2cbc3..bcf6b48 100644 > > --- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile > > +++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile > > @@ -10,6 +10,7 @@ obj-y += soc.o > > obj-$(CONFIG_MP) += mp.o > > obj-$(CONFIG_OF_LIBFDT) += fdt.o > > obj-$(CONFIG_SPL) += spl.o > > +obj-$(CONFIG_FSL_LS_PPA) += ppa.o > > > > ifneq ($(CONFIG_FSL_LSCH3),) > > obj-y += fsl_lsch3_speed.o > > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c > > b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c > > new file mode 100644 > > index 000..ae7d364 > > --- /dev/null > > +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c > > @@ -0,0 +1,48 @@ > > +/* > > + * Copyright 2016 NXP Semiconductor, Inc. > > + * > > + * SPDX-License-Identifier:GPL-2.0+ > > + */ > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#ifdef CONFIG_FSL_LSCH3 > > +#include > > +#elif defined(CONFIG_FSL_LSCH2) > > +#include > > +#endif > > +#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT #include > > + #endif > > + > > +int ppa_init(void) > > +{ > > + void *ppa_fit_addr; > > + u32 *boot_loc_ptr_l, *boot_loc_ptr_h; > > + int ret; > > + > > +#ifdef CONFIG_SYS_LS_PPA_FW_IN_NOR > > + ppa_fit_addr = (void *)CONFIG_SYS_LS_PPA_FW_ADDR; #else #error "No > > +CONFIG_SYS_LS_PPA_FW_IN_xxx defined" > > +#endif > > + > > +#ifdef CONFIG_FSL_LSCH3 > > + struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); > > + boot_loc_ptr_l = &gur->bootlocptrl; > > + boot_loc_ptr_h = &gur->bootlocptrh; > > +#elif defined(CONFIG_FSL_LSCH2) > > + struct ccsr_scfg __iomem *scfg = (void *)(CONFIG_SYS_FSL_SCFG_ADDR); > > + boot_loc_ptr_l = &scfg->scratchrw[1]; > > + boot_loc_ptr_h = &scfg->scratchrw[0]; #endif > > + > > + debug("fsl-ppa: boot_loc_ptr_l = 0x%p, boot_loc_ptr_h =0x%p\n", > > + boot_loc_ptr_l, boot_loc_ptr_h); > > Alignment issue. Didn't checkpatch remind you about this? Will fix it. Thanks, Zhiqiang ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot