Commit graph

1,482,218 commits

Author SHA1 Message Date
bui duc phuc
7528abb515 watchdog: mediatek: Propagate errors from optional IRQ lookup
platform_get_irq_optional() returns a positive IRQ number on success or
a negative error code on failure. For an optional IRQ, -ENXIO indicates
that no IRQ is available, while other errors should be propagated.

Instead of only checking for -EPROBE_DEFER, propagate all error codes
returned by platform_get_irq_optional() other than -ENXIO, so that
failures are properly reported to the caller.

Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
Link: https://lore.kernel.org/r/20260807081652.38692-2-phucduc.bui@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:05 -07:00
Christophe JAILLET
799ef16e46 watchdog: apple: Constify some structures
'struct watchdog_ops' and 'struct watchdog_info' are not modified in this
driver.

Constifying these structure moves some data to a read-only section, so
increases overall security, especially when the structure holds some
function pointers.

On a x86_64, with allmodconfig:
Before:
======
   text	   data	    bss	    dec	    hex	filename
   7319	   1768	      0	   9087	   237f	drivers/watchdog/apple_wdt.o

After:
=====
   text	   data	    bss	    dec	    hex	filename
   7543	   1544	      0	   9087	   237f	drivers/watchdog/apple_wdt.o

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/99019b7e560c2d9c087be340e68f9cce4db1988e.1786283336.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:05 -07:00
Mayank Rungta
382a3cd59e watchdog: pretimeout: Convert dump pretimeout governor to tristate
Commit 645ad41da8b2 ("watchdog: pretimeout: Add "dump" pretimeout
governor") added the "dump" watchdog pretimeout governor, but restricted
it to built-in code because trigger_all_cpu_backtrace() was not exported
to loadable modules.

Now that CPU backtrace APIs are supported for loadable kernel modules
via cpumask_backtrace(), convert WATCHDOG_PRETIMEOUT_GOV_DUMP to
tristate. This allows kernels to deliver the pretimeout governor as a
loadable kernel module.

Signed-off-by: Mayank Rungta <mrungta@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Link: https://lore.kernel.org/r/20260730-export-cpu-backtrace-apis-v1-2-bace8e1cb817@google.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:05 -07:00
Mayank Rungta
bd26ae0caa nmi: Export CPU backtrace APIs for loadable modules
Currently, CPU backtrace functions cannot be called from loadable
modules because the underlying helper arch_trigger_cpumask_backtrace()
is not exported.

Instead of exporting arch_trigger_cpumask_backtrace() individually
across every supported architecture, introduce and export a common
helper, cpumask_backtrace(), in lib/nmi_backtrace.c. Update the four
inline CPU backtrace macros in include/linux/nmi.h to route through this
centralized helper.

Signed-off-by: Mayank Rungta <mrungta@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Link: https://lore.kernel.org/r/20260730-export-cpu-backtrace-apis-v1-1-bace8e1cb817@google.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:05 -07:00
Babanpreet Singh
b583ce8541 watchdog: booke_wdt: Document unused parameter of __booke_wdt_disable()
scripts/kernel-doc -none reports:

  Warning: drivers/watchdog/booke_wdt.c:158 function parameter 'data'
  not described in '__booke_wdt_disable'

__booke_wdt_disable() is invoked through on_each_cpu(), so it takes a
void * argument that it does not use. Its kernel-doc comment does not
describe the parameter at all.

Document it as unused.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Babanpreet Singh <bbnpreetsingh@gmail.com>
Link: https://lore.kernel.org/r/20260730060617.7-3-bbnpreetsingh@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Renê de Souza Pinto
0ab46a83fa watchdog: wdat_wdt: map registers that fall inside ACPI NVS
Some firmwares describe WDAT registers inside memory ranges marked as
ACPI NVS in the E820 map, failing with -EBUSY during probe, leaving the
hardware watchdog unserviced and triggering periodic system resets.

This issue was observed on a OnLogic Karbon 524 device (when watchdog is
enabled in BIOS):

wdat_wdt wdat_wdt: error -EBUSY: can't request region for resource [mem 0x63df7a98]
wdat_wdt wdat_wdt: probe with driver wdat_wdt failed with error -16

Check whether the region falls inside ACPI NVS before requesting it and,
if so, map it without reservation.

Signed-off-by: Renê de Souza Pinto <rene@renesp.com.br>
Link: https://lore.kernel.org/r/20260804103958.3684195-1-rene@renesp.com.br
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Zi-Yu Chen
80141041bd watchdog: Add Nuvoton MA35D1 watchdog driver support
Add driver support for the Watchdog Timer (WDT) integrated in
Nuvoton MA35D1 SoC. This driver provides standard watchdog functionality,
including timeout configuration, ping, and system reset support via
the watchdog framework.

Signed-off-by: Zi-Yu Chen <zychennvt@gmail.com>
Link: https://lore.kernel.org/r/20260804070351.1846165-3-zychennvt@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Zi-Yu Chen
7397d13027 dt-bindings: watchdog: Add MA35D1 Watchdog
Add device tree binding documentation for the watchdog timer (WDT)
controller found on Nuvoton MA35D1 SoC.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Zi-Yu Chen <zychennvt@gmail.com>
Link: https://lore.kernel.org/r/20260804070351.1846165-2-zychennvt@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Kathiravan Thirumoorthy
6a393b0ea3 watchdog: qcom: report bootstatus on IPQ9574 and IPQ5332
Report bootstatus on IPQ5332 and IPQ9574. These SoCs use different
restart-reason values from IPQ5424 for watchdog reset and powerunder
reset events, so add separate match data for them and use it when
decoding the restart reason.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260728-qcom_wdt_powerunder-v1-2-de8d9e964e7d@oss.qualcomm.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Kathiravan Thirumoorthy
0595f74ea1 watchdog: qcom: report WDIOF_POWERUNDER in bootstatus
On IPQ platforms, identify the restart reason as POWERUNDER, similar to
CARDRESET, and expose it via the bootstatus sysfs interface.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260728-qcom_wdt_powerunder-v1-1-de8d9e964e7d@oss.qualcomm.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
7aa968415c watchdog: sprd: Remove redundant dev_err()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err() call.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-10-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
0e2d63f85a watchdog: sama5d4: Remove redundant dev_err()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err() call.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20260722084218.79073-9-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
d7c4cef982 watchdog: realtek_otto: Remove redundant dev_err_probe()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err_probe() call.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-8-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
329b7e841f watchdog: orion: Remove redundant dev_err()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err() calls.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-7-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
c19929a8d8 watchdog: marvell_gti: Remove redundant dev_err_probe()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err_probe() call.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-6-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
9e34598b92 watchdog: keembay: Remove redundant dev_err_probe()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err_probe() calls.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-5-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
762d7d93ee watchdog: intel-mid_wdt: Remove redundant dev_err()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err() call.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-4-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
767d2416d8 watchdog: cadence_wdt: Remove redundant dev_err()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err() call.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-3-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pan Chuang
010993649a watchdog: bd96801_wdt: Remove redundant dev_err_probe()
Since commit
55b48e23f5 ("genirq/devres: Add error handling in devm_request_*_irq()"),
devm_request_threaded_irq() automatically logs detailed error messages on
failure. Remove the now-redundant driver-specific dev_err_probe() call.

Signed-off-by: Pan Chuang <panchuang@vivo.com>
Link: https://lore.kernel.org/r/20260722084218.79073-2-panchuang@vivo.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Rasmus Villemoes
19ff50d05f watchdog: take all OF aliases into account when assigning id
If some, but not all, watchdog devices have device tree aliases, those
without aliases might (depending on probe order) be assigned an id
which would otherwise be assigned to one of those with an alias.

This is problematic when for example watchdog0 is an alias for an
always-running gpio watchdog that userspace must handle, but the SOC's
watchdog device(s) get probed first and thus one of those become
/dev/watchdog0, and then at some point later, the gpio watchdog device
gets probed and becomes /dev/watchdog5.

Ensure that ids for devices without a device tree alias are allocated
from among those where no watchdogX alias exists.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Link: https://lore.kernel.org/r/20260714105356.2931450-1-linux@rasmusvillemoes.dk
[groeck: Use scnprintf() instead of snprintf() to make gcc happy]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Pengpeng Hou
5e845fe634 watchdog: via_wdt: add missing MODULE_DEVICE_TABLE()
The driver has a match table for the pci bus wired into its driver
structure, but the table is not exported with MODULE_DEVICE_TABLE().

Add the missing MODULE_DEVICE_TABLE() entry so module alias information
is generated for automatic module loading.

This is a source-level fix.  It does not claim dynamic hardware
reproduction; the evidence is the driver-owned match table, its use by
the driver registration structure, and the missing module alias
publication.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
Link: https://lore.kernel.org/r/20260705001613.68871-1-pengpeng@iscas.ac.cn
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Simon Glass
4e6b7a26ff dt-bindings: watchdog: snps,dw-wdt: Add RV1106 compatible
Add the compatible for the watchdog of the Rockchip RV1106, which is
compatible with the Synopsys DesignWare watchdog.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20260714131856.v2.1.b5339e64b3fe4338b3924ebd9dc0096904699744@changeid
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Rustam Adilov
969ca8f12d watchdog: realtek-otto: Change to use regmap API
To make the realtek watchdog driver functional when SWAP_IO_SPACE
config is enabled, change all of the register access to be done
by regmap API which helps us to tweak endianness with big-endian
or little-endian property from within the device tree node.

Add the REGMAP_MMIO as a select to REALTEK_OTTO_WDT now that the
regmap is used.

Signed-off-by: Rustam Adilov <adilov@disroot.org>
Link: https://lore.kernel.org/r/20260710074316.46643-2-adilov@disroot.org
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Tomer Maimon
7762911c0d watchdog: npcm: add bootstatus support
The NPCM750 uses RESSR and the NPCM845 uses INTCR2 to latch reset
indications. Read those bits during probe and map them into watchdog
bootstatus flags.

For NPCM845, cache the sampled INTCR2 state in SCRPAD10 after the reset
status bits are cleared so later probes can report the same boot-time
state. Also report WDIOF_CARDRESET for the watchdog instance whose reset
bit is latched, while leaving WPCM450 behavior unchanged.

Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
Link: https://lore.kernel.org/r/20260706144828.3517631-4-tmaimon77@gmail.com
[groeck: Declare npcm750_data and npcm845_data with __maybe_unused]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Tomer Maimon
016d840a7e docs: watchdog: npcm: Add reset status description
Add documentation describing how the NPCM watchdog driver reports reset
causes through bootstatus on NPCM750 and NPCM845 systems.

Document the reset flag mapping, the watchdog instance mapping for
WDIOF_CARDRESET, and the NPCM750/NPCM845 latch handling. Also mention
sysfs bootstatus reporting when watchdog sysfs support is enabled.

Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
Link: https://lore.kernel.org/r/20260706144828.3517631-3-tmaimon77@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Tomer Maimon
686a639c02 dt-bindings: watchdog: npcm: add GCR syscon property
NPCM750 and NPCM845 latch watchdog reset indications in the SoC
GCR block rather than in the watchdog block itself.

Add the optional nuvoton,sysgcr phandle so watchdog nodes can
reference the shared GCR reset-status registers that hold those
latched watchdog reset indications.

This is needed by the following reset-status support, which reads
those latches and reports watchdog-caused resets through bootstatus.

Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20260706144828.3517631-2-tmaimon77@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Janne Grunau
47a159d948 dt-bindings: watchdog: apple,wdt: Add t6030 and t6031 compatibles
The watchdog on Apple silicon M3 Pro, Max and Ultra SoCs is compatible
with the t8103 (M1) one. Add "apple,t6030-wdt" for M3 Pro and
"apple,t6031-wdt" for M3 Max and Ultra as per-SoC compatibles.

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Janne Grunau <j@jannau.net>
Link: https://lore.kernel.org/r/20260715-apple-t603x-initial-devices-v2-6-df65b2485710@jannau.net
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Mark Pearson
d34f921cf4 watchdog: lenovo_se30g2_se60_wdt: Watchdog for Lenovo SE30G2 and SE60
Watchdog driver implementation for Lenovo SE30G2 and SE60 platforms.

Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Link: https://lore.kernel.org/r/20260706145412.3833185-1-mpearson-lenovo@squebb.ca
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Paul Louvel
c9aab8bba2 watchdog: w83627hf_wdt: Use WDOG_HW_RUNNING for running chip on boot
If the watchdog is already running when the driver is initialized, the
driver currently refreshes it once using the default timeout of 60
seconds.

Since commit ee142889e3 ("watchdog: Introduce WDOG_HW_RUNNING flag"),
the watchdog core can kick an already running watchdog alive until
userspace open the device.

Add the WDOG_HW_RUNNING flag to the watchdog status if the watchdog is
already running.

Signed-off-by: Paul Louvel <paul.louvel@bootlin.com>
Link: https://lore.kernel.org/r/20260707-w83627hf_wdt-nct6126d-v4-3-829e5f63d548@bootlin.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:04 -07:00
Paul Louvel
3d6757a640 watchdog: w83627hf_wdt: Report the probed chip name via WDIOC_GETSUPPORT
The watchdog identity string reported via WDIOC_GETSUPPORT has always
been hardcoded to "W83627HF Watchdog", even though this driver supports
a wide range of Nuvoton/Winbond Super I/O chips.

This is misleading, since the driver itself correctly log the chip name
in wdt_init(), but could report later a different chip name with
WDIOC_GETSUPPORT.

Instead format the identity at probe time using the actual chip name
that was detected.

Signed-off-by: Paul Louvel <paul.louvel@bootlin.com>
Link: https://lore.kernel.org/r/20260707-w83627hf_wdt-nct6126d-v4-2-829e5f63d548@bootlin.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:03 -07:00
Paul Louvel
aad2cb5457 watchdog: w83627hf_wdt: Correctly identify Nuvoton NCT6126 chip
Currently, the NCT6126 is probed as a NCT6116 because the NCT6126 shares
the same high-byte chip ID as the NCT6116.

Read the low byte of the chip ID as well to distinguish between the two
devices and identify the NCT6126 correctly.

Signed-off-by: Paul Louvel <paul.louvel@bootlin.com>
Link: https://lore.kernel.org/r/20260707-w83627hf_wdt-nct6126d-v4-1-829e5f63d548@bootlin.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:03 -07:00
Tzung-Bi Shih
8bb763d4c3 watchdog: pretimeout: Add "dump" pretimeout governor
Add a new "dump" pretimeout governor that triggers a backtrace of all
CPUs (via trigger_all_cpu_backtrace()) to the kernel log buffer.  This
provides diagnostic information right before the hardware watchdog
fires.

In addition, update the WATCHDOG_PRETIMEOUT_GOV_SEL Kconfig logic to
fall back to the "panic" governor only when both "noop" and "dump"
governors are disabled.

Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
Link: https://lore.kernel.org/r/20260707102105.3600275-1-tzungbi@kernel.org
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:03 -07:00
Yureka Lilian
dac35bdc5c dt-bindings: watchdog: apple,wdt: Add t8132 compatible
The watchdog on the Apple silicon t8132 (M4) SoC is compatible with the
existing driver. Add "apple,t8132-wdt" as SoC specific compatible under
"apple,t8103-wdt" used by the driver.

The M4 wdt block additionally has a secondary watchdog, which is
disabled by m1n1 and can safely be ignored by Linux.

Signed-off-by: Yureka Lilian <yureka@cyberchaos.dev>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260705-apple-m4-initial-devicetrees-v1-3-e5655ee56523@cyberchaos.dev
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:03 -07:00
Jingyi Wang
c6bbe157d8 dt-bindings: watchdog: Document Qualcomm Maili watchdog
Add devicetree binding for watchdog present on Qualcomm Maili SoC.

Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20260629-maili-watchdog-v2-1-5cb9c83a581c@oss.qualcomm.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:03 -07:00
Uwe Kleine-König (The Capable Hub)
d4011cda7f watchdog: Use named initializers for platform_device_id arrays
Named initializers are better readable and more robust to changes of the
struct definition. This robustness is relevant for a planned change to
struct platform_device_id replacing .driver_data by an anonymous union.

For one driver drop the unused assignment to .driver_data instead.

While touching these arrays unify spacing and usage of commas.

There is no effect on the compiled arrays.

Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/22bc09d0c9c8dfe75a205b0a9ccc98ccfba1de10.1781622532.git.u.kleine-koenig@baylibre.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 09:00:03 -07:00
Arnd Bergmann
c20e8a003c Samsung DTS ARM changes for v7.3
Add Bluetooth to Exynos5250-based Google Manta (Nexus 10) board.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmp0QgsQHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD1yTkD/41W86MyOvrRDfmsoD/mtPQrHuYbj1c/IVg
 gA8ZbuXJJdkTQnKiA3I+R3gNftiFwihC1AzPrNb8ZcsNOzLZ1Z2a1DQ4XZCHCasO
 tdqSiyAxthEIC6lBFwIjssY6Gce2zYPMqzb4rVgcEuJg/Wgp9xBs6nnq/qQHOB+2
 FQfKDk20L8vSpSXn00Vx6uYZKdViQgmQFEHK5mVS9kbtlwsJrTuhe/olpSdVaeEE
 rGAvLkpm6Q2NOPPJEsOMrIQYfMbeVgAB5oinH4CUkg8GxUcFFGXLL1FRmRNQbt3F
 hfKxvQ1OjPzS7Y5PTcRlZ/bhGLJrQSYYxiQ0GYbVQmJz4xj7LPsKjox/M2PuHxhq
 etNgl8oC7s25mmkKb4qIX7dBsR+ZwEa6k2u77d5lh59fOWfsMgCwdnzle8J0SbdJ
 Y2MkJePRjD+VjOr0ZsqIKMoeiqXtkq/oHliHbJyeqOn51opKUIPfTnuCrT2mWm/B
 Dvk8KoMBUnyzMyaDFwtbDTz7imdl2kmB2E6MyR3YZ4bnBWPp709PIjEc296K4xht
 AbieE0ulFbRE2qZpCZk+A7sxLrxvRUqVpSNEt1NPB4ySc3Q0hIEweu+1blGnBMZP
 kfDkRW6+l6KdkSHco5EpEWhzpJnvCmZ6P0/xnyLW443efTd5rpODRzFxFkizbLzG
 gJerVc6/kQ==
 =mP2U
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmp59XsACgkQmmx57+YA
 GNkj4g/+LXsltCsBkcjaBbgEfpPpDVA/QPka3zZ+kGxB2QFxPUo6ZfX7VO20DDw3
 iaWHBT27wsfbXae46H9iylDnbgYyp4Wzkix8UIpUUc8swhMXa6sF6hvGImyLsNm2
 8NbzzZU1uS1X4EGt3PAc3mMA0rDDWZO2Jq31PlMrHWr15bToHUUWq7YUy358IvUE
 WuS33slmo9XExUhJzagIvpOc7Fr09nyCxiLQp/wZnqBeZ9DoH+QYPaWTMTaY0NMe
 ejIJIXvYWdme1MiwNwXKiLAaiCWCCvFxelDe5uMt0UhNjgo0rlrWTfMmVf3Qh+gU
 uNVqtJyRKo0tt5dxn0/VI1yuSNfYV0IDGig2ayyYG9C4HynVJc2g9kzRBAbCJXxV
 P7Gc5TASj8P5z/PfIAxB99H8VVfYAVrwRD+CTKGCG1bzf/kXmmye6joSSRuRZAE6
 ZbVvXA0N+sXkK68ASlTJiWUgmHstB7kyKKPITRoR8oKmbmAaqrwVCcB7Fq4c3ZRj
 Okx9XszlYN7l31+Fp4TXpKWY/nIdbuIIcdu66R4y+JlNKVM2ZiyOkPjfkm41na0X
 4N1JAQcNsuhUP/J0ADCavbYzZdAu2leMAc39/bQVEHSXQciRFOvfQDcZC5mYbwHB
 QfNzZ2wOeuDYiE6RNKyFLheQgUN0JuzffU8+0llS37qLKLDdHjw=
 =nJ3H
 -----END PGP SIGNATURE-----

Merge tag 'samsung-dt-7.3' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt

Samsung DTS ARM changes for v7.3

Add Bluetooth to Exynos5250-based Google Manta (Nexus 10) board.

* tag 'samsung-dt-7.3' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  ARM: dts: exynos: Add bluetooth support to manta

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-08-10 17:59:52 +02:00
Rodrigo Araujo
6ee0d3de95 hwmon: (asus-ec-sensors) add ROG STRIX Z390-E GAMING
The ROG STRIX Z390-E GAMING and Z390-F GAMING are essentially the
same board apart from the E's onboard WiFi, so they share the same
EC sensor layout.

Signed-off-by: Rodrigo Araujo <araujo.rm@gmail.com>
Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com>
Link: https://lore.kernel.org/r/20260809212705.1501382-1-eugene.shalygin@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Thomas Weißschuh
87fdc8d7bb hwmon: (sysfs) Allow drivers to register const attributes
Switch to the __DEVICE_ATTR() macro which can handle callbacks taking
both const and non-const attribute structure arguments.
Allow the step-wise migration of the drivers.

Also use container_of_const() over container_of() to avoid casting away
the constness accidentally.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20260806-sysfs-const-attr-hwmon-v2-3-22fee8b85509@weissschuh.net
[groeck: Squashed 'hwmon: (core) Constify PEC device attribute']
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Wilken Gottwalt
52fcdd5639 hwmon: (corsair-psu) Update documentation
Add information about the HX1500i 2025 series and fix the missing
HX1500i in Kbuild.

Signed-off-by: Wilken Gottwalt <wilken.gottwalt@posteo.net>
Link: https://lore.kernel.org/r/anVuBd8Bb7T66OUO@monster.localdomain
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Thomas Weißschuh
7df38f8d4c hwmon: (core) Use const APIs for the dynamically allocated sysfs attributes
The non-const sysfs attribute APIs are going to go away at some point.

Switch to the const variants to prepare for that.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20260806-sysfs-const-attr-hwmon-v2-2-22fee8b85509@weissschuh.net
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Thomas Weißschuh
dafe7f1ec9 hwmon: (core) Constify device attributes
Mark the attribute structures as const, as they are never modified.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20260806-sysfs-const-attr-hwmon-v2-1-22fee8b85509@weissschuh.net
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Sergio Melas
9c110a4676 hwmon: (yogafan) Add support for new Lenovo models
Add DMI quirk entries and map correct ACPI paths and configurations for
additional Lenovo laptop models including the LOQ 15IAX9,
XiaoXin Pro 13ARE 2020, IdeaPad 3 15ALC6, Legion Pro 7 16AFR10H,
Yoga Pro 7 14IAH10, and Yoga 7 16ARP8.

Reorder the DMI quirk table to evaluate specific model matches before
generic family fallbacks, preventing DMI shadowing.

Signed-off-by: Sergio Melas <sergiomelas@gmail.com>
Link: https://lore.kernel.org/r/20260806131103.19104-1-sergiomelas@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Luiz Angelo Daros de Luca
62f8ed1d03 hwmon: (adt7470) Add thermal zone sensor support
Register the ADT7470 temperature channels as thermal zone sensors.

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Link: https://lore.kernel.org/r/20260805-adt7470_thermalzone-v6-4-5605a5f95467@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Luiz Angelo Daros de Luca
48e2047694 hwmon: (adt7470) Expose fan control via PWM framework
The ADT7470 features four PWM outputs designed to control fans.
Previously, these were only accessible through the legacy hwmon
sysfs interface.

Expose the ADT7470 fan control lines through the generic PWM framework.
This allows generic PWM consumers described in Device Tree, such as
"pwm-fan", to use the device through the "#pwm-cells" property.  This is
particularly necessary for boards where the ADT7470 external temperature
sensors are not populated and the chip is used strictly as a fan
controller (e.g., Edgecore ECS-2100-52T switches). In such setups,
delegating control to the generic PWM subsystem allows the kernel's
thermal framework to manage the fans based on unrelated temperature
zones, such as internal SoC sensors.

When a PWM consumer applies a new PWM state, the driver automatically
switches the corresponding PWM channel to manual mode so that the
requested duty cycle takes effect. The duty cycle specified by the PWM
framework is internally converted to the 0-255 scale expected by the
hardware registers.

To prevent conflicting access, the hwmon PWM sysfs attributes are hidden
when the device is registered with PWM framework support (i.e. when
"#pwm-cells" is present in DT and CONFIG_PWM is reachable).

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Link: https://lore.kernel.org/r/20260805-adt7470_thermalzone-v6-3-5605a5f95467@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Luiz Angelo Daros de Luca
75eae6e1fa hwmon: (adt7470) Add ADT7470_PWM_MAX macro
Instead of a magic 255, use a macro to refer to it.

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Link: https://lore.kernel.org/r/20260805-adt7470_thermalzone-v6-2-5605a5f95467@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Luiz Angelo Daros de Luca
7d9d401d98 dt-bindings: hwmon: add adi,adt7470
The Analog Devices ADT7470 is a multichannel temperature sensor and
PWM fan controller. It supports monitoring up to 10 external
temperature sensors and controlling up to 4 fans.

Add the device tree binding documentation for it. This includes
support for the thermal framework by defining the "#thermal-sensor-cells"
property, and models the fan control lines as PWM channels by
defining the "#pwm-cells" property.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Link: https://lore.kernel.org/r/20260805-adt7470_thermalzone-v6-1-5605a5f95467@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Guenter Roeck
84f3d13ca4 hwmon: (pmbus/ir36021) Use pmbus_read_smbus_i2c_block_data for block commands
The driver uses i2c_smbus_read_i2c_block_data() for PMBus block commands.
Use pmbus_read_smbus_i2c_block_data() instead to enable the driver to work
with I2C controllers which do not support i2c_smbus_read_i2c_block_data().

Drop the functionality check to get an explicit error message if the
required SMBus commands are not supported.

Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Guenter Roeck
9d91132f4c hwmon: (pmbus/max20830) Use pmbus_read_smbus_i2c_block_data for block commands
The driver tries to use both pmbus_read_smbus_i2c_block_data() and
i2c_smbus_read_i2c_block_data() for PMBus block commands.

Use pmbus_read_smbus_i2c_block_data() instead to simplify the code.

Drop the functionality check to simplify the code and to trigger a return
with -EOPNOTSUPP if SMBus block commands are not supported.

Cc: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
Cc: Nuno Sá <nuno.sa@analog.com>
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Guenter Roeck
08007275d5 hwmon: (pmbus/ltc2978) Use pmbus_read_smbus_i2c_block_data for block commands
The driver uses a mix of pmbus_read_smbus_i2c_block_data() and
i2c_smbus_read_i2c_block_data() for PMBus block commands.

Use pmbus_read_smbus_i2c_block_data() instead to enable the driver to work
I2C controllers which do not support both block commands.

Drop the functionality check to simplify the code and to trigger a return
with -EOPNOTSUPP if SMBus block commands are not supported.

As part of this patch, rework detection of LT7170 and LT7171. The return
length of pmbus_read_smbus_i2c_block_data() may be less than the requested
number of bytes, meaning the return length needs to be checked. Also,
checking for "LT7170-1" after checking for "LT7170" and checking for
"LT7171-1" after checking for "LT7171" is pointless since the first check
will already produce a match, so drop the second part of the check.

Cc: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
Cc: Nuno Sá <nuno.sa@analog.com>
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00
Guenter Roeck
5b3dfe24a1 hwmon: (pmbus/adm1275) Use pmbus_read_smbus_i2c_block_data for block commands
The driver uses i2c_smbus_read_block_data() for PMBus block commands.
Use pmbus_read_smbus_i2c_block_data() instead to enable the driver to work
with I2C controllers which do not support i2c_smbus_read_block_data().

Drop the functionality check to get an explicit error message if the
required SMBus commands are not supported.

Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-08-10 08:59:43 -07:00