kernel-fxtec-pro1x/drivers/watchdog
Uwe Kleine-König 530c11d432 watchdog: omap: assert the counter being stopped before reprogramming
The omap watchdog has the annoying behaviour that writes to most
registers don't have any effect when the watchdog is already running.
Quoting the AM335x reference manual:

	To modify the timer counter value (the WDT_WCRR register),
	prescaler ratio (the WDT_WCLR[4:2] PTV bit field), delay
	configuration value (the WDT_WDLY[31:0] DLY_VALUE bit field), or
	the load value (the WDT_WLDR[31:0] TIMER_LOAD bit field), the
	watchdog timer must be disabled by using the start/stop sequence
	(the WDT_WSPR register).

Currently the timer is stopped in the .probe callback but still there
are possibilities that yield to a situation where omap_wdt_start is
entered with the timer running (e.g. when /dev/watchdog is closed
without stopping and then reopened). In such a case programming the
timeout silently fails!

To circumvent this stop the timer before reprogramming.

Assuming one of the first things the watchdog user does is setting the
timeout explicitly nothing too bad should happen because this explicit
setting works fine.

Fixes: 7768a13c25 ("[PATCH] OMAP: Add Watchdog driver support")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
2015-06-22 15:54:07 +02:00
..
acquirewdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
advantechwdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
alim1535_wdt.c watchdog: remove DEFINE_PCI_DEVICE_TABLE macro 2014-01-28 19:07:07 +01:00
alim7101_wdt.c watchdog: alim7101: register restart handler with kernel restart handler 2014-09-26 00:00:32 -07:00
ar7_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
at32ap700x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
at91rm9200_wdt.c watchdog: at91rm9200: implement restart handler 2015-03-16 17:03:02 +01:00
at91sam9_wdt.c watchdog: at91sam9: use endian agnostic IO 2015-06-22 15:53:57 +02:00
at91sam9_wdt.h ARM: at91: make watchdog drivers soc independent 2011-11-28 22:50:39 +08:00
ath79_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm47xx_wdt.c watchdog: bcm47xx_wdt.c: add restart handler support 2015-02-17 21:33:27 +01:00
bcm63xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm2835_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm_kona_wdt.c watchdog: bcm281xx: Remove use of seq_printf return value 2015-04-22 15:27:39 +02:00
bfin_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
booke_wdt.c powerpc: booke_wdt: Fix build error as a module 2014-10-20 20:44:22 +02:00
cadence_wdt.c watchdog: drop owner assignment from platform_drivers 2015-01-21 14:52:34 +01:00
coh901327_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
cpu5wdt.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
cpwd.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
da9052_wdt.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
da9055_wdt.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
da9063_wdt.c watchdog: da9063: Add restart handler support 2015-02-17 21:33:06 +01:00
davinci_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
diag288_wdt.c s390/watchdog: support for KVM hypervisors and delete pr_info messages 2015-03-25 11:49:42 +01:00
digicolor_wdt.c watchdog: digicolor: driver for Conexant Digicolor CX92755 SoC 2015-06-22 15:53:59 +02:00
dw_wdt.c watchdog: dw_wdt: Try to get a 30 second watchdog by default 2015-02-17 21:33:49 +01:00
ep93xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
eurotechwdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
f71808e_wdt.c watchdog: f71808e_wdt: Add support for Jetway JNF99 motherboard 2012-07-23 12:46:38 +02:00
gef_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
geodewdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
gpio_wdt.c watchdog: gpio_wdt: Add "always_running" feature to GPIO watchdog 2015-02-17 21:33:22 +01:00
hpwdt.c watchdog: hpwdt: Fix initialization message in hpwdt.c 2015-02-17 21:32:10 +01:00
i6300esb.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
ib700wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ibmasr.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
ie6xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
imgpdc_wdt.c watchdog: imgpdc: Fix default heartbeat 2015-03-27 08:47:50 +01:00
imx2_wdt.c watchdog: imx2: Constify struct regmap_config and watchdog_ops 2015-02-17 21:31:06 +01:00
indydog.c watchdog: indydog: Simplify indydog_{start,stop} 2014-03-31 13:26:31 +02:00
intel-mid_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
intel_scu_watchdog.c watchdog: intel_scu_watchdog: Remove unused variable 2014-03-31 13:26:56 +02:00
intel_scu_watchdog.h watchdog: Use pr_<fmt> and pr_<level> 2012-03-27 19:59:26 +02:00
iop_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
it87_wdt.c watchdog: it87_wdt: add IT8783 ID 2015-02-17 21:32:08 +01:00
it8712f_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
iTCO_vendor.h watchdog: Convert iTCO_wdt driver to mfd model 2012-05-09 17:20:09 +02:00
iTCO_vendor_support.c watchdog: Convert iTCO_wdt driver to mfd model 2012-05-09 17:20:09 +02:00
iTCO_wdt.c PM / watchdog: iTCO: stop watchdog during system suspend 2015-04-03 15:25:04 +02:00
ixp4xx_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
jz4740_wdt.c watchdog: jz4740: Add DT support 2015-02-17 21:34:09 +01:00
Kconfig watchdog: digicolor: driver for Conexant Digicolor CX92755 SoC 2015-06-22 15:53:59 +02:00
kempld_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ks8695_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
lantiq_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
m54xx_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
machzwd.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
Makefile watchdog: digicolor: driver for Conexant Digicolor CX92755 SoC 2015-06-22 15:53:59 +02:00
max63xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
mena21_wdt.c watchdog: New watchdog driver for MEN A21 watchdogs 2013-07-11 22:19:05 +02:00
menf21bmc_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
meson_wdt.c watchdog: drop owner assignment from platform_drivers 2015-01-21 14:52:34 +01:00
mixcomwd.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
moxart_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
mpc8xxx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
mtk_wdt.c watchdog: mtk_wdt: signedness bug in mtk_wdt_start() 2015-03-27 08:47:36 +01:00
mtx-1_wdt.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
mv64x60_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
nuc900_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
nv_tco.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
nv_tco.h watchdog: Add TCO support for nVidia chipsets 2011-01-12 13:51:23 +00:00
octeon-wdt-main.c watchdog: octeon: use fixed length string for register names 2015-04-22 15:28:40 +02:00
octeon-wdt-nmi.S WATCHDOG: Add watchdog driver for OCTEON SOCs 2010-08-05 13:26:22 +01:00
of_xilinx_wdt.c watchdog: xilinx: Remove .owner field for driver 2014-10-20 20:43:42 +02:00
omap_wdt.c watchdog: omap: assert the counter being stopped before reprogramming 2015-06-22 15:54:07 +02:00
omap_wdt.h watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
orion_wdt.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
pc87413_wdt.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
pcwd.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
pcwd_pci.c watchdog: remove DEFINE_PCI_DEVICE_TABLE macro 2014-01-28 19:07:07 +01:00
pcwd_usb.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
pika_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
pnx833x_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
pnx4008_wdt.c watchdog: pnx4008_wdt: fix broken email address 2015-04-22 15:30:41 +02:00
qcom-wdt.c watchdog: qcom: use timer devicetree binding 2015-04-22 15:27:47 +02:00
rc32434_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
rdc321x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
retu_wdt.c watchdog: Fix omap watchdogs to enable the magic close bit 2015-02-17 21:32:36 +01:00
riowd.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
rn5t618_wdt.c watchdog: add driver for Ricoh RN5T618 watchdog 2014-10-20 20:55:02 +02:00
rt2880_wdt.c watchdog: rt2880_wdt: minor clean up 2015-02-17 21:32:21 +01:00
s3c2410_wdt.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
sa1100_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sb_wdog.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sbc60xxwdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sbc7240_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sbc8360.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sbc_epx_c3.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sbc_fitpc2_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sc520_wdt.c watchdog: sc520_wdt: Remove unused variable 2014-03-31 13:27:34 +02:00
sc1200wdt.c sc1200_wdt: Fix oops 2013-12-10 08:48:15 +01:00
sch311x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
scx200_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
shwdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
sirfsoc_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
smsc37b787_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
softdog.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
sp805_wdt.c watchdog: sp805: Set watchdog_device->timeout from ->set_timeout() 2014-06-10 21:47:47 +02:00
sp5100_tco.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
sp5100_tco.h watchdog: sp5100_tco: Set the AcpiMmioSel bitmask value to 1 instead of 2 2013-03-22 23:21:55 +01:00
st_lpc_wdt.c watchdog: st_wdt: Update IP layout information to include Clocksource 2015-06-22 15:53:52 +02:00
stmp3xxx_rtc_wdt.c watchdog: stmp3xxx_rtc_wdt: fix broken email address 2015-04-22 15:30:45 +02:00
sunxi_wdt.c Merge branch 'platform/remove_owner' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux into driver-core-next 2014-11-03 19:53:56 -08:00
tegra_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ts72xx_wdt.c Merge branch 'platform/remove_owner' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux into driver-core-next 2014-11-03 19:53:56 -08:00
twl4030_wdt.c watchdog: Fix omap watchdogs to enable the magic close bit 2015-02-17 21:32:36 +01:00
txx9wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ux500_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
via_wdt.c watchdog: via_wdt: replace del_timer by del_timer_sync 2014-06-10 21:38:25 +02:00
w83627hf_wdt.c watchdog: w83627hf_wdt: Add support for NCT6791 and NCT6792 2015-02-17 21:33:37 +01:00
w83877f_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
w83977f_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
wafer5823wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
watchdog_core.c watchdog: core: Make dt "timeout-sec" property work on drivers w/out min/max 2014-01-28 19:07:56 +01:00
watchdog_core.h watchdog: Add multiple device support 2012-05-30 07:54:25 +02:00
watchdog_dev.c watchdog: core: don't try to stop device if not running 2013-07-11 21:14:39 +02:00
wd501p.h
wdrtas.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
wdt285.c watchdog: wdt285: Fix variable type 2014-03-31 13:28:20 +02:00
wdt977.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
wdt_pci.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
wm831x_wdt.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
wm8350_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
xen_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00