[PATCH v4] watchdog: Add DA906x PMIC watchdog driver.
Markus Pargmann
mpa at pengutronix.de
Sun Aug 24 08:00:07 PDT 2014
Hi Steve,
On Fri, Aug 22, 2014 at 03:47:48PM +0000, Opensource [Steve Twiss] wrote:
> On 16 August 2014 13:36, Markus Pargmann [mailto:mpa at pengutronix.de] wrote:
>
> > Subject: [PATCH v4] watchdog: Add DA906x PMIC watchdog driver.
>
> Hi Markus,
>
> >
> > From: Krystian Garbaciak <krystian.garbaciak at diasemi.com>
> >
> > This driver supports the watchdog device inside the DA906x PMIC.
> >
>
> There is only DA9063 , in this case there is no "x". Thanks.
Thanks, fixed in the commit message.
>
> [...]
>
> > +
> > +/*
> > + * Watchdog selector to timeout in seconds.
> > + * 0: WDT disabled;
> > + * others: timeout = 2048 ms * 2^(TWDSCALE-1).
> > + */
> > +static const int wdt_timeout[] = { 0, 2, 4, 8, 16, 32, 65, 131 };
>
> This table is just an approximation of the real times provided by the PMIC.
>
> The first three bits in the CONTROL_D register at 0x11 define a scaling value
> for the nominal maximum time TWDMAX. The 7 values specifying the timeout
> of the watchdog are:
>
> 001 = 1 = 1x = 2048ms
> 010 = 2 = 2x = 4096ms
> 011 = 3 = 4x = 8192ms
> 100 = 4 = 8x = 16384ms
> 101 = 5 = 16x = 32768ms
> 110 = 6 = 32x = 65536ms
> 111 = 7 = 64x = 131072ms
Thanks. So the 7 values are good approximations for the real values
right?
>
> [...]
>
> > +
> > +static int da9063_wdt_disable(struct da9063 *da9063)
> > +{
> > + return regmap_update_bits(da9063->regmap,
> > DA9063_REG_CONTROL_D,
> > + DA9063_TWDSCALE_MASK,
> > + DA9063_TWDSCALE_DISABLE);
> > +}
> > +
> > +static int _da9063_wdt_set_timeout(struct da9063 *da9063, unsigned int
> > regval)
> > +{
> > + return regmap_update_bits(da9063->regmap,
> > DA9063_REG_CONTROL_D,
> > + DA9063_TWDSCALE_MASK, regval);
> > +}
> > +
> > +static int _da9063_wdt_kick(struct da9063 *da9063)
> > +{
> > + return regmap_write(da9063->regmap, DA9063_REG_CONTROL_F,
> > + DA9063_WATCHDOG);
> > +}
> > +
>
> The _da9063_wdt_kick() and da9063_wdt_disable() functions are only used once
> throughout the code -- in the watchdog_ops functions da9063_wdt_ping() and
> da9063_wdt_stop() respectively.
> Since these are just simple regmap calls, could they be added at those places
> directly and therefore remove the function calls?
Thanks, I removed those functions and included the regmap function calls
directly as they are already well described by the functions from which
they are called.
>
> [...]
>
> > +static int da9063_wdt_start(struct watchdog_device *wdd)
> > +{
> > + struct da9063_watchdog *wdt = watchdog_get_drvdata(wdd);
> > + unsigned int selector;
> > + int ret;
> > +
> > + selector = da9063_wdt_timeout_to_sel(wdt->wdtdev.timeout);
> > + if (selector < 0) {
>
> Unsigned if < 0
That was already fixed for the next version.
Thanks,
Markus
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140824/947ef81b/attachment.sig>
More information about the linux-arm-kernel
mailing list