summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Estevam <festevam@gmail.com>2018-02-26 21:18:25 -0300
committerFabio Estevam <festevam@gmail.com>2018-02-26 21:48:12 -0300
commit3c939d6f1d4c5c70b26d23cbd2e3d3e67e2bca69 (patch)
tree56ec79b235b871624903b5f62b58922b3b08565e
parent4ce4aa984f968b5e2a66e609149b3fdcb01012eb (diff)
Revert "MLK-15083 watchdog: imx2_wdt: fallback to timeout reset if explicit reset fails"
This revert is only for fixing a conflict with the 4.9 stable tree merge. Will be added after the 4.9.84 merge. This reverts commit 378e9e0975ca57edee37b82f5013aec0e86d2973. Signed-off-by: Fabio Estevam <festevam@gmail.com>
-rw-r--r--drivers/watchdog/imx2_wdt.c45
1 files changed, 19 insertions, 26 deletions
diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
index f3352aa04f64..712d089c7592 100644
--- a/drivers/watchdog/imx2_wdt.c
+++ b/drivers/watchdog/imx2_wdt.c
@@ -93,26 +93,6 @@ static const struct watchdog_info imx2_wdt_pretimeout_info = {
WDIOF_PRETIMEOUT,
};
-static int imx2_wdt_ping(struct watchdog_device *wdog)
-{
- struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog);
-
- regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ1);
- regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ2);
- return 0;
-}
-
-
-static inline bool imx2_wdt_is_running(struct imx2_wdt_device *wdev)
-{
- u32 val;
-
- regmap_read(wdev->regmap, IMX2_WDT_WCR, &val);
-
- return val & IMX2_WDT_WCR_WDE;
-}
-
-
static int imx2_wdt_restart(struct watchdog_device *wdog, unsigned long action,
void *data)
{
@@ -128,9 +108,6 @@ static int imx2_wdt_restart(struct watchdog_device *wdog, unsigned long action,
/* Assert SRS signal */
regmap_write(wdev->regmap, IMX2_WDT_WCR, wcr_enable);
- if (imx2_wdt_is_running(wdev))
- imx2_wdt_ping(wdog);
-
/*
* Due to imx6q errata ERR004346 (WDOG: WDOG SRS bit requires to be
* written twice), we add another two writes to ensure there must be at
@@ -142,9 +119,7 @@ static int imx2_wdt_restart(struct watchdog_device *wdog, unsigned long action,
regmap_write(wdev->regmap, IMX2_WDT_WCR, wcr_enable);
/* wait for reset to assert... */
- mdelay(100);
- dev_err(wdog->parent, "failed to assert %s reset, trying with timeout\n",
- wdev->ext_reset ? "external" : "internal");
+ mdelay(500);
return 0;
}
@@ -178,6 +153,24 @@ static inline void imx2_wdt_setup(struct watchdog_device *wdog)
regmap_write(wdev->regmap, IMX2_WDT_WCR, val);
}
+static inline bool imx2_wdt_is_running(struct imx2_wdt_device *wdev)
+{
+ u32 val;
+
+ regmap_read(wdev->regmap, IMX2_WDT_WCR, &val);
+
+ return val & IMX2_WDT_WCR_WDE;
+}
+
+static int imx2_wdt_ping(struct watchdog_device *wdog)
+{
+ struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog);
+
+ regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ1);
+ regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ2);
+ return 0;
+}
+
static int imx2_wdt_set_timeout(struct watchdog_device *wdog,
unsigned int new_timeout)
{