On 11/27/19 4:17 PM, Claudius Heine wrote:
> On 27/11/2019 16.12, Marek Vasut wrote:
>> On 11/27/19 4:09 PM, Claudius Heine wrote:
>>> Hi Marek,
>>>
>>> On 27/11/2019 15.47, Marek Vasut wrote:
>>>> On 11/27/19 3:20 PM, Claudius Heine wrote:
>>>>> In case CONFIG_SYSRESET is set, do_reset from reset.c will not be 
>>>>> available
>>>>> anywere, even if SYSRESET is disabled for SPL in the board specific header
>>>>> file like this:
>>>>>
>>>>>     #if defined(CONFIG_SPL_BUILD)
>>>>>     #undef CONFIG_WDT
>>>>>     #undef CONFIG_WATCHDOG
>>>>>     #undef CONFIG_SYSRESET
>>>>>     #define CONFIG_HW_WATCHDOG
>>>>>     #endif
>>>>>
>>>>> 'do_reset' is called from SPL for instance from the panic handler in case
>>>>> SPL_USB_SDP is enabled and PANIC_HANG is not set.
>>>>>
>>>>> Setting PANIC_HANG would solve this issue, but it also changes the 
>>>>> behavior
>>>>> in case a panic occurs.
>>>>>
>>>>> Signed-off-by: Claudius Heine <c...@denx.de>
>>>>> ---
>>>>>  arch/arm/lib/Makefile | 2 --
>>>>>  arch/arm/lib/reset.c  | 2 ++
>>>>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
>>>>> index 9de9a9acee..763eb4498f 100644
>>>>> --- a/arch/arm/lib/Makefile
>>>>> +++ b/arch/arm/lib/Makefile
>>>>> @@ -56,9 +56,7 @@ obj-y   += interrupts_64.o
>>>>>  else
>>>>>  obj-y    += interrupts.o
>>>>>  endif
>>>>> -ifndef CONFIG_SYSRESET
>>>>>  obj-y    += reset.o
>>>>> -endif
>>>>>  
>>>>>  obj-y    += cache.o
>>>>>  obj-$(CONFIG_SYS_ARM_CACHE_CP15) += cache-cp15.o
>>>>> diff --git a/arch/arm/lib/reset.c b/arch/arm/lib/reset.c
>>>>> index f3ea116e87..11e680be1d 100644
>>>>> --- a/arch/arm/lib/reset.c
>>>>> +++ b/arch/arm/lib/reset.c
>>>>> @@ -22,6 +22,7 @@
>>>>>  
>>>>>  #include <common.h>
>>>>>  
>>>>> +#if !defined(CONFIG_SYSRESET)
>>>>>  __weak void reset_misc(void)
>>>>>  {
>>>>>  }
>>>>> @@ -40,3 +41,4 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char 
>>>>> * const argv[])
>>>>>   /*NOTREACHED*/
>>>>>   return 0;
>>>>>  }
>>>>> +#endif
>>>>
>>>> Does this mean there's now one huge ifdef around the entire source file?
>>>> That's odd.
>>>
>>> Right. Other suggestions?
>>>
>>> Maybe having 'do_reset' here as a weak instead, so that sysreset can
>>> overwrite it? But then the other definitions in arch/*/lib/reset.c
>>> should probably be the same for consistency sake?
>>>
>>> I tried with this patch not to change anything in case SYSRESET is
>>> enabled too much and since the file isn't too large I thought that would
>>> be ok for now.
>>
>> What if sysreset implemented do_reset ? Wouldn't that solve the issue ?
> 
> Not sure what you mean... sysreset implements do_reset:
> 
> https://gitlab.denx.de/u-boot/u-boot/blob/master/drivers/sysreset/sysreset-uclass.c#L112
> 
> But the SPL does not have sysreset in this case, so it needs something
> different.

Oh, so you need CONFIG_$(SPL_TPL_)SYSRESET then ?
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to