Commit eecd231a authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'linux-watchdog-5.15-rc7' of git://www.linux-watchdog.org/linux-watchdog

Pull watchdog fixes from Wim Van Sebroeck:
 "I overlooked Guenters request to sent this upstream earlier, so it's a
  bit late in the release cycle.

  This contains:

   - Revert "watchdog: iTCO_wdt: Account for rebooting on second
     timeout"

   - sbsa: only use 32-bit accessors

   - sbsa: drop unneeded MODULE_ALIAS

   - ixp4xx_wdt: Fix address space warning

   - Fix OMAP watchdog early handling"

* tag 'linux-watchdog-5.15-rc7' of git://www.linux-watchdog.org/linux-watchdog:
  watchdog: Fix OMAP watchdog early handling
  watchdog: ixp4xx_wdt: Fix address space warning
  watchdog: sbsa: drop unneeded MODULE_ALIAS
  watchdog: sbsa: only use 32-bit accessors
  Revert "watchdog: iTCO_wdt: Account for rebooting on second timeout"
parents fc18cc89 cd004d82
...@@ -71,8 +71,6 @@ ...@@ -71,8 +71,6 @@
#define TCOBASE(p) ((p)->tco_res->start) #define TCOBASE(p) ((p)->tco_res->start)
/* SMI Control and Enable Register */ /* SMI Control and Enable Register */
#define SMI_EN(p) ((p)->smi_res->start) #define SMI_EN(p) ((p)->smi_res->start)
#define TCO_EN (1 << 13)
#define GBL_SMI_EN (1 << 0)
#define TCO_RLD(p) (TCOBASE(p) + 0x00) /* TCO Timer Reload/Curr. Value */ #define TCO_RLD(p) (TCOBASE(p) + 0x00) /* TCO Timer Reload/Curr. Value */
#define TCOv1_TMR(p) (TCOBASE(p) + 0x01) /* TCOv1 Timer Initial Value*/ #define TCOv1_TMR(p) (TCOBASE(p) + 0x01) /* TCOv1 Timer Initial Value*/
...@@ -357,12 +355,8 @@ static int iTCO_wdt_set_timeout(struct watchdog_device *wd_dev, unsigned int t) ...@@ -357,12 +355,8 @@ static int iTCO_wdt_set_timeout(struct watchdog_device *wd_dev, unsigned int t)
tmrval = seconds_to_ticks(p, t); tmrval = seconds_to_ticks(p, t);
/* /* For TCO v1 the timer counts down twice before rebooting */
* If TCO SMIs are off, the timer counts down twice before rebooting. if (p->iTCO_version == 1)
* Otherwise, the BIOS generally reboots when the SMI triggers.
*/
if (p->smi_res &&
(inl(SMI_EN(p)) & (TCO_EN | GBL_SMI_EN)) != (TCO_EN | GBL_SMI_EN))
tmrval /= 2; tmrval /= 2;
/* from the specs: */ /* from the specs: */
...@@ -527,7 +521,7 @@ static int iTCO_wdt_probe(struct platform_device *pdev) ...@@ -527,7 +521,7 @@ static int iTCO_wdt_probe(struct platform_device *pdev)
* Disables TCO logic generating an SMI# * Disables TCO logic generating an SMI#
*/ */
val32 = inl(SMI_EN(p)); val32 = inl(SMI_EN(p));
val32 &= ~TCO_EN; /* Turn off SMI clearing watchdog */ val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
outl(val32, SMI_EN(p)); outl(val32, SMI_EN(p));
} }
......
...@@ -119,7 +119,7 @@ static int ixp4xx_wdt_probe(struct platform_device *pdev) ...@@ -119,7 +119,7 @@ static int ixp4xx_wdt_probe(struct platform_device *pdev)
iwdt = devm_kzalloc(dev, sizeof(*iwdt), GFP_KERNEL); iwdt = devm_kzalloc(dev, sizeof(*iwdt), GFP_KERNEL);
if (!iwdt) if (!iwdt)
return -ENOMEM; return -ENOMEM;
iwdt->base = dev->platform_data; iwdt->base = (void __iomem *)dev->platform_data;
/* /*
* Retrieve rate from a fixed clock from the device tree if * Retrieve rate from a fixed clock from the device tree if
......
...@@ -268,8 +268,12 @@ static int omap_wdt_probe(struct platform_device *pdev) ...@@ -268,8 +268,12 @@ static int omap_wdt_probe(struct platform_device *pdev)
wdev->wdog.bootstatus = WDIOF_CARDRESET; wdev->wdog.bootstatus = WDIOF_CARDRESET;
} }
if (!early_enable) if (early_enable) {
omap_wdt_start(&wdev->wdog);
set_bit(WDOG_HW_RUNNING, &wdev->wdog.status);
} else {
omap_wdt_disable(wdev); omap_wdt_disable(wdev);
}
ret = watchdog_register_device(&wdev->wdog); ret = watchdog_register_device(&wdev->wdog);
if (ret) { if (ret) {
......
...@@ -130,7 +130,7 @@ static u64 sbsa_gwdt_reg_read(struct sbsa_gwdt *gwdt) ...@@ -130,7 +130,7 @@ static u64 sbsa_gwdt_reg_read(struct sbsa_gwdt *gwdt)
if (gwdt->version == 0) if (gwdt->version == 0)
return readl(gwdt->control_base + SBSA_GWDT_WOR); return readl(gwdt->control_base + SBSA_GWDT_WOR);
else else
return readq(gwdt->control_base + SBSA_GWDT_WOR); return lo_hi_readq(gwdt->control_base + SBSA_GWDT_WOR);
} }
static void sbsa_gwdt_reg_write(u64 val, struct sbsa_gwdt *gwdt) static void sbsa_gwdt_reg_write(u64 val, struct sbsa_gwdt *gwdt)
...@@ -138,7 +138,7 @@ static void sbsa_gwdt_reg_write(u64 val, struct sbsa_gwdt *gwdt) ...@@ -138,7 +138,7 @@ static void sbsa_gwdt_reg_write(u64 val, struct sbsa_gwdt *gwdt)
if (gwdt->version == 0) if (gwdt->version == 0)
writel((u32)val, gwdt->control_base + SBSA_GWDT_WOR); writel((u32)val, gwdt->control_base + SBSA_GWDT_WOR);
else else
writeq(val, gwdt->control_base + SBSA_GWDT_WOR); lo_hi_writeq(val, gwdt->control_base + SBSA_GWDT_WOR);
} }
/* /*
...@@ -411,4 +411,3 @@ MODULE_AUTHOR("Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>"); ...@@ -411,4 +411,3 @@ MODULE_AUTHOR("Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>");
MODULE_AUTHOR("Al Stone <al.stone@linaro.org>"); MODULE_AUTHOR("Al Stone <al.stone@linaro.org>");
MODULE_AUTHOR("Timur Tabi <timur@codeaurora.org>"); MODULE_AUTHOR("Timur Tabi <timur@codeaurora.org>");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:" DRV_NAME);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment