[U-Boot] [PATCH v8 7/8] armv8: fsl-layerscape: Add support for efi_loader RTS reset

york sun york.sun at nxp.com
Thu Nov 17 17:41:43 CET 2016


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 <agraf at suse.de>
> Reviewed-by: York Sun <york.sun at 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


More information about the U-Boot mailing list