Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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"

+11 -14
+3 -9
drivers/watchdog/iTCO_wdt.c
··· 71 71 #define TCOBASE(p) ((p)->tco_res->start) 72 72 /* SMI Control and Enable Register */ 73 73 #define SMI_EN(p) ((p)->smi_res->start) 74 - #define TCO_EN (1 << 13) 75 - #define GBL_SMI_EN (1 << 0) 76 74 77 75 #define TCO_RLD(p) (TCOBASE(p) + 0x00) /* TCO Timer Reload/Curr. Value */ 78 76 #define TCOv1_TMR(p) (TCOBASE(p) + 0x01) /* TCOv1 Timer Initial Value*/ ··· 355 357 356 358 tmrval = seconds_to_ticks(p, t); 357 359 358 - /* 359 - * If TCO SMIs are off, the timer counts down twice before rebooting. 360 - * Otherwise, the BIOS generally reboots when the SMI triggers. 361 - */ 362 - if (p->smi_res && 363 - (inl(SMI_EN(p)) & (TCO_EN | GBL_SMI_EN)) != (TCO_EN | GBL_SMI_EN)) 360 + /* For TCO v1 the timer counts down twice before rebooting */ 361 + if (p->iTCO_version == 1) 364 362 tmrval /= 2; 365 363 366 364 /* from the specs: */ ··· 521 527 * Disables TCO logic generating an SMI# 522 528 */ 523 529 val32 = inl(SMI_EN(p)); 524 - val32 &= ~TCO_EN; /* Turn off SMI clearing watchdog */ 530 + val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ 525 531 outl(val32, SMI_EN(p)); 526 532 } 527 533
+1 -1
drivers/watchdog/ixp4xx_wdt.c
··· 119 119 iwdt = devm_kzalloc(dev, sizeof(*iwdt), GFP_KERNEL); 120 120 if (!iwdt) 121 121 return -ENOMEM; 122 - iwdt->base = dev->platform_data; 122 + iwdt->base = (void __iomem *)dev->platform_data; 123 123 124 124 /* 125 125 * Retrieve rate from a fixed clock from the device tree if
+5 -1
drivers/watchdog/omap_wdt.c
··· 268 268 wdev->wdog.bootstatus = WDIOF_CARDRESET; 269 269 } 270 270 271 - if (!early_enable) 271 + if (early_enable) { 272 + omap_wdt_start(&wdev->wdog); 273 + set_bit(WDOG_HW_RUNNING, &wdev->wdog.status); 274 + } else { 272 275 omap_wdt_disable(wdev); 276 + } 273 277 274 278 ret = watchdog_register_device(&wdev->wdog); 275 279 if (ret) {
+2 -3
drivers/watchdog/sbsa_gwdt.c
··· 130 130 if (gwdt->version == 0) 131 131 return readl(gwdt->control_base + SBSA_GWDT_WOR); 132 132 else 133 - return readq(gwdt->control_base + SBSA_GWDT_WOR); 133 + return lo_hi_readq(gwdt->control_base + SBSA_GWDT_WOR); 134 134 } 135 135 136 136 static void sbsa_gwdt_reg_write(u64 val, struct sbsa_gwdt *gwdt) ··· 138 138 if (gwdt->version == 0) 139 139 writel((u32)val, gwdt->control_base + SBSA_GWDT_WOR); 140 140 else 141 - writeq(val, gwdt->control_base + SBSA_GWDT_WOR); 141 + lo_hi_writeq(val, gwdt->control_base + SBSA_GWDT_WOR); 142 142 } 143 143 144 144 /* ··· 411 411 MODULE_AUTHOR("Al Stone <al.stone@linaro.org>"); 412 412 MODULE_AUTHOR("Timur Tabi <timur@codeaurora.org>"); 413 413 MODULE_LICENSE("GPL v2"); 414 - MODULE_ALIAS("platform:" DRV_NAME);