Message ID | 20210623024429.1346349-3-art@khadas.com |
---|---|
State | New |
Headers | show |
Series | watchdog: meson_gxbb_wdt: improve | expand |
On 6/22/21 7:44 PM, Artem Lapkin wrote: > Added timeout module param same as in other modules > > Signed-off-by: Artem Lapkin <art@khadas.com> > --- > drivers/watchdog/meson_gxbb_wdt.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/watchdog/meson_gxbb_wdt.c b/drivers/watchdog/meson_gxbb_wdt.c > index 3f86530c33b0..ecd1fc6f48ba 100644 > --- a/drivers/watchdog/meson_gxbb_wdt.c > +++ b/drivers/watchdog/meson_gxbb_wdt.c > @@ -29,6 +29,11 @@ > #define GXBB_WDT_TCNT_SETUP_MASK (BIT(16) - 1) > #define GXBB_WDT_TCNT_CNT_SHIFT 16 > > +static unsigned int timeout = DEFAULT_TIMEOUT; > +module_param(timeout, uint, 0); > +MODULE_PARM_DESC(timeout, "Watchdog heartbeat in seconds=" > + __MODULE_STRING(DEFAULT_TIMEOUT) ")"); > + > struct meson_gxbb_wdt { > void __iomem *reg_base; > struct watchdog_device wdt_dev; > @@ -174,7 +179,7 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev) > data->wdt_dev.ops = &meson_gxbb_wdt_ops; > data->wdt_dev.max_hw_heartbeat_ms = GXBB_WDT_TCNT_SETUP_MASK; > data->wdt_dev.min_timeout = 1; > - data->wdt_dev.timeout = DEFAULT_TIMEOUT; > + data->wdt_dev.timeout = timeout; This is wrong. A timeout module parameter should be set with a call to watchdog_init_timeout(), the initial value should be 0, and data->wdt_dev.timeout should be kept as-is. This ensures that the module parameter is validated. Guenter > watchdog_set_drvdata(&data->wdt_dev, data); > > /* Setup with 1ms timebase */ >
diff --git a/drivers/watchdog/meson_gxbb_wdt.c b/drivers/watchdog/meson_gxbb_wdt.c index 3f86530c33b0..ecd1fc6f48ba 100644 --- a/drivers/watchdog/meson_gxbb_wdt.c +++ b/drivers/watchdog/meson_gxbb_wdt.c @@ -29,6 +29,11 @@ #define GXBB_WDT_TCNT_SETUP_MASK (BIT(16) - 1) #define GXBB_WDT_TCNT_CNT_SHIFT 16 +static unsigned int timeout = DEFAULT_TIMEOUT; +module_param(timeout, uint, 0); +MODULE_PARM_DESC(timeout, "Watchdog heartbeat in seconds=" + __MODULE_STRING(DEFAULT_TIMEOUT) ")"); + struct meson_gxbb_wdt { void __iomem *reg_base; struct watchdog_device wdt_dev; @@ -174,7 +179,7 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev) data->wdt_dev.ops = &meson_gxbb_wdt_ops; data->wdt_dev.max_hw_heartbeat_ms = GXBB_WDT_TCNT_SETUP_MASK; data->wdt_dev.min_timeout = 1; - data->wdt_dev.timeout = DEFAULT_TIMEOUT; + data->wdt_dev.timeout = timeout; watchdog_set_drvdata(&data->wdt_dev, data); /* Setup with 1ms timebase */
Added timeout module param same as in other modules Signed-off-by: Artem Lapkin <art@khadas.com> --- drivers/watchdog/meson_gxbb_wdt.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)