On Sun, 23 Mar 2025 13:15:46 +0100
Jernej Škrabec <[email protected]> wrote:

Hi,

> Dne nedelja, 23. marec 2025 ob 12:35:23 Srednjeevropski standardni čas je 
> Andre Przywara napisal(a):
> > From: Jernej Skrabec <[email protected]>
> > 
> > The watchdog in the Allwinner A523 SoC differs a bit from the one in the
> > previous SoCs: it lives in a separate register frame, so no longer
> > inside some timer device, and it manages to shuffle around some
> > registers a bit.
> > 
> > Provide a new struct describing the register layout, and adjust the
> > address calculation in the SPL code accoringly. This is guarded by the
> > MACH_SUN55I_A523 Kconfig variable.  
> 
> This one is missing SoB, apparently by me :)

Yes, I don't think it's appropriate to add your Signed-off-by, so if
you could give it here.

> 
> > ---
> >  arch/arm/include/asm/arch-sunxi/watchdog.h | 12 ++++++++++++
> >  arch/arm/mach-sunxi/board.c                |  6 ++++++
> >  2 files changed, 18 insertions(+)
> > 
> > diff --git a/arch/arm/include/asm/arch-sunxi/watchdog.h 
> > b/arch/arm/include/asm/arch-sunxi/watchdog.h
> > index 38e2ef2aca3..96d5725141e 100644
> > --- a/arch/arm/include/asm/arch-sunxi/watchdog.h
> > +++ b/arch/arm/include/asm/arch-sunxi/watchdog.h
> > @@ -26,6 +26,18 @@ struct sunxi_wdog {
> >     u32 res[2];
> >  };
> >  
> > +#elif defined(CONFIG_MACH_SUN55I_A523)
> > +
> > +struct sunxi_wdog {
> > +   u32 irq_en;             /* 0x00 */
> > +   u32 irq_sta;            /* 0x04 */
> > +   u32 srst;               /* 0x08 */
> > +   u32 ctl;                /* 0x0c */
> > +   u32 cfg;                /* 0x10 */
> > +   u32 mode;               /* 0x14 */
> > +   u32 ocfg;               /* 0x18 */
> > +};  
> 
> Anyway, since you announced battle against C structures for register
> layout, it seems contraproductive to add it here. What do you think?

Well, I am all for it, but I guess that's another refactor patch first,
so please be my guest. I didn't deem this important enough to address
this now (it's not blocking as for the clocks), and this series is
already long enough, so I was just happy to take this working patch.
For development I really like having a working "reset" command ;-)

Cheers,
Andre

> 
> Best regards,
> Jernej
> 
> > +
> >  #else
> >  
> >  #define WDT_CFG_RESET              (0x1)
> > diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
> > index 701899ee4b2..89aea61e8e8 100644
> > --- a/arch/arm/mach-sunxi/board.c
> > +++ b/arch/arm/mach-sunxi/board.c
> > @@ -495,6 +495,12 @@ void reset_cpu(void)
> >             /* sun5i sometimes gets stuck without this */
> >             writel(WDT_MODE_RESET_EN | WDT_MODE_EN, &wdog->mode);
> >     }
> > +#elif defined(CONFIG_MACH_SUN55I_A523)
> > +   static const struct sunxi_wdog *wdog =
> > +           (struct sunxi_wdog *)SUNXI_TIMER_BASE;
> > +
> > +   writel(WDT_CTRL_KEY | WDT_CTRL_RESTART, &wdog->srst);
> > +   while (1) { }
> >  #elif defined(CONFIG_SUNXI_GEN_SUN6I) || defined(CONFIG_SUN50I_GEN_H6) || 
> > defined(CONFIG_SUNXI_GEN_NCAT2)
> >  #if defined(CONFIG_MACH_SUN50I_H6)
> >     /* WDOG is broken for some H6 rev. use the R_WDOG instead */
> >   
> 
> 
> 
> 
> 

Reply via email to