The property name is "sensirion,low-precision", not
"sensicon,low-precision".
Cc: Chris Ruehl <chris.ruehl@gtsys.com.hk>
Fixes: be7373b60d ("hwmon: shtc1: add support for device tree bindings")
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Pull driver core updates from Greg KH:
"Here is the small set of driver core and kernfs changes for 6.10-rc1.
Nothing major here at all, just a small set of changes for some driver
core apis, and minor fixups. Included in here are:
- sysfs_bin_attr_simple_read() helper added and used
- device_show_string() helper added and used
All usages of these were acked by the various maintainers. Also in
here are:
- kernfs minor cleanup
- removed unused functions
- typo fix in documentation
- pay attention to sysfs_create_link() failures in module.c finally
All of these have been in linux-next for a very long time with no
reported problems"
* tag 'driver-core-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
device property: Fix a typo in the description of device_get_child_node_count()
kernfs: mount: Remove unnecessary ‘NULL’ values from knparent
scsi: Use device_show_string() helper for sysfs attributes
platform/x86: Use device_show_string() helper for sysfs attributes
perf: Use device_show_string() helper for sysfs attributes
IB/qib: Use device_show_string() helper for sysfs attributes
hwmon: Use device_show_string() helper for sysfs attributes
driver core: Add device_show_string() helper for sysfs attributes
treewide: Use sysfs_bin_attr_simple_read() helper
sysfs: Add sysfs_bin_attr_simple_read() helper
module: don't ignore sysfs_create_link() failures
driver core: Remove unused platform_notify, platform_notify_remove
Pull pwm updates from Uwe Kleine-König:
"Apart for the normal updates for dt bindings, cleanups and support for
new device variants to existing drivers this completes the conversion
to pwmchip_alloc() which was started in the v6.9 development cycle.
Using pwmchip_alloc() is a precondition to the character device
support which allows easier and faster access to PWM devices. However
there are some issues I want to clean up before including it in
mainline, so this isn't contained here despite it was in next for some
time.
Thanks to Alexandre Mergnat, Binbin Zhou, Dmitry Rokosov, George
Stark, Jerome Brunet and Varshini Rajendran for their contributions.
Further thanks go to AngeloGioacchino Del Regno, Conor Dooley, David
Lechner, Fabrice Gasnier, Florian Fainelli, Guenter Roeck, Gustavo A.
R. Silva, Krzysztof Kozlowski and Rob Herring for valuable patch
review"
* tag 'pwm/for-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux: (34 commits)
pwm: pca9685: Drop explicit initialization of struct i2c_device_id::driver_data to 0
dt-bindings: pwm: snps,dw-apb-timers: Do not require pwm-cells twice
dt-bindings: pwm: mediatek,pwm-disp: Do not require pwm-cells twice
dt-bindings: pwm: mediatek,mt2712: Do not require pwm-cells twice
dt-bindings: pwm: marvell,pxa: Do not require pwm-cells twice
dt-bindings: pwm: google,cros-ec: Do not require pwm-cells twice
dt-bindings: pwm: bcm2835: Do not require pwm-cells twice
pwm: meson: Use mul_u64_u64_div_u64() for frequency calculating
pwm: meson: Add check for error from clk_round_rate()
pwm: meson: Drop unneeded check in .get_state()
dt-bindings: pwm: mediatek,pwm-disp: add compatible for mt8365 SoC
pwm: meson: Add generic compatible for meson8 to sm1
pwm: bcm2835: Drop open coded variant of devm_clk_rate_exclusive_get()
pwm: bcm2835: Introduce a local variable for &pdev->dev
pwm: stm32: Calculate prescaler with a division instead of a loop
pwm: stm32: Fix for settings using period > UINT32_MAX
pwm: stm32: Improve precision of calculation in .apply()
pwm: stm32: Add error messages in .probe()'s error paths
pwm: Make pwmchip_[sg]et_drvdata() a wrapper around dev_set_drvdata()
pwm: Don't check pointer for being non-NULL after use
...
Pull hwmon updates from Guenter Roeck:
"New drivers:
- Infineon XDP710
- EC Chip driver for Lenovo ThinkStation motherboards
- Analog Devices ADP1050
Improved support for existing drivers:
- emc1403: Convert to with_info API; Support for EMC1428 and EMC1438
- nzxt-kraken3: Support for NZXT Kraken 2023
- aquacomputer_d5next: Support for Octo flow sensors
- pmbus/adm1275: Support for ADM1281
- dell-smm: Supportt for Precision 7540 and G5 5505
Other notable cleanup:
- max6639: Use regmap
- Remove unused structure fields from multiple drivers
- Drop explicit initialization of struct i2c_device_id::driver_data
to zero
- Improve configuration mode handling in it87 driver
- jc42: Drop support for I2C_CLASS_SPD
- Various conversions to devicetree schema
- Add HAS_IOPORT dependencies as needed
Minor fixes and improvements to max31790, coretemp, aspeed-g6-pwm-tach,
pwm-fan, pmbus/mp2975, acpi_power_meter, and lm70 drivers"
* tag 'hwmon-for-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (52 commits)
hwmon: (nzxt-kraken3) Bail out for unsupported device variants
hwmon: (emc1403) Add support for EMC1428 and EMC1438.
hwmon: Drop explicit initialization of struct i2c_device_id::driver_data to 0 (part 2)
hwmon: (emc1403) Add support for conversion interval configuration
hwmon: (emc1403) Support 11 bit accuracy
hwmon: (emc1403) Convert to with_info API
hwmon: (max6639) Use regmap
hwmon: (npcm750-pwm-fan) Remove another unused field in struct npcm7xx_cooling_device
hwmon: (npcm750-pwm-fan) Remove an unused field in struct npcm7xx_cooling_device
hwmon: (stts751) Remove an unused field in struct stts751_priv
hwmon: Drop explicit initialization of struct i2c_device_id::driver_data to 0
hwmon: (max31790) revise the scale to write pwm
hwmon: (nzxt-kraken3) Add support for NZXT Kraken 2023 (standard and Elite) models
hwmon: (nzxt-kraken3) Decouple device names from kinds
hwmon: (it87) Remove tests nolonger required
hwmon: (it87) Test for chipset before entering configuration mode
hwmon: (it87) Do not enter configuration mode for some chiptypes
hwmon: (it87) Rename FEAT_CONF_NOEXIT to FEAT_NOCONF as more descriptive of requirement
hwmon: (pmbus) Add support for Infineon XDP710
dt-bindings: hwmon: Add infineon xdp710 driver bindings
...
Pull regulator updates from Mark Brown:
"There's one API update here, a new API factoring out a common pattern
for reference voltage supplies. These are supplies used as a reference
by analogue circuits where the consumer requests and enables the
supply, reads the voltage to calibrate the user and then never touches
it again. This is factored out into a single operation which just
returns the voltage and uses devm_ to manage the request and enable
portion.
Otherwise this has been a very quiet release, we've got some new
device support, some small fixes, housekeeping and cleanup work but
nothing substantial.
There's also some non-regulator changes in here, a number of users for
the new reference voltage API were merged along with it and some MFD
changes were pulled in as dependencies for new driver work.
Highlights:
- Add a new API for single operation handling of reference voltages
- Support for Allwinner AXP717 and D1, and NXP PCA9561A"
* tag 'regulator-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (33 commits)
regulator: sun20i: Add Allwinner D1 LDOs driver
regulator: dt-bindings: Add Allwinner D1 system LDOs
regulator: Mention regulator id in error message about dummy supplies
staging: iio: impedance-analyzer: ad5933: Use devm_regulator_get_enable_read_voltage()
iio: frequency: admv1013: Use devm_regulator_get_enable_read_voltage()
iio: addac: ad74115: Use devm_regulator_get_enable_read_voltage()
hwmon: (adc128d818) simplify final return in probe
regulator: devres: fix devm_regulator_get_enable_read_voltage() return
hwmon: (da9052) Use devm_regulator_get_enable_read_voltage()
hwmon: (adc128d818) Use devm_regulator_get_enable_read_voltage()
regulator: devres: add API for reference voltage supplies
regulator: rtq2208: Fix LDO discharge register and add vsel setting
regulator: dt-bindings: fixed-regulator: Add a preferred node name
regulator: axp20x: add support for the AXP717
mfd: axp20x: Add support for AXP717 PMIC
dt-bindings: mfd: x-powers,axp152: Document AXP717
regulator: axp20x: fix typo-ed identifier
dt-bindings: regulator: qcom,usb-vbus-regulator: Add PM7250B compatible
regulator: pca9450: add pca9451a support
regulator: dt-bindings: pca9450: add pca9451a support
...
Dan Carpenter reports:
Commit cbeb479ff4 ("hwmon: (nzxt-kraken3) Decouple device names
from kinds") from Apr 28, 2024 (linux-next), leads to the following
Smatch static checker warning:
drivers/hwmon/nzxt-kraken3.c:957 kraken3_probe()
error: uninitialized symbol 'device_name'.
Indeed, 'device_name' will be uninitizalized if an unknown product is
encountered. In practice this should not matter because the driver
should not instantiate on unknown products, but lets play safe and
bail out if that happens.
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/linux-hwmon/b1738c50-db42-40f0-a899-9c027c131ffb@moroto.mountain/
Cc: Jonas Malaco <jonas@protocubo.io>
Cc: Aleksa Savic <savicaleksa83@gmail.com>
Fixes: cbeb479ff4 ("hwmon: (nzxt-kraken3) Decouple device names from kinds")
Acked-by: Jonas Malaco <jonas@protocubo.io>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
These drivers don't use the driver_data member of struct i2c_device_id,
so don't explicitly initialize this member.
This prepares putting driver_data in an anonymous union which requires
either no initialization or named designators. But it's also a nice
cleanup on its own.
This is a follow up to commit d8a66f3621 ("hwmon: Drop explicit
initialization of struct i2c_device_id::driver_data to 0") which I
created before identifying a few corner cases in my conversion script.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20240508072027.2119857-2-u.kleine-koenig@pengutronix.de
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Convert driver to register with the hwmon subsystem using
devm_hwmon_device_register_with_info() instead of
devm_hwmon_device_register_with_groups() to simplify the code
and to reduce its size. As side effect, this also fixes a couple
of overflow problems when writing limit and hysteresis registers.
Cc: Lars Petter Mostad <lars.petter.mostad@appear.net>
Tested-by: Lars Petter Mostad <lars.petter.mostad@appear.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Through hidraw, userspace can cause a status report to be sent
from the device. The parsing in ccp_raw_event() may happen in
parallel to a send_usb_cmd() call (which resets the completion
for tracking the report) if it's running on a different CPU where
bottom half interrupts are not disabled.
Add a spinlock around the complete_all() in ccp_raw_event() and
reinit_completion() in send_usb_cmd() to prevent race issues.
Fixes: 40c3a44542 ("hwmon: add Corsair Commander Pro driver")
Signed-off-by: Aleksa Savic <savicaleksa83@gmail.com>
Acked-by: Marius Zachmann <mail@mariuszachmann.de>
Link: https://lore.kernel.org/r/20240504092504.24158-4-savicaleksa83@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Introduce cmd_buffer, a separate buffer for storing only
the command that is sent to the device. Before this separation,
the existing buffer was shared for both the command and the
report received in ccp_raw_event(), which was copied into it.
However, because of hidraw, the raw event parsing may be triggered
in the middle of sending a command, resulting in outputting gibberish
to the device. Using a separate buffer resolves this.
Fixes: 40c3a44542 ("hwmon: add Corsair Commander Pro driver")
Signed-off-by: Aleksa Savic <savicaleksa83@gmail.com>
Acked-by: Marius Zachmann <mail@mariuszachmann.de>
Link: https://lore.kernel.org/r/20240504092504.24158-2-savicaleksa83@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Since the value for PWMOUT Target Duty Cycle register is a 9 bit
left-justified value that ranges from 0 to 511 and is contained in 2
bytes.
There is an issue that the PWM signal recorded by oscilloscope would
not be on consistently if we set PWM to 100% to the driver.
It is because the LSB of the 9 bit would always be zero if it just
left shift 8 bit for the value that write to PWMOUT Target Duty
Cycle register.
Therefore, revise the scale of the value that was written to pwm input
from 255 to 511 and modify the value to left-justified value.
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
Link: https://lore.kernel.org/r/20240416022211.859483-1-Delphine_CC_Chiu@wiwynn.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Major part of the change for the new method to avoid chipset issues.
The actual update does the following:
1) Lock the memory, but does not perform a SIO entry (previously it
would have performed an SIO entry).
2) Attempt to read the chipID. This should be safe no matter which
chip we have.
3) If step (2) fails, then perform SIO entry and retry chipID read. For
older chips and on failure it acts similarly to prior to this patch.
4) Set the sio_data->type, similar to previously.
5) If we have not performed an SIO entry, and this is not a chip type
with the NOCONF feature, then it will perform an SIO entry at this
point.
6) Proceed with setup as prior to this patch.
7) Any following access to the SIO registers will invoke the SIO entry
and SIO exit steps unless it is a chip with the NOCONF feature set.
This was set up in the previous patches in this patchset.
8) Update to the exit based on if it had performed a SIO entry or not.
Signed-off-by: Frank Crawford <frank@crawford.emu.id.au>
Link: https://lore.kernel.org/r/20240428060653.2425296-4-frank@crawford.emu.id.au
[groeck: s/intialised/initialized/]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This addition adds in the ability for the system to scan
the EC chip in the Lenovo ThinkStation systems to get the
current fan RPM speeds the Maximum speed value for each
fan also provides the CPU, DIMM other thermal statuses
Signed-off-by: David Ober <dober6023@gmail.com>
Link: https://lore.kernel.org/r/20240328121250.331146-1-dober6023@gmail.com
[groeck: Dropped pointless case statements]
[Colin King: Fixed spelling error accesssible -> accessible]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The Intel Software Development manual defines the temperature digital
readout as the bits [22:16] of the IA32_[PACKAGE]_THERM_STATUS registers.
Bit 23 is specified as reserved.
In recent processors, however, the temperature digital readout uses bits
[23:16]. In those processors, using the bitmask 0x7f would lead to
incorrect readings if the temperature deviates from TjMax by more than
127 degrees Celsius.
Although not guaranteed, bit 23 is likely to be 0 in processors from a few
generations ago. The temperature reading would still be correct in those
processors when using a 0xff bitmask.
Model-specific provisions can be made for older processors in which bit 23
is not 0 should the need arise.
Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Link: https://lore.kernel.org/r/20240425171311.19519-4-ricardo.neri-calderon@linux.intel.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is ignored (apart
from emitting a warning) and this typically results in resource leaks.
To improve here there is a quest to make the remove callback return
void. In the first step of this quest all drivers are converted to
.remove_new() which already returns void. Eventually after all drivers
are converted, .remove_new() is renamed to .remove().
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Andrew Jeffery <andrew@codeconstruct.com.au>
Link: https://lore.kernel.org/r/20240409085552.19868-2-u.kleine-koenig@pengutronix.de
Signed-off-by: Guenter Roeck <linux@roeck-us.net>