From mboxrd@z Thu Jan 1 00:00:00 1970 From: Geert Uytterhoeven Subject: Re: [RFC 10/37] soc: renesas: rcar-rst: Enable watchdog as reset trigger for Gen2 Date: Fri, 26 Jan 2018 11:05:58 +0100 Message-ID: References: <1516903391-30467-1-git-send-email-fabrizio.castro@bp.renesas.com> <1516903391-30467-11-git-send-email-fabrizio.castro@bp.renesas.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: In-Reply-To: <1516903391-30467-11-git-send-email-fabrizio.castro-kTT6dE0pTRh9uiUsa/gSgQ@public.gmane.org> Sender: linux-watchdog-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Fabrizio Castro Cc: Philipp Zabel , Rob Herring , Mark Rutland , Wim Van Sebroeck , Russell King , Catalin Marinas , Will Deacon , Michael Turquette , Stephen Boyd , Simon Horman , Magnus Damm , Geert Uytterhoeven , Guenter Roeck , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Linux Watchdog Mailing List , Linux-Renesas , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.orglinux-clk List-Id: devicetree@vger.kernel.org Hi Fabrizio, On Thu, Jan 25, 2018 at 7:02 PM, Fabrizio Castro wrote: > This patch allows for platform specific quirks as some of the SoC need > further customization for the watchdog to work properly, like for R-Car > Gen2 and for RZ/G. > > Signed-off-by: Fabrizio Castro > Signed-off-by: Ramesh Shanmugasundaram Thanks for your patch! > --- a/drivers/soc/renesas/rcar-rst.c > +++ b/drivers/soc/renesas/rcar-rst.c > @@ -13,8 +13,18 @@ > #include > #include > > +#define WDTRSTCR_RESET 0xA55A0002 > +#define WDTRSTCR 0x0054 > + > +static int gen2_configuration(void __iomem *base) rcar_rst_enable_wdt_reset()? > +{ > + iowrite32(WDTRSTCR_RESET, base + WDTRSTCR); > + return 0; > +} > + > struct rst_config { > - unsigned int modemr; /* Mode Monitoring Register Offset */ > + unsigned int modemr; /* Mode Monitoring Register Offset */ > + int (*configure)(void *base); /* Platform specific configuration */ > }; > > static const struct rst_config rcar_rst_gen1 __initconst = { > @@ -23,6 +33,7 @@ static const struct rst_config rcar_rst_gen1 __initconst = { > > static const struct rst_config rcar_rst_gen2 __initconst = { > .modemr = 0x60, > + .configure = gen2_configuration, BTW, does it hurt to do this on R-Car Gen3, too? Instead of a function pointer, you could also just have a feature bit. > }; > > static const struct rst_config rcar_rst_gen3 __initconst = { > @@ -79,6 +90,14 @@ static int __init rcar_rst_init(void) > rcar_rst_base = base; > cfg = match->data; > saved_mode = ioread32(base + cfg->modemr); > + if (cfg->configure) { > + error = cfg->configure(base); > + if (error) { > + pr_warn("%pOF: Cannot run SoC specific configuration\n", > + np); > + goto out_put; > + } > + } > > pr_debug("%pOF: MODE = 0x%08x\n", np, saved_mode); Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html