[PATCH 2/2] xilinx: zynqmp: Enable reset_cpu() in SPL

Lukas Funke lukas.funke-oss at weidmueller.com
Tue Jun 4 11:12:16 CEST 2024


On 03.06.2024 17:08, Michal Simek wrote:
> 
> 
> On 6/3/24 16:50, Lukas Funke wrote:
>> On 03.06.2024 16:32, Michal Simek wrote:
>>>
>>>
>>> On 6/3/24 15:34, lukas.funke-oss at weidmueller.com wrote:
>>>> From: Lukas Funke <lukas.funke at weidmueller.com>
>>>>
>>>> This commit enables SPL to reset the CPU via PMU-firmware. The usual
>>>> reset mechanism requires bl31 to be loaded which may not be the case in
>>>> SPL.
>>>>
>>>> Signed-off-by: Lukas Funke <lukas.funke at weidmueller.com>
>>>> ---
>>>>
>>>>   board/xilinx/zynqmp/zynqmp.c | 9 +++++++++
>>>>   1 file changed, 9 insertions(+)
>>>>
>>>> diff --git a/board/xilinx/zynqmp/zynqmp.c 
>>>> b/board/xilinx/zynqmp/zynqmp.c
>>>> index 95a134b972d..99f5c178c1d 100644
>>>> --- a/board/xilinx/zynqmp/zynqmp.c
>>>> +++ b/board/xilinx/zynqmp/zynqmp.c
>>>> @@ -40,6 +40,7 @@
>>>>   #include <linux/bitops.h>
>>>>   #include <linux/delay.h>
>>>>   #include <linux/sizes.h>
>>>> +#include <dt-bindings/reset/xlnx-zynqmp-resets.h>
>>>>   #include "../common/board.h"
>>>>   #include "pm_cfg_obj.h"
>>>> @@ -285,6 +286,14 @@ int dram_init(void)
>>>>   #if !CONFIG_IS_ENABLED(SYSRESET)
>>>>   void reset_cpu(void)
>>>>   {
>>>> +    if (!CONFIG_IS_ENABLED(ZYNQMP_FIRMWARE)) {
>>>> +        log_warning("reset failed: ZYNQMP_FIRMWARE disabled");
>>>> +        return;
>>>> +    }
>>>> +
>>>> +    xilinx_pm_request(PM_RESET_ASSERT,
>>>> +              ZYNQMP_PM_RESET_START + ZYNQMP_RESET_SOFT,
>>>> +              PM_RESET_ACTION_ASSERT, 0, 0, NULL);
>>>
>>> If you disable ZYNQMP_FIRMWARE xilinx_pm_request() should fail.
>>>
>>> we should likely fix it in drivers/mmc/zynq_sdhci.c:114
>>
>> That's an odd place for a default implementation. I'd like to move the 
>> functions to a common location but I've no idea where. That's probably 
>> why the last developer moved it here. Any suggestions?
> 
> static inline to include/zynqmp_firmware.h?

Sound like the right place.

Currently zynqmp is not buildable when disabling CONFIG_ZYNQMP_FIRMWARE. 
I'm not sure if it even makes sense to disable it. Maybe this should be 
enforced!?

However, I'll drop the 1/2 patch and convert 'CONFIG_IS_ENABLED' to 
'IS_ENABLED' in v2 to get finish this series. Refactoring should be 
addressed in another series.

Best regards
- Lukas

> 
> M



More information about the U-Boot mailing list