[PATCH 1/9] watchdog: w83627hf_wdt: Replace magic numbers with descriptive macros
Paul Louvel <[email protected]> Sat, 25 Jul 2026 12:29:28 +0200
| Newsgroups | org.kernel.vger.linux-watchdog,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Raw hex values for Super I/O register addresses are difficult to understand without constantly consulting the datasheet. Use named macros instead. Signed-off-by: Paul Louvel <[email protected]> --- drivers/watchdog/w83627hf_wdt.c | 43 ++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/drivers/watchdog/w83627hf_wdt.c b/drivers/watchdog/w83627hf_wdt.c index db77599e43a0..1529a4e16820 100644 --- a/drivers/watchdog/w83627hf_wdt.c +++ b/drivers/watchdog/w83627hf_wdt.c @@ -27,6 +27,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include <linux/bits.h> #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/types.h> @@ -71,6 +72,12 @@ MODULE_PARM_DESC(early_disable, "Disable watchdog at boot time (default=0)"); * Kernel methods. */ +#define SIO_REG_LDSEL 0x07 /* Logical device select */ +#define SIO_REG_DEVID 0x20 /* Device ID (1 or 2 bytes) */ +#define SIO_REG_ENABLE 0x30 /* Logical device enable */ +#define SIO_REG_CONF_ADDR0 0x2E +#define SIO_REG_CONF_ADDR1 0x4E + #define WDT_EFER (wdt_io+0) /* Extended Function Enable Registers */ #define WDT_EFIR (wdt_io+0) /* Extended Function Index Register (same as EFER) */ @@ -115,9 +122,12 @@ MODULE_PARM_DESC(early_disable, "Disable watchdog at boot time (default=0)"); #define W836X7HF_WDT_CSR 0xf7 #define NCT6102D_WDT_CSR 0xf2 -#define WDT_CSR_STATUS 0x10 -#define WDT_CSR_KBD 0x40 -#define WDT_CSR_MOUSE 0x80 +#define WDT_CSR_STATUS BIT(4) +#define WDT_CSR_KBD_INT_RESET BIT(6) +#define WDT_CSR_MOUSE_INT_RESET BIT(7) + +#define WDT_CTRL_RISING_EDGE_KBD_RESET BIT(2) +#define WDT_CTRL_MINUTE_MODE BIT(3) static void superio_outb(int reg, int val) { @@ -144,7 +154,7 @@ static int superio_enter(void) static void superio_select(int ld) { - superio_outb(0x07, ld); + superio_outb(SIO_REG_LDSEL, ld); } static void superio_exit(void) @@ -165,9 +175,9 @@ static int w83627hf_init(struct watchdog_device *wdog, enum chips chip) superio_select(W83627HF_LD_WDT); /* set CR30 bit 0 to activate GPIO2 */ - t = superio_inb(0x30); + t = superio_inb(SIO_REG_ENABLE); if (!(t & 0x01)) - superio_outb(0x30, t | 0x01); + superio_outb(SIO_REG_ENABLE, t | 0x01); switch (chip) { case w83627hf: @@ -248,16 +258,17 @@ static int w83627hf_init(struct watchdog_device *wdog, enum chips chip) } } - /* set second mode & disable keyboard turning off watchdog */ - t = superio_inb(cr_wdt_control) & ~0x0C; + /* set second mode & disable keyboard reset turning off watchdog */ + t = superio_inb(cr_wdt_control) & + ~(WDT_CTRL_MINUTE_MODE | WDT_CTRL_RISING_EDGE_KBD_RESET); superio_outb(cr_wdt_control, t); t = superio_inb(cr_wdt_csr); if (t & WDT_CSR_STATUS) wdog->bootstatus |= WDIOF_CARDRESET; - /* reset status, disable keyboard & mouse turning off watchdog */ - t &= ~(WDT_CSR_STATUS | WDT_CSR_KBD | WDT_CSR_MOUSE); + /* reset status, disable keyboard & mouse interrupt turning off watchdog */ + t &= ~(WDT_CSR_STATUS | WDT_CSR_KBD_INT_RESET | WDT_CSR_MOUSE_INT_RESET); superio_outb(cr_wdt_csr, t); superio_exit(); @@ -355,7 +366,7 @@ static int wdt_find(int addr) if (ret) return ret; superio_select(W83627HF_LD_WDT); - val = superio_inb(0x20); + val = superio_inb(SIO_REG_DEVID); switch (val) { case W83627HF_ID: ret = w83627hf; @@ -431,7 +442,7 @@ static int wdt_find(int addr) cr_wdt_csr = NCT6102D_WDT_CSR; break; case NCT6116_ID: - val = superio_inb(0x21); + val = superio_inb(SIO_REG_DEVID + 1); if (val == NCT6126_VER_A_LOW_ID || val == NCT6126_VER_B_LOW_ID) ret = nct6126; else @@ -513,11 +524,11 @@ static int __init wdt_init(void) /* Apply system-specific quirks */ dmi_check_system(wdt_dmi_table); - wdt_io = 0x2e; - chip = wdt_find(0x2e); + wdt_io = SIO_REG_CONF_ADDR0; + chip = wdt_find(SIO_REG_CONF_ADDR0); if (chip < 0) { - wdt_io = 0x4e; - chip = wdt_find(0x4e); + wdt_io = SIO_REG_CONF_ADDR1; + chip = wdt_find(SIO_REG_CONF_ADDR1); if (chip < 0) return chip; } -- 2.55.0