Re: [PATCH 2/3] watchdog: rzv2h: Convert WDTDCR handling to regmap
"Lad, Prabhakar" <[email protected]> Tue, 14 Jul 2026 16:41:49 +0100
| Newsgroups | org.kernel.vger.linux-watchdog,org.kernel.vger.linux-kernel,org.kernel.vger.linux-renesas-soc |
|---|---|
| Message-ID | <CA+V-a8sBuKRDKDWzwzzofLY6mTAWFHiGJvyaLq865BZuR6r6-g@mail.gmail.com> |
Hi Philipp, Thank you for the review. On Fri, Jul 3, 2026 at 8:35 AM Philipp Zabel <[email protected]> wrote: > > On Do, 2026-07-02 at 17:04 +0100, Prabhakar wrote: > > From: Lad Prabhakar <[email protected]> > > > > Convert the WDTDCR register access from raw readl/writel variants over to > > the regmap framework using devm_regmap_init_mmio(). > > > > This conversion serves as a preparatory refactoring step. It allows the > > driver to subsequently support syscon-based system controllers natively > > by passing along alternative regmap handles without forcing messy > > architectural branching at runtime. > > > > Signed-off-by: Lad Prabhakar <[email protected]> > > --- > > drivers/watchdog/rzv2h_wdt.c | 83 +++++++++++++++++++++++++----------- > > 1 file changed, 57 insertions(+), 26 deletions(-) > > > > diff --git a/drivers/watchdog/rzv2h_wdt.c b/drivers/watchdog/rzv2h_wdt.c > > index e9545b8f5fd0..d0b38450cc32 100644 > > --- a/drivers/watchdog/rzv2h_wdt.c > > +++ b/drivers/watchdog/rzv2h_wdt.c > > @@ -12,6 +12,7 @@ > > #include <linux/of.h> > > #include <linux/platform_device.h> > > #include <linux/pm_runtime.h> > > +#include <linux/regmap.h> > > #include <linux/reset.h> > > #include <linux/units.h> > > #include <linux/watchdog.h> > > @@ -67,7 +68,7 @@ struct rzv2h_of_data { > > > > struct rzv2h_wdt_priv { > > void __iomem *base; > > - void __iomem *wdtdcr; > > + struct regmap *wdtdcr_regmap; > > struct clk *pclk; > > struct clk *oscclk; > > struct reset_control *rstc; > > @@ -89,26 +90,20 @@ static int rzv2h_wdt_ping(struct watchdog_device *wdev) > > return 0; > > } > > > > -static void rzt2h_wdt_wdtdcr_count_ctrl(struct rzv2h_wdt_priv *priv, bool start) > > +static int rzt2h_wdt_wdtdcr_count_ctrl(struct rzv2h_wdt_priv *priv, bool start) > > { > > - u32 reg = readl(priv->wdtdcr + WDTDCR); > > - > > - if (start) > > - reg &= ~WDTDCR_WDTSTOPCTRL; > > - else > > - reg |= WDTDCR_WDTSTOPCTRL; > > - > > - writel(reg, priv->wdtdcr + WDTDCR); > > + return regmap_update_bits(priv->wdtdcr_regmap, WDTDCR, WDTDCR_WDTSTOPCTRL, > > + start ? 0 : WDTDCR_WDTSTOPCTRL); > > } > > I would drop this helper function and just call regmap_set/clear_bits() > directly in rzt2h_wdt_wdtdcr_count_stop/start(). > Ok, I will update as suggested and send a v2. Cheers, Prabhakar