[PATCH] watchdog: add support for the Synopsys DesignWare WDT

Jamie Iles jamie at jamieiles.com
Fri Jan 21 13:08:39 EST 2011


On Wed, Jan 12, 2011 at 10:46:28AM +0530, viresh kumar wrote:
> > +       if (ret)
> > +               goto out_put_clk;
> > +
> > +       /*
> > +        * The timeout period of the watchdog is derived from the input clock
> > +        * frequency.  For platforms that don't have a clk for the watchdog,
> > +        * they can specify the WDT clock rate through the clk_rate field of
> > +        * the struct dw_wdt_platform_data platform data.
> > +        */
> > +       if (pdata && pdata->clk_rate > 0)
> > +               dw_wdt.clk_rate = pdata->clk_rate;
> > +       else
> > +               dw_wdt.clk_rate = clk_get_rate(dw_wdt.clk);
> > +
> 
> I know it doesn't make sense for a platform to have support for clk framework
> and pass rate through plat data.
> But this code will always take pdata->rate, if it is passed.
> Wouldn't it be better if we reverse the sequence.
> 
> if (clk)
>  rate = clk_get_rate(...);
> else {
>  pdata = pdev->dev.platform_data;
>  if (pdata)
>   rate = pdata->rate;
> }

Hmm, looking back at this again, I wonder if the correct thing to do is 
just add a dependency in Kconfig for the driver on HAVE_CLK like 
drivers/spi/dw_spi_mmio and ditch the ability to set the rate through 
platform data?  The platform has to at least provide clk_get(), 
clk_put() and clk_get_rate() at a minimum or the driver won't even 
build...

This would make things a lot simpler and it's not as if this is going to 
break anything as there aren't currently any users of the driver (and 
the one that will be does support the clk framework).

Jamie



More information about the linux-arm-kernel mailing list