[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