aboutsummaryrefslogtreecommitdiff
path: root/drivers/hwmon
AgeCommit message (Collapse)AuthorFilesLines
2024-08-27hwmon: (ina3221): Simplify with scoped for each OF child loopJinjie Ruan1-5/+2
Use scoped for_each_child_of_node_scoped() when iterating over device nodes to make code a bit simpler. Signed-off-by: Jinjie Ruan <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (aspeed-pwm-tacho): Simplify with scoped for each OF child loopJinjie Ruan1-5/+3
Use scoped for_each_child_of_node_scoped() when iterating over device nodes to make code a bit simpler. Signed-off-by: Jinjie Ruan <[email protected]> Reviewed-by: Andrew Jeffery <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (aspeed-g6-pwm-tacho): Simplify with scoped for each OF child loopJinjie Ruan1-3/+1
Use scoped for_each_child_of_node_scoped() when iterating over device nodes to make code a bit simpler. Signed-off-by: Jinjie Ruan <[email protected]> Reviewed-by: Andrew Jeffery <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (k10temp): Use cpu_feature_enabled() for detecting zenMario Limonciello1-16/+10
This removes some boilerplate from the code and will allow adding future CPUs by just device IDs. Signed-off-by: Mario Limonciello <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (oxp-sensors) Add support for multiple new devices.Derek J. Clark1-45/+254
Add support for the OrangePi NEO-01. It uses different registers for PWM manual mode, set PWM, and read fan speed than previous devices. Valid PWM input and duty cycle is 1-244, we scale this from 1-255 to maintain compatibility with the existing interface. Add OneXPlayer 2 series, OneXFly, and X1 series models. The 2/X1 series use new registers for turbo button takeover and read fan speed. X1 has an Intel variant so change the CPU detection at init to only check for the affected devices. While at it, adjust formatting of some constants and reorder all cases alphabetically for consistency. Rename OXP_OLD constants to OXP_MINI for disambiguation. Update code comments for clarity. Add support for AYANEO models 2S, AIR 1S, Flip series, GEEK 1S, and KUN. Signed-off-by: Derek J. Clark <[email protected]> Tested-by: Kevin Greenberg <[email protected]> Tested-by: Joshua Tam <[email protected]> Tested-by: Parth Menon <[email protected]> Tested-by: Philip Müller <[email protected]> Reported-by: kernel test robot <[email protected]> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (stts751) Add "st" vendor prefix to "stts751" compatible stringRob Herring (Arm)1-1/+1
The documented compatible string is "st,stts751", not "stts751". Even if "stts751" was in use, there's no need to list "stts751" in the DT match table. The I2C core will strip any vendor prefix and match against the i2c_device_id table which has an "stts751" entry. Signed-off-by: Rob Herring (Arm) <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (ntc_thermistor) fix module autoloadingYuntao Liu1-0/+1
Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded based on the alias from of_device_id table. Fixes: 9e8269de100d ("hwmon: (ntc_thermistor) Add DT with IIO support to NTC thermistor driver") Signed-off-by: Yuntao Liu <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (sch5627) Remove unused declaration sch56xx_watchdog_unregister()Yue Haibing1-1/+0
Commit 2be5f0d75325 ("hwmon: (sch56xx) Use devres functions for watchdog") removed the implementation but leave declaration. Signed-off-by: Yue Haibing <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (gsc-hwmon) fix module autoloadingLiao Chen1-0/+1
Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded based on the alias from of_device_id table. Signed-off-by: Liao Chen <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: Add thermal sensor driver for Surface Aggregator ModuleMaximilian Luz3-0/+247
Some of the newer Microsoft Surface devices (such as the Surface Book 3 and Pro 9) have thermal sensors connected via the Surface Aggregator Module (the embedded controller on those devices). Add a basic driver to read out the temperature values of those sensors. The EC can have up to 16 thermal sensors connected via a single sub-device, each providing temperature readings and a label string. Link: https://github.com/linux-surface/surface-aggregator-module/issues/59 Reviewed-by: Hans de Goede <[email protected]> Co-developed-by: Ivor Wanders <[email protected]> Signed-off-by: Ivor Wanders <[email protected]> Signed-off-by: Maximilian Luz <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (nct6775) add G15CF to ASUS WMI monitoring listDenis Pauk1-0/+1
Boards G15CF has got a nct6775 chip, but by default there's no use of it because of resource conflict with WMI method. Add the board to the WMI monitoring list. Link: https://bugzilla.kernel.org/show_bug.cgi?id=204807 Signed-off-by: Denis Pauk <[email protected]> Tested-by: Attila <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (chipcap2) Drop cc2_disable() in the probe and return dev_err_probe()Javier Carrasco1-22/+11
There is no need to actively disable a regulator that has not been enabled by the driver, which makes the call to cc2_disable() in the probe function meaningless, because the probe function never enables the device's dedicated regulator. Once the call to cc2_disable() is dropped, the error paths can directly return dev_err_probe() in all cases. Signed-off-by: Javier Carrasco <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (lm92) Update documentationGuenter Roeck1-1/+1
Update datasheet references. Replace misleading 'force parameter needed' with 'must be instantiated explicitly'. Explain the reason for the missing auto-detection. Mention all supported chips in Kconfig. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (lm92) Convert to with_info hwmon APIGuenter Roeck1-145/+174
Convert driver to with_info hwmon API to simplify the code and to reduce its size. No functional change. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (lm92) Convert to use regmapGuenter Roeck2-74/+131
Use regmap for local caching and for multi-byte operations to be able to use regmap API functions and to reduce the need for locking in the driver. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (lm92) Replace chip IDs with limit register resolutionGuenter Roeck1-8/+10
The chip IDs are not used by the driver. Drop them. Use driver data to store the limit register resolution instead, and use this information when writing temperature limits to improve chip specific rounding and to avoid writing into unused register bits. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (lm92) Reorder include files to alphabetic orderGuenter Roeck1-6/+6
Simplify driver maintenance by reordering files to alphabetic order. No functional change. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (lm92) Improve auto-detection accuracyGuenter Roeck1-9/+17
Checking three configuration register bits and the manufacturer ID register to auto-detect LM92 is a bit vague. Repeat twice on replicated register addresses to improve detection accuracy. Check the manufacturer ID first and bail out immediately without reading the other register if there is a mismatch to reduce the number of i2c transfers needed in that case. Also explicitly test for an error from reading the configuration register to avoid potential situations where the returned error masked against 0xe0 is 0. While at it, drop "lm92: Found National Semiconductor LM92 chip" detection noise. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-27hwmon: (vexpress) Use of_property_present()Rob Herring (Arm)1-1/+1
Use of_property_present() to test for property presence rather than of_get_property(). This is part of a larger effort to remove callers of of_get_property() and similar functions. of_get_property() leaks the DT property data pointer which is a problem for dynamically allocated nodes which may be freed. Signed-off-by: Rob Herring (Arm) <[email protected]> Reviewed-by: Sudeep Holla <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Guenter Roeck <[email protected]>
2024-08-26hwmon: (pt5161l) Fix invalid temperature readingCosmo Chou1-2/+2
The temperature reading function was using a signed long for the ADC code, which could lead to mishandling of invalid codes on 32-bit platforms. This allowed out-of-range ADC codes to be incorrectly interpreted as valid values and used in temperature calculations. Change adc_code to u32 to ensure that invalid ADC codes are correctly identified on all platforms. Fixes: 1b2ca93cd059 ("hwmon: Add driver for Astera Labs PT5161L retimer") Signed-off-by: Cosmo Chou <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-08-25hwmon: (asus-ec-sensors) remove VRM temp X570-E GAMINGRoss Brown1-1/+1
X570-E GAMING does not have VRM temperature sensor. Signed-off-by: Ross Brown <[email protected]> Signed-off-by: Eugene Shalygin <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1619) Improve chip detection codeGuenter Roeck1-18/+14
Bail out immediately if reading any of the registers used for chip detection fails, or if it returns an unexpected value. Drop all log messages from detection code. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1619) Add support for update_interval attributeGuenter Roeck1-8/+42
The chip supports reading and writing the conversion rate. Add support for the update_interval sysfs attribute. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1619) Convert to with_info APIGuenter Roeck1-113/+158
Convert driver to with_info hwmon API to simplify the code and with it its maintainability. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1619) Convert to use regmapGuenter Roeck1-123/+138
Use regmap for local caching, to hide register read/write address differences, and for multi-byte operations. With this change, the driver specific lock is no longer necessary. While at it, check errors seen when initializing the chip and bail out if chip initialization fails. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1619) Mask valid alarm bitsGuenter Roeck1-0/+1
Bit 0, 5, and 6 in the status register are reserved and, if set, do not indicate an alarm. Bit 7 is the 'busy' bit and also does not indicate an alarm. Mask the non-alarm bits to avoid reporting them to userspace. Cc: Tzung-Bi Shih <[email protected]> Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1619) Reorder include files to alphabetic orderGuenter Roeck1-6/+6
Simplify maintenance by reordering include files to alphabetic order. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1619) Clamp temperature range when writing limitsGuenter Roeck1-12/+2
Module test code reports underflows when writing sensor limits. temp2_min: Suspected underflow: [min=-77000, read 101000, written -2147483648] temp2_max: Suspected underflow: [min=-77000, read 101000, written -2147483648] temp2_crit: Suspected underflow: [min=-77000, read 101000, written -2147483648] Clamp temperature ranges when writing limits to fix the problem. While at it, use sign_extend32() when reading temperatures to make the code easier to understand. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max6697) Document discrepancy in overtemperature status bit valuesGuenter Roeck1-0/+10
In the MAX6581 datasheet Revision 0 to 3, the local channel overtemperature status is reported in bit 6 of register 0x45, and the overtemperature status for remote channel 7 is reported in bit 7. In Revision 4 and later, the local channel overtemperature status is reported in bit 7, and the remote channel 7 overtemperature status is reported in bit 6. A real chip was found to match the functionality documented in Revision 4 and later. The code was fixed with commit 1ea3fd1eb986 ("hwmon: (max6697) Fix swapped temp{1,8} critical alarms"). At that time it looked like this was an original bug. It only turned out later that the problem was the result of incorrect information in the chip datasheet. Document the discrepancy to avoid confusion caused by old versions of the datasheet. Cc: Tzung-Bi Shih <[email protected]> Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1668) Convert to use with_info hwmon APIGuenter Roeck1-225/+116
Convert to use with_info API to simplify the code and to reduce its size. This patch reduces object file size by approximately 25%. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1668) Replace chip type with number of channelsGuenter Roeck1-8/+6
The only difference between supported chips is the number of channels. Drop enum chips and list the number of channels in struct i2c_device_id directly. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1668) Convert to use regmapGuenter Roeck1-116/+99
Use regmap for caching to simplify the code and to hide read/write register address differences. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1668) Use BIT macroGuenter Roeck1-2/+3
Use bit macro to make the code easier to understand and reduce duplication. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max1668) Reorder include files to alphabetic orderGuenter Roeck1-6/+6
Reorder include files to alphabetic order to simplify driver maintenance. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (ltc2947) Move to firmware agnostic APINuno Sa1-10/+10
Use the device property APIs so the driver does not depend on OF to work. While at it, properly include mod_devicetable for struct of_device_id and fix some parameter alignment in the changed places. Signed-off-by: Nuno Sa <[email protected]> Link: https://lore.kernel.org/r/20240726-dev-hwmon-ltc6947-fw-agnostic-v1-1-f7d6cab7d438@analog.com Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (adt7475) Add support for configuring initial PWM stateChris Packham1-0/+130
By default the PWM duty cycle in hardware is 100%. On some systems this can cause unwanted fan noise. Add the ability to specify the fan connections and initial state of the PWMs via device properties. Signed-off-by: Chris Packham <[email protected]> Link: https://lore.kernel.org/r/[email protected] [groeck: Cleaned up formatting] Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max6697) Add support for tempX_min and tempX_min_alarmGuenter Roeck1-11/+48
MAX6581 supports setting the minimum temperature as well as minimum temperature alarms. Add support for it. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max6697) Convert to with_info hwmon APIGuenter Roeck1-289/+171
Convert to with_info hwmon API to simplify the code and reduce its size. This patch reduces object file size by approximately 25%. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max6697) Convert to use regmapGuenter Roeck1-196/+121
Use regmap for register caching, and use regmap API for bit operations to simplify the code. This patch reduces object file size by approximately 10%. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max6697) Use bit operations where possibleGuenter Roeck1-15/+28
Use bit operations to improve code maintainability. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max6697) Drop platform data supportGuenter Roeck1-94/+82
Platform data is not used anywhere in the upstram kernel. Drop support for it to simplify code maintenance. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max6697) Reorder include filesGuenter Roeck1-6/+6
Reorder include files to alphabetic order to improve maintainability. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max16065) Fix alarm attributesGuenter Roeck1-2/+10
Chips reporting overcurrent alarms report it in the second alarm register. That means the second alarm register has to be read, even if the chip only supports 8 or fewer ADC channels. MAX16067 and MAX16068 report undervoltage and overvoltage alarms in separate registers. Fold register contents together to report both with the existing alarm attribute. This requires actually storing the chip type in struct max16065_data. Rename the variable 'chip' to match the variable name used in the probe function. Reviewed-by: Tzung-Bi Shih <[email protected]> Fixes: f5bae2642e3d ("hwmon: Driver for MAX16065 System Manager and compatibles") Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (max16065) Fix overflows seen when writing limitsGuenter Roeck1-2/+3
Writing large limits resulted in overflows as reported by module tests. in0_lcrit: Suspected overflow: [max=5538, read 0, written 2147483647] in0_crit: Suspected overflow: [max=5538, read 0, written 2147483647] in0_min: Suspected overflow: [max=5538, read 0, written 2147483647] Fix the problem by clamping prior to multiplications and the use of DIV_ROUND_CLOSEST, and by using consistent variable types. Reviewed-by: Tzung-Bi Shih <[email protected]> Fixes: f5bae2642e3d ("hwmon: Driver for MAX16065 System Manager and compatibles") Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (ltc2992) use device_for_each_child_node_scoped() to access child nodesJavier Carrasco1-14/+5
The iterated nodes are direct children of the device node, and the `device_for_each_child_node()` macro accounts for child node availability. `fwnode_for_each_available_child_node()` is meant to access the child nodes of an fwnode, and therefore not direct child nodes of the device node. In this case, the child nodes are not required outside the loop, and the scoped version of the macro can be used to remove the repetitive `goto put` pattern. Use `device_for_each_child_node_scoped_scoped()` to indicate device's direct child nodes. Reviewed-by: Jonathan Cameron <[email protected]> Signed-off-by: Javier Carrasco <[email protected]> Link: https://lore.kernel.org/r/20240721-device_for_each_child_node-available-v2-2-f33748fd8b2d@gmail.com Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (dell-smm) Add Dell Latitude 7320 to fan control whitelistArmin Wolf1-0/+8
Add the Dell Latitude 7320 to the fan control whitelist to allow for manual fan control. Closes: https://github.com/Wer-Wolf/i8kutils/issues/8 Signed-off-by: Armin Wolf <[email protected]> Acked-by: Pali Rohár <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (lm95234) Use multi-byte regmap operationsGuenter Roeck1-27/+18
Use multi-byte regmap operations to simplify the code and to reduce dependency on locking. No functional change. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (lm95234) Add support for tempX_enable attributeGuenter Roeck1-5/+17
LM95233/LM95234 support enabling temperature channels one by one. Add support for tempX_enable attribute to be able to use that functionality. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (lm95234) Convert to with_info hwmon APIGuenter Roeck1-328/+225
Convert to with_info API to simplify the code and reduce its size. This patch reduces the object file size by about 30%. No functional change. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
2024-07-31hwmon: (lm95234) Convert to use regmapGuenter Roeck2-248/+182
Use regmap to replace local caching and to be able to use regmap API functions. No functional change. Reviewed-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>