android_kernel_oneplus_msm8998/drivers/watchdog
Martin Kaiser febb867324 watchdog: imx2_wdt: restore previous timeout after suspend+resume
commit 0be267255cef64e1c58475baa7b25568355a3816 upstream.

When the watchdog device is suspended, its timeout is set to the maximum
value. During resume, the previously set timeout should be restored.
This does not work at the moment.

The suspend function calls

imx2_wdt_set_timeout(wdog, IMX2_WDT_MAX_TIME);

and resume reverts this by calling

imx2_wdt_set_timeout(wdog, wdog->timeout);

However, imx2_wdt_set_timeout() updates wdog->timeout. Therefore,
wdog->timeout is set to IMX2_WDT_MAX_TIME when we enter the resume
function.

Fix this by adding a new function __imx2_wdt_set_timeout() which
only updates the hardware settings. imx2_wdt_set_timeout() now calls
__imx2_wdt_set_timeout() and then saves the new timeout to
wdog->timeout.

During suspend, we call __imx2_wdt_set_timeout() directly so that
wdog->timeout won't be updated and we can restore the previous value
during resume. This approach makes wdog->timeout different from the
actual setting in the hardware which is usually not a good thing.
However, the two differ only while we're suspended and no kernel code is
running, so it should be ok in this case.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-02-16 20:09:45 +01: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 Merge git://www.linux-watchdog.org/linux-watchdog 2015-09-11 15:12:59 -07:00
at91sam9_wdt.c watchdog: at91sam9: get and use slow clock 2015-09-09 21:38:52 +02:00
at91sam9_wdt.h watchdog: add a driver to support SAMA5D4 watchdog timer 2015-09-09 21:38:29 +02:00
ath79_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm47xx_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
bcm63xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm2835_wdt.c watchdog: bcm2835: Fix poweroff behaviour 2015-09-28 10:56:05 +02:00
bcm7038_wdt.c watchdog: Watchdog driver for Broadcom Set-Top Box 2015-10-27 16:12:02 +01:00
bcm_kona_wdt.c watchdog: bcm281xx: Fix use of uninitialized spinlock. 2017-07-05 14:37:21 +02:00
bfin_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
booke_wdt.c watchdog: booke_wdt: Use infrastructure to check timeout limits 2015-09-09 21:34:34 +02:00
cadence_wdt.c watchdog: drop owner assignment from platform_drivers 2015-01-21 14:52:34 +01:00
coh901327_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +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: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
da9055_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
da9062_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
da9063_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
davinci_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
diag288_wdt.c s390/diag: add a statistic for diagnose calls 2015-10-14 14:32:06 +02:00
digicolor_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
dw_wdt.c watchdog: dw_wdt: keepalive the watchdog at write time 2015-06-22 15:54:31 +02:00
ep93xx_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
eurotechwdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
f71808e_wdt.c
gef_wdt.c watchdog: Fix module autoload for OF platform driver 2015-09-28 10:56:01 +02:00
geodewdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
gpio_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
hpwdt.c watchdog: hpwdt: Add support for WDIOC_SETOPTIONS 2015-06-22 15:54:36 +02: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: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
imgpdc_wdt.c watchdog: imgpdc: Unregister restart handler on remove 2015-09-09 21:33:41 +02:00
imx2_wdt.c watchdog: imx2_wdt: restore previous timeout after suspend+resume 2018-02-16 20:09:45 +01:00
indydog.c watchdog: indydog: Simplify indydog_{start,stop} 2014-03-31 13:26:31 +02:00
intel-mid_wdt.c watchdog: intel-mid: add Magic Closure flag 2015-10-28 22:58:32 +01:00
intel_scu_watchdog.c watchdog: intel_scu_watchdog: Remove unused variable 2014-03-31 13:26:56 +02:00
intel_scu_watchdog.h
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
iTCO_vendor_support.c
iTCO_wdt.c watchdog: iTCO_wdt: Add support for TCO on Intel Sunrisepoint 2015-08-11 15:03:52 +01:00
ixp4xx_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
jz4740_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
Kconfig watchdog: Add support for Freescale Layerscape platforms 2015-11-23 09:00:03 +01:00
kempld_wdt.c watchdog: kempld: fix gcc-4.3 build 2017-10-21 17:09:04 +02:00
ks8695_wdt.c char: make misc_deregister a void function 2015-08-05 10:35:49 -07:00
lantiq_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
lpc18xx_wdt.c watchdog: lpc18xx_wdt_get_timeleft() can be static 2015-09-09 21:36:17 +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: Watchdog driver for Broadcom Set-Top Box 2015-10-27 16:12:02 +01:00
max63xx_wdt.c watchdog: max63xx: dynamically allocate device 2015-06-29 11:50:53 +02:00
mena21_wdt.c watchdog: Fix module autoload for OF platform driver 2015-09-28 10:56:01 +02:00
menf21bmc_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +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: Fix module autoload for OF platform driver 2015-09-28 10:56:01 +02:00
mpc8xxx_wdt.c watchdog: mpc8xxx: use better error code when watchdog cannot be enabled 2015-09-09 21:37:51 +02:00
mtk_wdt.c watchdog: mtk_wdt: Use MODE_KEY when stopping the watchdog 2015-11-23 09:00:09 +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: (nv_tco) add support for MCP79 2015-09-09 21:34:24 +02:00
nv_tco.h
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
of_xilinx_wdt.c watchdog: xilinx: Remove .owner field for driver 2014-10-20 20:43:42 +02:00
omap_wdt.c watchdog: omap_wdt: fix null pointer dereference 2015-11-23 08:58:21 +01:00
omap_wdt.h watchdog: omap_wdt: implement get_timeleft 2015-06-22 15:54:35 +02:00
orion_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02: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: pcwd_usb: fix NULL-deref at probe 2017-05-25 14:30:07 +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: make global wdt_clk static 2015-11-23 08:59:07 +01:00
qcom-wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
rc32434_wdt.c watchdog: rc32434_wdt: fix ioctl error handling 2016-04-12 09:08:54 -07:00
rdc321x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
retu_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02: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: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
s3c2410_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
sa1100_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
sama5d4_wdt.c watchdog: add a driver to support SAMA5D4 watchdog timer 2015-09-09 21:38:29 +02: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: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
sirfsoc_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +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: Fix parent of watchdog_devices 2015-09-09 21:39:22 +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: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
stmp3xxx_rtc_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
sunxi_wdt.c watchdog: sunxi: fix activation of system reset 2015-09-09 21:34:14 +02:00
tegra_wdt.c watchdog: tegra: Stop watchdog first if restarting 2015-11-23 08:59:45 +01:00
ts72xx_wdt.c char: make misc_deregister a void function 2015-08-05 10:35:49 -07:00
twl4030_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
txx9wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
ux500_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
via_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +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: w83977f_wdt: underflow in wdt_set_timeout() 2015-11-23 08:59:30 +01:00
wafer5823wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
watchdog_core.c watchdog: watchdog_dev: Use device tree alias for naming watchdogs 2015-10-27 16:49:57 +01:00
watchdog_core.h
watchdog_dev.c watchdog: core: propagate ping error code to the user space 2015-11-03 14:36:14 +01: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: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
wm8350_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
xen_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00