Conversation
Some hardware monitoring chips support three alarm levels for current and voltage high limits, and three alarm levels for voltage low limits. Add support for currX_emergency, inX_emergency, and inX_lemergency attributes together with the appropriate alarm attributes to support such chips. Cc: Manaf Meethalavalappu Pallikunhi <manaf.pallikunhi@oss.qualcomm.com> Tested-by: Manaf Meethalavalappu Pallikunhi <manaf.pallikunhi@oss.qualcomm.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Link: https://patch.msgid.link/20260813211433.879638-1-linux@roeck-us.net Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The TMP110 is register compatible with TMP102, document it using a fallback compatible. Signed-off-by: Marek Vasut <marex@nabladev.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Link: https://patch.msgid.link/20260812191021.65304-1-marex@nabladev.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The Lenovo Yoga Pro 9 16IMH9 (83DN) exposes its fan tachometers at ACPI paths different from the generic Yoga configuration. Add a model-specific two-fan configuration for the PC00.LPCB.EC0 namespace and document the corrected mapping. Tested on a Lenovo Yoga Pro 9 16IMH9 (83DN) with BIOS NKCN35WW: the patched module registers fan1_input and fan2_input, both reporting 1800 RPM at idle. Signed-off-by: Richard Ahlquist <rahlquist@gmail.com> Link: https://patch.msgid.link/20260813164746.105154-1-rahlquist@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The HONOR FMI-XX firmware exposes a serialized \\GFNS ACPI method. It returns a status byte and a 16-bit fan speed in RPM for either of two firmware channels. Add a DMI-restricted, read-only hwmon driver using that firmware interface. The driver deliberately exposes no fan control or direct Embedded Controller access. The interface was validated on firmware 1.09 with fan channel 0 reporting approximately 2500-2800 RPM. Channel 1 is readable and remained at 0 RPM during idle and a short CPU load. Signed-off-by: Nikita Dubrovskih <testname142@gmail.com> Link: https://patch.msgid.link/20260815234041.2262291-1-testname142@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Rework existing implementation to allow adding support for new devices to the existing driver. chip_id is used to identify the current device and differentiate logic where needed. Changes include: - Add an enum listing supported chips - Add a structure to hold per-device m, b, R coefficients Signed-off-by: Stoyan Bogdanov <sbogdanov@baylibre.com> Link: https://patch.msgid.link/20260817101455.3526260-2-sbogdanov@baylibre.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add device compatible support for TPS1689 Signed-off-by: Stoyan Bogdanov <sbogdanov@baylibre.com> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Link: https://patch.msgid.link/20260817101455.3526260-3-sbogdanov@baylibre.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Extend the existing TPS25990 driver to support the TPS1689 eFuse, as both devices share the same command interface and functionality. Update the documentation to include TPS1689 support. Signed-off-by: Stoyan Bogdanov <sbogdanov@baylibre.com> Link: https://patch.msgid.link/20260817101455.3526260-4-sbogdanov@baylibre.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add "sensirion,sts40" as compatible for the Sensirion STS4x/STS4xA series of digital temperature sensors. Link: https://sensirion.com/resource/datasheet/sts4x Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Alessandro Zini <alessandro.zini@siemens.com> Link: https://patch.msgid.link/20260821091924.18975-2-alessandro.zini@siemens.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The Sensirion STS4x series is the temperature-only variant of the SHT4x family. It shares the same I2C command set, conversion formulas, CRC checksum, and timing with the SHT4x, but only returns temperature data (3 bytes: 2 data bytes + 1 CRC byte). Add support for the STS4x series by dynamically adjusting the read response length, suppressing humidity channel attributes when probed as STS4x, and omitting heater sysfs attributes. Link: https://sensirion.com/resource/datasheet/sts4x Signed-off-by: Alessandro Zini <alessandro.zini@siemens.com> Link: https://patch.msgid.link/20260821091924.18975-3-alessandro.zini@siemens.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add a per-chip count for PWM temperature mapping sources and use it when reporting and validating mappings. Keep existing chips on their previous three-source defaults. This prepares the driver for chips with a different number of mapping sources. Signed-off-by: benoit.masson <yahoo@perenite.com> Signed-off-by: Jerome Tollet <jerome.tollet@gmail.com> Link: https://patch.msgid.link/619425df92463b3c3f9e90f00c527c4009599ea8.1788040385.git.jerome.tollet@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Introduce helper logic for PWM-to-temperature mappings so newer register layouts can be supported while retaining the legacy two groups of three temperature sources. Honor the four global temperature sources on IT8603E and IT8622E instead of applying the legacy grouping to those chips. Use per-chip masks and shifts for newer extended mappings. Newer controllers keep the duty cycle in a separate register, so write their temperature mapping in both manual and automatic mode. This keeps the selected mapping across cache refreshes and mode changes. On older controllers, defer mapping writes while in manual mode and apply the cached mapping when switching to automatic mode. Signed-off-by: benoit.masson <yahoo@perenite.com> Signed-off-by: Jerome Tollet <jerome.tollet@gmail.com> Link: https://patch.msgid.link/7b4f2befc3d214b646c0582e6410f17e78748b4e.1788040385.git.jerome.tollet@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Teach the Super I/O probe path to recognize IT8613E and add its hardware monitoring configuration. Add feature flags, 11 mV ADC scaling, the IT8665-style PWM register map, six PWM temperature mapping sources, and GPIO pin-mux checks. Only three temperature inputs are currently known, so retain the existing three temperature limit and offset resources. Document the chip in the hwmon guide. Signed-off-by: benoit.masson <yahoo@perenite.com> Signed-off-by: Jerome Tollet <jerome.tollet@gmail.com> Link: https://patch.msgid.link/5afd336442307450f77467b2a749d405970a2099.1788040385.git.jerome.tollet@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
…ature offset Limit temperature-offset-millicelsius to remote channels only, since channel 0 is local and this property does not apply to it. Channel 2 is only valid on devices with two remote sensors, so reject channel 2 for compatibles that do not support a second remote channel. Signed-off-by: Flaviu Nistor <flaviu.nistor@gmail.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://patch.msgid.link/20260826184750.4798-2-flaviu.nistor@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Validate firmware channel definitions against chip capabilities and return -EINVAL when channel 2 is configured on devices with 1 remote channel. Signed-off-by: Flaviu Nistor <flaviu.nistor@gmail.com> Link: https://patch.msgid.link/20260826184750.4798-3-flaviu.nistor@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The ROG STRIX X670E-A GAMING WIFI is missing from the driver's DMI table. Consequently, the board lookup fails with -ENODEV, asus_ec_sensors does not load, and no asusec hwmon device or EC temperature readings are available. The board uses the same EC sensors, access mutex, and AMD 600-series register layout as the ROG STRIX X670E-E GAMING WIFI. Add its DMI entry using the existing X670E-E board information and document the board as supported. Before the change, there was no asusec device under /sys/class/hwmon and there were no EC readings. After the change, the driver registered four sensors with representative readings of 57-61 C for CPU, 68-71 C for CPU package, 43-44 C for motherboard, and 49-52 C for VRM. The readings correlated with nct6775 and k10temp. Repeated polling with both hwmon drivers loaded produced no EC access, bank-switch, concurrent access, or locking errors. Tested on an ASUS ROG STRIX X670E-A GAMING WIFI with BIOS 2704. Signed-off-by: Asai Neko <sugar@sne.moe> Reviewed-by: Eugene Shalygin <eugene.shalygin@gmail.com> Link: https://patch.msgid.link/20260901-asus-x670e-a-hwmon-fix-v2-1-759406c2a61a@sne.moe Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Move ti,tmp103 binding from trivial-devices.yaml to ti,tmp102.yaml. Both devices are single temperature sensors and update "#thermal-sensor-cells" property to accept values 0 and 1 (passing no argument is equivalent to passing 0 as the first argument) Fix below CHECK_DTBS warnings: arch/arm/boot/dts/nxp/imx/imx6dl-plym2m.dtb: temperature-sensor@70 (ti,tmp103): '#thermal-sensor-cells' does not match any of the regexes: '^pinctrl-[0-9]+$' Squashed with: dt-bindings: hwmon: tmp102: Fix up TMP103 bindings The TMP102 and TMP110 are backward compatible, therefore the valid compatible strings are "ti,tmp110", "ti,tmp102" and "ti,tmp102" . The TMP103 is not backward compatible with TMP102, but it does share a schema now, therefore the only valid compatible string for the TMP103 should be "ti,tmp103" . Make exactly those three compatible strings valid and everything else rejected. Signed-off-by: Frank Li <Frank.Li@nxp.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Marek Vasut <marex@nabladev.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://patch.msgid.link/20260901174847.97261-1-marex@nabladev.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The TMP113 temperature sensor part is register compatible with TMP102, document it using a fallback compatible. Unlike TMP102 and TMP110, the TMP113 does have additional unique ID registers, it is up to the driver to handle those. Signed-off-by: Marek Vasut <marex@nabladev.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://patch.msgid.link/20260901174847.97261-2-marex@nabladev.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
A user reported that the Dell OptiPlex 7090 needs to be whitelisted for the special SMM calls necessary for globally enabling/disabling BIOS fan control. Closes: Wer-Wolf/i8kutils#18 Signed-off-by: Armin Wolf <W_Armin@gmx.de> Link: https://patch.msgid.link/20260901181849.241776-1-W_Armin@gmx.de Acked-by: Pali Rohár <pali@kernel.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
A user reported that the Dell Latitude 5420 needs to be whitelisted for the special SMM calls necessary for globally enabling/disabling BIOS fan control. Reported-by: pp12313124124@gmail.com Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221935 Signed-off-by: Armin Wolf <W_Armin@gmx.de> Link: https://patch.msgid.link/20260901181849.241776-2-W_Armin@gmx.de Acked-by: Pali Rohár <pali@kernel.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Some Intel i2c controllers can be configured by the BIOS to reject writes to the SPD device. This often causes problems when the register page needs to be changed, usually during resume. Avoid probing on affected devices by unconditionally selecting page 0 by writing the SPD5118_REG_I2C_LEGACY_MODE register during probe. This will fail on affected controllers and thus prevent the driver from probing. Signed-off-by: Armin Wolf <W_Armin@gmx.de> Link: https://patch.msgid.link/20260901200142.495319-1-W_Armin@gmx.de Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Support for 16-bit addressing was removed when support for i3c was added to the driver. Switching between 8-bit and 16-bit addressing might confuse the system firmware, so we are forced to bail out if 16-bit addressing was configured during boot. Signed-off-by: Armin Wolf <W_Armin@gmx.de> Link: https://patch.msgid.link/20260901200142.495319-2-W_Armin@gmx.de Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add a DMI-gated hwmon driver for the embedded controller used by the Minisforum UM780 XTX with board revision 1.1 and BIOS 1.06. Expose the CPU and system fan control temperatures and tachometers. The tachometer protocol returns one byte per OEM command, so serialize transactions and use high-low-high sampling to reject torn values. Allow selecting either complete OEM CPU fan profile through pwm1_enable and changing the two validated system fan transition temperatures through standard automatic-curve attributes. Cache coherent settings and restore them after the firmware reloads defaults following resume. Signed-off-by: Sebastián Peyrott <speyrott@gmail.com> Link: https://patch.msgid.link/20260902000509.191115-1-speyrott@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
TPS53622 and TPS53659 are PMBus-compliant D-CAP+ multiphase step-down controllers. Add their compatible strings. Signed-off-by: Sanman Pradhan <psanman@juniper.net> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://patch.msgid.link/20260901211129.360792-2-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
TPS53622 and TPS53659 are dual-channel D-CAP+ step-down controllers that use the VID VOUT format and VOUT_MODE identification like the existing TPS53679/TPS53688, so they reuse tps53679_identify(). Shorten the Kconfig prompt to the family name and list the supported chips in the help text instead; this also adds TPS53685, which is already supported by the driver but was missing from the list. Update the driver documentation, including the per-attribute lists, and fix an existing "TPS53588" typo (should be TPS53688) in those lists. Signed-off-by: Sanman Pradhan <psanman@juniper.net> Link: https://patch.msgid.link/20260901211129.360792-3-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The ROG STRIX Z490-A GAMING and Z490-F GAMING are essentially the same board apart from the F's onboard WiFi module, which isn't wired through the EC, so they share the same EC sensor layout. The Z490-A exposes the same EC sensor set as the Z490-F (chipset, CPU, motherboard, T_Sensor and VRM temperatures plus CPU_OPT and VRM HS fans) at the same EC registers, so reuse the Z490-F board_info for it. Signed-off-by: Mario Nuevo <marionuevo@gmail.com> Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com> Link: https://patch.msgid.link/20260905080346.1957380-1-eugene.shalygin@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Since commit a3b61ba ("hwmon: (tmp401) register with thermal subsystem") the driver sets HWMON_C_REGISTER_TZ, so the hwmon core calls devm_thermal_of_zone_register() for every temperature channel and the device can be referenced as a thermal sensor. Signed-off-by: Vincent Jardin <vjardin@free.fr> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Link: https://patch.msgid.link/20260902-for-upstream-dt-tmp401-vcc-tsc-v3-1-49c484d2f08b@free.fr [groeck: Reformatted patch descriptiuon] Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add DMI quirk entries and map correct ACPI paths and configurations for additional Lenovo laptop models: Yoga 14cACN 2021, IdeaPad 3 15ALC6 Ub and Yoga 740-15IML, leveraging DMI product family matching. Signed-off-by: Sergio Melas <sergiomelas@gmail.com> Link: https://patch.msgid.link/20260908094931.2227049-1-sergiomelas@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
…pport The NCT6112D/NCT6114D/NCT6116D family has been supported by the driver since commit 29c7cb4 ("hwmon: (nct6775) Integrate new model nct6116"), but was never added to the list of supported chips in the driver documentation. Also add the NCT6122D/NCT6126D. Assisted-by: opencode:z-ai/glm-5.3-flash Signed-off-by: Paul Louvel <paul.louvel@bootlin.com> Link: https://patch.msgid.link/20260909-bootlin-hwmon-nct6126-v1-1-4e85615fef10@bootlin.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add the USB product ID of the base ASUS ROG RYUJIN III 360 (0b05:1aa2, USB product string "ROG RYUJIN III"). It uses the same status report layout and cooler duty channel as the RYUJIN III EXTREME, EVA and WHITE editions, so it can share rog_ryujin_iii_info. Tested on a ROG RYUJIN III 360: coolant temperature, pump speed and internal fan speed report plausible values that track load, and the internal fan follows pwm2 (30% -> 870 RPM, 40% -> 1590 RPM). Assisted-by: Claude:claude-fable-5-1 Signed-off-by: Zac Lanzon <lanzonza@gmail.com> Link: https://patch.msgid.link/20260903004054.502171-1-lanzonza@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Fix typos in comments, reported by scripts/checkpatch.pl using the misspelling list in scripts/spelling.txt. Only touches comments, no code changes. Assisted-by: Cursor:claude-opus-5 Signed-off-by: Hemanth Selam <hemanth.selam@gmail.com> Link: https://patch.msgid.link/20260904114249.26515-1-hemanth.selam@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add support for the hardware monitoring functionality of the NCT6126D Super-I/O chip. The NCT6126D hardware monitor is nearly identical to the NCT6116D: the fan, PWM, temperature, TSI, alarm. The differences are: - Device IDs 0xd283 (A version) and 0xd284 (B version), which both fall into the NCT6116D ID range (0xd280) when masked with SIO_ID_MASK. Instead, compare the full value to distinguish from NCT6116D. - One additional VIN: VHIF scaled at 16 mV/LSB. - The fan count limit registers are documented for all five fans. Also expose fan4_min. Assisted-by: opencode:z-ai/glm-5.3-flash Signed-off-by: Paul Louvel <paul.louvel@bootlin.com> Link: https://patch.msgid.link/20260910-bootlin-hwmon-nct6126-v2-2-ee629ab35e49@bootlin.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The NCT6122D hardware monitor is the same as the NCT6126D, the only difference if the number of UARTs: two instead of six. Add it to the driver using the nct6126 chip kind to avoid code duplication. Assisted-by: opencode:z-ai/glm-5.3-flash Signed-off-by: Paul Louvel <paul.louvel@bootlin.com> Link: https://patch.msgid.link/20260909-bootlin-hwmon-nct6126-v1-3-4e85615fef10@bootlin.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
1ah/80h uses same base as other programs. It only supports Tctl. Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Link: https://patch.msgid.link/20260911191803.1522358-2-mario.limonciello@amd.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This is in preparation for adding support to a device which needs to use it's own read_block implementation. The MAX20826 family is one such device. When not in PMBus page mode, each of its two rails sits at a different I2C address, so selecting the rail cannot be done through pmbus_set_page() and has to be handled by the driver. Signed-off-by: Nuno Sá <nuno.sa@analog.com> Link: https://patch.msgid.link/20260911-hwmon-max20826-support-v2-2-5e30cbd97d84@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The MAX20826 IC and similar provide a high-density, flexible and scalable dual-loop solution for high current cores for AI applications. These are dual loop solutions multiphase voltage regulators. Between Rails A and B, MAX20855B and MAX20908 supports up to 8 phases total configurable from 8+0 to 4+4 phases, MAX20912 supports up to 12 phases from 12+0 to 6+6, and MAX20826 and MAX20916 supports up to 16 phases from 16+0 to 8+8. The output voltage of each rail is controlled either through PMBus or through the high-speed processor voltage-control interface (Intel SVID, AMD SVI3, Nvidia PWMVID or AVSBus, depending on the device). Which one is in use is part of the configuration the device powers up with and is read back from it, hence adi,rail-a-high-speed and adi,rail-b-high-speed only tell whether the high-speed interface or PMBus controls the output voltage of the respective rail. Co-developed-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com> Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com> Signed-off-by: Nuno Sá <nuno.sa@analog.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://patch.msgid.link/20260911-hwmon-max20826-support-v2-3-5e30cbd97d84@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The MAX20826 IC and similar provide a high-density, flexible and scalable dual-loop solution for high current cores for AI applications. These are dual loop solutions multiphase voltage regulators. Between Rails A and B, MAX20855B and MAX20908 supports up to 8 phases total configurable from 8+0 to 4+4 phases, MAX20912 supports up to 12 phases from 12+0 to 6+6, and MAX20826 and MAX20916 supports up to 16 phases from 16+0 to 8+8. Co-developed-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com> Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com> Signed-off-by: Nuno Sá <nuno.sa@analog.com> Link: https://patch.msgid.link/20260911-hwmon-max20826-support-v2-4-5e30cbd97d84@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
It is possible for a PMBus driver to configure a phase count larger than the PMBUS_PHASES limit and cause an out-of-bounds read. Add a bounds check for info->phases against PMBUS_PHASES in the core API to prevent the potential out-of-bounds read. Cc: Nuno Sá <nuno.sa@analog.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Nuno Sá <nuno.sa@analog.com> Link: https://patch.msgid.link/20260912145038.2411447-1-linux@roeck-us.net
Add temperature channel mapping for Agilex 5 and bind it to the "intel,agilex5-svc" compatible string. Reuse the Agilex voltage channels. Agilex 5 omits temperature channel 2 (top-left corner) because that sensor is not present; remaining sensors keep Agilex channel numbers. The "intel,agilex5-svc" compatible is added to the stratix10-svc match table by a separate patch [1]. Without that change the service layer does not bind on Agilex 5, so the socfpga-hwmon device is never created; this patch depends on it. Update the socfpga-hwmon documentation to list Agilex 5, the matching compatible string, and the SDM temperature/voltage channel tables. Signed-off-by: Tze Yee Ng <tze.yee.ng@altera.com> Link: https://lore.kernel.org/all/20260907082203.2639395-4-adrian.ho.yin.ng@altera.com/ [1] Link: https://patch.msgid.link/41bb317cbfb6f4e2711581f2ccb22071db17b19e.1789373027.git.tze.yee.ng@altera.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add the vendor prefix for Sensylink Microelectronics. Link: https://en.sensylink.com/ Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Troy Mitchell <troy.mitchell@linux.dev> Link: https://patch.msgid.link/20260914-ctl2301-v5-1-b44b81cd2c3c@linux.dev Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Move the National Semiconductor LM63, LM64, and LM96163 compatibles out of trivial-devices.yaml and into a dedicated binding. Describe their integrated fan control and preserve the optional interrupt used by the ALERT output. Permit use as thermal cooling devices via #cooling-cells. Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Troy Mitchell <troy.mitchell@linux.dev> Link: https://patch.msgid.link/20260914-ctl2301-v5-2-b44b81cd2c3c@linux.dev Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add the Sensylink CTF2301 temperature sensor and fan controller to the LM63 family binding. The chip follows the LM63 register model and can provide a thermal cooling device when #cooling-cells is present. Do not provide a national,lm63 fallback because the CTF2301 is not fully compatible with LM63. It uses different conversion-rate encodings, extended local-temperature registers, additional fan lookup table entries, and device-specific PWM and ALERT/TACH configuration. An older LM63 driver would therefore not operate the device correctly. Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Troy Mitchell <troy.mitchell@linux.dev> Link: https://patch.msgid.link/20260914-ctl2301-v5-3-522def70acb4@linux.dev Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Add Sensylink CTF2301 support to the LM63 driver. CTF2301 follows the LM63-style temperature, tachometer, and PWM register layout, while using a 12-bit local temperature register and requiring the ALERT/TACH pin to be configured for tachometer input. Register an optional thermal cooling device when the device tree node provides #cooling-cells, allowing thermal zones to control the fan through the existing PWM path without changing behavior for existing LM63-family users. Signed-off-by: Troy Mitchell <troy.mitchell@linux.dev> Link: https://patch.msgid.link/20260914-ctl2301-v5-4-522def70acb4@linux.dev Signed-off-by: Guenter Roeck <linux@roeck-us.net>
ADPM12300 is a quarter brick DC/DC Power Module. It is a high power non-isolated converter capable of delivering regulated 12V with continuous power level of 3000W. Uses PMBus. Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com> Link: https://patch.msgid.link/20260914-dev_adpm12300-v1-1-15fc8143d457@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
On the Dell Precision 3650 Tower, the EC ignores fan speed writes unless automatic BIOS fan control is disabled first. The I8K_FAN_30A3_31A3 SMM code pair works on this machine through the WMI-SMM backend: after writing 1 to pwm1_enable, all three fans (CPU, front, top) accept the three fan states and report matching RPM, and writing 2 hands control back to the BIOS. I8K_FAN_34A3_35A3 was tested as well and also works; I8K_FAN_30A3_31A3 is used since it matches recent OEM software. Tested on BIOS 1.48.0 with kernels 7.0.0-30 and 7.0.0-31 (Ubuntu 26.04). Signed-off-by: Patrick Pepin <patpep@me.com> Acked-by: Pali Rohár <pali@kernel.org> Link: https://patch.msgid.link/20260914080955.87925-1-patpep@me.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
TPS536C7 is a PMBus-compliant dual-channel D-CAP+ multiphase step-down controller. Add its compatible string. Signed-off-by: Sanman Pradhan <psanman@juniper.net> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://patch.msgid.link/20260915164823.160977-3-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
TPS536C7 is a dual-channel D-CAP+ step-down controller whose channels are distributed across a configurable number of phases (N+M, up to 12 total). Whether channel B (PMBus page 1) exists depends on the phase configuration register, so the page count is derived at probe time. Factor the TPS53676 phase-map parsing into a shared helper and reuse it for TPS536C7. Only aggregate per-channel telemetry is exposed: leave info->phases[] unset so the PMBus core never programs the PHASE selector on every read (and because TPS536C7 can place up to 12 phases on channel A, exceeding PMBUS_PHASES). Report VOUT in linear format like TPS53676. Since the core never programs PHASE, set it to 0xff on each populated page so READ_IOUT reports the aggregate channel current, and verify it (PHASE can be write-protected). Fail identification if aggregate selection cannot be established, since otherwise a single phase current could be reported as the channel total. A configuration with no channel-A phase is rejected with -EOPNOTSUPP: the PMBus core models pages as the contiguous range 0..pages-1 and cannot represent a channel-A-absent topology. On the tested TPS536C7 (device ID 54 49 53 6c 70 00, CAPABILITY 0xd0), block reads of IC_DEVICE_ID and USER_DATA_03 return -EBADMSG with PEC enabled, while retrying those two reads without PEC returns the expected 6- and 24-byte payloads. Standard byte/word telemetry keeps using PEC, so only those two identification reads fall back to no-PEC. Co-developed-by: Senthil Muniyappan <smuniyappan@juniper.net> Co-developed-by: Vaibhav Agarwal <avaibhav@juniper.net> Signed-off-by: Sanman Pradhan <psanman@juniper.net> Link: https://patch.msgid.link/20260915164823.160977-4-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Use a designated initializer for the acpi_device_id fields which makes the code more readable and consistent with how lists are initialized in the rest of the kernel code base. Also drop explicitly setting fields to 0 where it is redundant. Unify the list terminator to have a single space between the brackets and no trailing comma. Signed-off-by: Pawel Zalewski <pzalewski@thegoodpenguin.co.uk> Link: https://patch.msgid.link/20260915-acpi-hwmon-v2-1-39d17c748eb6@thegoodpenguin.co.uk Signed-off-by: Guenter Roeck <linux@roeck-us.net>
tps536c7_identify() sets info->pages to 1 for a single-channel part and then accesses page 0 (writing PMBUS_PHASE) without ensuring PAGE is actually 0. pmbus_set_page() does not update the PAGE register when info->pages is 1, so if boot firmware left PAGE set to another value the PHASE writes and subsequent telemetry may target the wrong page. Select page 0 explicitly before configuring PHASE. Signed-off-by: Sanman Pradhan <psanman@juniper.net> Link: https://patch.msgid.link/20260916235406.681131-3-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
actorreno
marked this pull request as ready for review
September 17, 2026 01:33
gastmaier
force-pushed
the
mirror_ci/groeck/linux-staging/hwmon-next
branch
from
September 18, 2026 00:01
98ace74 to
8ea9c84
Compare
ADPM12886 is a 1/8 brick DC/DC converter that provides up to 98% efficiency at half load. Can sustain output power of 1200W. Uses PMBUS. Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
actorreno
force-pushed
the
dev/adpm12886
branch
from
September 18, 2026 03:55
e5eb77a to
c437e24
Compare
Contributor
Author
|
Cleaned up commits |
gastmaier
force-pushed
the
mirror_ci/groeck/linux-staging/hwmon-next
branch
4 times, most recently
from
September 22, 2026 00:02
6afd18e to
5b34f0f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds ADPM device identification and support for ADPM12886 which is a 1/8 brick
DC/DC Power Module. It is a high power non-isolated converter capable of delivering
regulated 12V with continuous power level of 1600W.
PR Description
PR Type
PR Checklist