On 11/27/19 4:40 PM, Claudius Heine wrote: > On 27/11/2019 16.21, Marek Vasut wrote: >> 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 ? > > Well that would probably not enough. I would also need settings for the > watchdog, because the SPL does not have DM support, so while u-boot uses > CONFIG_WATCHDOG the SPL uses CONFIG_HW_WATCHDOG. > > Easier that changing all this is something like this in the board header > file (as I described in the commit description): > > #if defined(CONFIG_SPL_BUILD) > #undef CONFIG_WDT > #undef CONFIG_WATCHDOG > #undef CONFIG_SYSRESET > #define CONFIG_HW_WATCHDOG > #endif
Can't we add DM watchdog to SPL instead ? > In case of imx6, that way the SPL uses the hw_watchdog_reset from the > imx watchdog driver instead of the 'watchdog_reset'. > > 'watchdog_reset' is not available since that is implemented in > wdt-uclass.c and CONFIG_SPL_WDT depends on SPL_DM. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot