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

Alexander Graf agraf at suse.de
Thu Nov 17 17:43:45 CET 2016



On 17/11/2016 17:41, york sun wrote:
> 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

Can you please try my efi-next branch? It should hopefully be properly 
fixed in there.


Alex


More information about the U-Boot mailing list