On 11/16/2016 04:02 PM, Alexander Graf wrote: > When implementing efi loader support, we can expose runtime services > for payloads. One such service is CPU reset. > > This patch implements RTS CPU reset support for layerscape systems. > > Signed-off-by: Alexander Graf <ag...@suse.de> > Reviewed-by: York Sun <york....@nxp.com> > > --- > > v4 -> v5: > > - Use __efi_runtime tags > --- > arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 33 > +++++++++++++++++++++++++++++++-- > 1 file changed, 31 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c > b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c > index b7a2e0c..0b516e3 100644 > --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c > +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c > @@ -17,6 +17,7 @@ > #ifdef CONFIG_MP > #include <asm/arch/mp.h> > #endif > +#include <efi_loader.h> > #include <fm_eth.h> > #include <fsl-mc/fsl_mc.h> > #ifdef CONFIG_FSL_ESDHC > @@ -462,9 +463,10 @@ int timer_init(void) > return 0; > } > > -void reset_cpu(ulong addr) > +__efi_runtime_data u32 __iomem *rstcr = (u32 *)CONFIG_SYS_FSL_RST_ADDR; > + > +void __efi_runtime reset_cpu(ulong addr) > { > - u32 __iomem *rstcr = (u32 *)CONFIG_SYS_FSL_RST_ADDR; > u32 val; > > /* Raise RESET_REQ_B */ > @@ -473,6 +475,33 @@ void reset_cpu(ulong addr) > scfg_out32(rstcr, val); > } > > +#ifdef CONFIG_EFI_LOADER > + > +void __efi_runtime EFIAPI efi_reset_system( > + enum efi_reset_type reset_type, > + efi_status_t reset_status, > + unsigned long data_size, void *reset_data) > +{ > + switch (reset_type) { > + case EFI_RESET_COLD: > + case EFI_RESET_WARM: > + reset_cpu(0); > + break; > + case EFI_RESET_SHUTDOWN: > + /* Nothing we can do */ > + break; > + } > + > + while (1) { } > +} > + > +void efi_reset_system_init(void) > +{ > + efi_add_runtime_mmio(&rstcr, sizeof(*rstcr)); > +} > + > +#endif > + > phys_size_t board_reserve_ram_top(phys_size_t ram_size) > { > phys_size_t ram_top = ram_size; >
I still have this compiling error 21: armv8: fsl-layerscape: Add support for efi_loader RTS reset aarch64: + ls1043aqds ls1043aqds_qspi ls1043aqds_nand ls1043aqds_lpuart ls1043aqds_sdcard_qspi ls1043aqds_nor_ddr3 ls1043aqds_sdcard_ifc +(ls1043aqds,ls1043aqds_qspi,ls1043aqds_nand,ls1043aqds_lpuart,ls1043aqds_sdcard_qspi,ls1043aqds_nor_ddr3,ls1043aqds_sdcard_ifc) arch/arm/cpu/armv8/fsl-layerscape/built-in.o: In function `efi_reset_system': +(ls1043aqds,ls1043aqds_qspi,ls1043aqds_nand,ls1043aqds_lpuart,ls1043aqds_sdcard_qspi,ls1043aqds_nor_ddr3,ls1043aqds_sdcard_ifc) build/../arch/arm/cpu/armv8/fsl-layerscape/cpu.c:484: multiple definition of `efi_reset_system' +(ls1043aqds,ls1043aqds_qspi,ls1043aqds_nand,ls1043aqds_lpuart,ls1043aqds_sdcard_qspi,ls1043aqds_nor_ddr3,ls1043aqds_sdcard_ifc) arch/arm/cpu/armv8/fwcall.o:build/../arch/arm/cpu/armv8/fwcall.c:128: first defined here +(ls1043aqds,ls1043aqds_qspi,ls1043aqds_nand,ls1043aqds_lpuart,ls1043aqds_sdcard_qspi,ls1043aqds_nor_ddr3,ls1043aqds_sdcard_ifc) make[2]: *** [arch/arm/cpu/armv8/built-in.o] Error 1 +(ls1043aqds,ls1043aqds_qspi,ls1043aqds_nand,ls1043aqds_lpuart,ls1043aqds_sdcard_qspi,ls1043aqds_nor_ddr3,ls1043aqds_sdcard_ifc) make[1]: *** [arch/arm/cpu/armv8] Error 2 22: ls2080ardb: Convert to distro boot + exit 128 York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot