linux-stable/drivers/hwmon
Adam Wujek 9444c59499 hwmon: (pmbus) Check PEC support before reading other registers
[ Upstream commit d1baf7a3a3 ]

Make sure that the support of PEC is determined before the read of other
registers. Otherwise the validation of PEC can trigger an error on the read
of STATUS_BYTE or STATUS_WORD registers.

The problematic scenario is the following. A device with enabled PEC
support is up and running and a kernel driver is loaded.
Then the driver is unloaded (or device unbound), the HW device
is reconfigured externally (e.g. by i2cset) to advertise itself as not
supporting PEC. Without the move of the code, at the second load of
the driver (or bind) the STATUS_BYTE or STATUS_WORD register is always
read with PEC enabled, which is likely to cause a read error resulting
with fail of a driver load (or bind).

Signed-off-by: Adam Wujek <dev_public@wujek.eu>
Link: https://lore.kernel.org/r/20220519233334.438621-1-dev_public@wujek.eu
Fixes: 75d2b2b06b ("hwmon: (pmbus) disable PEC if not enabled")
Fixes: 4e5418f787 ("hwmon: (pmbus_core) Check adapter PEC support")
[groeck: Added Fixes: tags, dropped continuation line]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-09 10:25:57 +02:00
..
occ Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
pmbus hwmon: (pmbus) Check PEC support before reading other registers 2022-06-09 10:25:57 +02:00
Kconfig hwmon: (ltq-cputemp) restrict it to SOC_XWAY 2022-05-18 10:28:14 +02:00
Makefile hwmon: add driver for NZXT RGB&Fan Controller/Smart Device v2. 2021-12-26 15:02:07 -08:00
abituguru.c hwmon: abituguru: make array probe_order static, makes object smaller 2019-11-06 14:37:19 -08:00
abituguru3.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
acpi_power_meter.c hwmon: (acpi_power_meter) Use acpi_bus_get_acpi_device() 2021-10-16 22:41:25 -07:00
ad7314.c
ad7414.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ad7418.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
adc128d818.c hwmon: Use kobj_to_dev() 2021-04-20 06:50:14 -07:00
adcxx.c
adm1021.c hwmon: (adm1021) Improve detection of LM84, MAX1617, and MAX1617A 2021-12-26 15:02:05 -08:00
adm1025.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
adm1026.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
adm1029.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
adm1031.c hwmon: (adm1031) Remove redundant assignment to variable range 2021-12-26 15:02:06 -08:00
adm1177.c hwmon: (adm1177) Fix kerneldoc attribute formatting 2020-12-02 17:42:23 -08:00
adm9240.c hwmon: (adm9240) Fix writes into inX_max attributes 2021-05-12 18:53:11 -07:00
ads7828.c hwmon: use simple i2c probe function (take 2) 2020-09-23 09:42:40 -07:00
ads7871.c
adt7x10.c hwmon: (adt7x10) Make adt7x10_remove() return void 2021-10-12 07:22:42 -07:00
adt7x10.h hwmon: (adt7x10) Make adt7x10_remove() return void 2021-10-12 07:22:42 -07:00
adt7310.c hwmon: (adt7x10) Make adt7x10_remove() return void 2021-10-12 07:22:42 -07:00
adt7410.c hwmon: (adt7x10) Make adt7x10_remove() return void 2021-10-12 07:22:42 -07:00
adt7411.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
adt7462.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
adt7470.c hwmon: (adt7470) Fix warning on module removal 2022-05-12 12:32:27 +02:00
adt7475.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
aht10.c hwmon: (aht10) Unlock on error in aht10_read_values() 2021-01-27 17:44:19 -08:00
amc6821.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
applesmc.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
aquacomputer_d5next.c hwmon: add driver for Aquacomputer D5 Next 2021-08-28 08:53:30 -07:00
as370-hwmon.c hwmon: (as370-hwmon) fix devm_platform_ioremap_resource.cocci warnings 2019-09-03 12:47:17 -07:00
asb100.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
asc7621.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
aspeed-pwm-tacho.c hwmon: (aspeed-pwm-tacho) Switch to using the new API kobj_to_dev() 2021-01-27 17:44:18 -08:00
asus_atk0110.c
asus_wmi_ec_sensors.c hwmon: (asus_wmi_ec_sensors) fix array overflow 2021-12-26 15:02:06 -08:00
asus_wmi_sensors.c hwmon: (asus_wmi_sensors) Fix CROSSHAIR VI HERO name 2022-05-18 10:28:16 +02:00
atxp1.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
axi-fan-control.c hwmon: (axi-fan-control) Support temperature vs pwm points 2021-08-17 14:54:26 -07:00
bt1-pvt.c hwmon: (bt1-pvt) Remove redundant error printing in pvt_request_regs() 2021-06-17 04:21:45 -07:00
bt1-pvt.h hwmon: (bt1-pvt) Cache current update timeout 2020-10-04 08:40:10 -07:00
coretemp.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
corsair-cpro.c hwmon: (corsair-cpro) Fix fall-through warnings for Clang 2021-05-17 19:50:23 -05:00
corsair-psu.c hwmon: (corsair-psu) fix plain integer used as NULL pointer 2021-11-14 16:57:16 -08:00
da9052-hwmon.c hwmon: (da9052) Switch to using the new API kobj_to_dev() 2021-02-11 20:28:56 -08:00
da9055-hwmon.c
dell-smm-hwmon.c proc: remove PDE_DATA() completely 2022-01-22 08:33:37 +02:00
dme1737.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
drivetemp.c hwmon: drivetemp: fix typo temperatire => temperature 2020-12-02 17:42:23 -08:00
ds620.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ds1621.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
emc6w201.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
emc1403.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
emc2103.c hwmon: (emc2103) use simple i2c probe 2020-09-23 09:42:40 -07:00
f71805f.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
f71882fg.c hwmon: (f71882fg) Fix negative temperature 2022-05-18 10:28:16 +02:00
f75375s.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
fam15h_power.c hwmon: Replace deprecated CPU-hotplug functions. 2021-08-17 14:54:26 -07:00
fschmd.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ftsteutates.c hwmon: (ftsteutates) Rudimentary typo fixes 2021-04-20 06:50:14 -07:00
g760a.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
g762.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
gl518sm.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
gl520sm.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
gpio-fan.c hwmon: (gpio-fan) Switch to using the new API kobj_to_dev() 2021-01-27 17:44:18 -08:00
gsc-hwmon.c hwmon: (gsc-hwmon) add fan sensor 2020-09-23 09:42:41 -07:00
hih6130.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
hwmon-vid.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
hwmon.c hwmon: Handle failure to register sensor with thermal zone correctly 2022-02-22 08:04:01 -08:00
i5k_amb.c hwmon: (i5k_amb, vt8231) Drop uses of pci_read_config_*() return value 2020-08-04 14:24:39 -07:00
i5500_temp.c hwmon: (i5500_temp) Convert to devm_hwmon_device_register_with_info 2021-10-12 07:22:37 -07:00
ibmaem.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ibmpex.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ibmpowernv.c hwmon: (ibmpowernv) Silence strncpy() warning 2020-12-02 17:42:23 -08:00
iio_hwmon.c hwmon: (iio_hwmon) Drop bogus __refdata annotation 2020-12-11 07:42:27 -08:00
ina2xx.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
ina209.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
ina238.c hwmon: Driver for Texas Instruments INA238 2021-12-26 15:02:05 -08:00
ina3221.c hwmon: (ina3221) use CVRF only for single-shot conversion 2021-06-17 04:21:46 -07:00
intel-m10-bmc-hwmon.c hwmon: intel-m10-bmc-hwmon: add n5010 sensors 2021-08-17 14:54:25 -07:00
it87.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
jc42.c hwmon: (jc42) Add support for ONSEMI N34TS04 2021-12-26 15:02:05 -08:00
k8temp.c
k10temp.c hwmon: (k10temp) Support up to 12 CCDs on AMD Family of processors 2021-12-26 15:02:05 -08:00
lineage-pem.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm63.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm70.c hwmon: (lm70) Use SPI_MODE_X_MASK 2021-06-17 04:21:44 -07:00
lm73.c hwmon: (lm73) use simple i2c probe 2020-09-23 09:42:40 -07:00
lm75.c hwmon: (lm75) Add TI TMP1075 support 2021-06-17 04:21:44 -07:00
lm75.h hwmon: (lm75) Fix all coding-style warnings on lm75 driver 2020-05-22 06:28:38 -07:00
lm77.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm78.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm80.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm83.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm85.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm87.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm90.c hwmon: (lm90) Fix sysfs and udev notifications 2022-01-23 18:21:27 -08:00
lm92.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm93.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm95234.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
lm95241.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
lm95245.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
lochnagar-hwmon.c
ltc2945.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
ltc2947-core.c hwmon: (ltc2947) Properly handle errors when looking for the external clock 2021-09-24 05:02:24 -07:00
ltc2947-i2c.c hwmon: (ltc2947) use simple i2c probe 2020-09-23 09:42:40 -07:00
ltc2947-spi.c hwmon: Add support for ltc2947 2019-11-06 14:37:19 -08:00
ltc2947.h hwmon: Add support for ltc2947 2019-11-06 14:37:19 -08:00
ltc2990.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
ltc2992.c Replace for_each_*_bit_from() with for_each_*_bit() where appropriate 2022-01-15 08:47:31 -08:00
ltc4151.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ltc4215.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ltc4222.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
ltc4245.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
ltc4260.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
ltc4261.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
ltq-cputemp.c
max127.c hwmon: (max127) Add Maxim MAX127 hardware monitoring driver 2020-12-02 17:42:24 -08:00
max197.c
max1111.c
max1619.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
max1668.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
max6620.c hwmon: Add Maxim MAX6620 hardware monitoring driver 2021-10-12 07:22:37 -07:00
max6621.c hwmon: (max6621) Fix fall-through warnings for Clang 2021-05-17 19:50:37 -05:00
max6639.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
max6642.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
max6650.c hwmon: (max6650) Switch to using the new API kobj_to_dev() 2021-01-27 17:44:18 -08:00
max6697.c hwmon: Use kobj_to_dev() 2021-04-20 06:50:14 -07:00
max16065.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
max31722.c hwmon: (max31722) Warn about failure to put device in stand-by in .remove() 2021-10-16 22:42:14 -07:00
max31730.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
max31790.c hwmon: (max31790) Detect and report zero fan speed 2021-06-17 04:21:46 -07:00
mc13783-adc.c
mcp3021.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
menf21bmc_hwmon.c
mlxreg-fan.c hwmon: (mlxreg-fan) Support distinctive names per different cooling devices 2021-10-12 07:22:41 -07:00
mr75203.c hwmon: (mr75203) fix wrong power-up delay value 2021-12-26 15:02:07 -08:00
nct6683.c hwmon: (nct6683) Add another customer ID for NCT6683D sensor chip on some ASRock boards 2021-10-12 07:22:39 -07:00
nct6775.c hwmon: (nct6775) Fix crash in clear_caseopen 2022-01-24 14:32:47 -08:00
nct7802.c hwmon: (nct7802) Add of_node_put() before return 2021-10-28 21:27:38 -07:00
nct7904.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
npcm750-pwm-fan.c
nsa320-hwmon.c
ntc_thermistor.c hwmon: (ntc_thermistor) Underscore Samsung thermistor 2022-02-19 16:47:54 -08:00
nzxt-kraken2.c hwmon: add driver for NZXT Kraken X42/X52/X62/X72 2021-04-20 06:50:14 -07:00
nzxt-smart2.c hwmon: (nzxt-smart2) make array detect_fans_report static const 2022-01-09 17:10:58 -08:00
pc87360.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
pc87427.c
pcf8591.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
powr1220.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
pwm-fan.c hwmon: (pwm-fan) Ensure the fan going on in .probe() 2021-11-30 06:44:18 -08:00
raspberrypi-hwmon.c hwmon: (raspberrypi) Exit immediately in case of error in init 2021-12-26 15:02:06 -08:00
s3c-hwmon.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
sbrmi.c hwmon: Add support for SB-RMI power module 2021-08-17 14:54:25 -07:00
sbtsi_temp.c hwmon: (sbtsi) Add basic support for SB-TSI sensors 2020-12-12 08:32:35 -08:00
sch56xx-common.c hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING 2022-04-08 13:57:35 +02:00
sch56xx-common.h hwmon: (sch56xx) Use devres functions for watchdog 2021-06-17 04:21:44 -07:00
sch5627.c hwmon: (sch56xx) Use devres functions for watchdog 2021-06-17 04:21:44 -07:00
sch5636.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
scmi-hwmon.c hwmon: (scmi) port driver to the new scmi_sensor_proto_ops interface 2021-03-30 16:34:55 +01:00
scpi-hwmon.c hwmon: (scpi-hwmon) shows the negative temperature properly 2021-06-09 11:51:30 -07:00
sht3x.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
sht4x.c hwmon: (sht4x) Add device tree match table 2021-12-26 15:02:06 -08:00
sht15.c
sht21.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
shtc1.c hwmon: shtc1: add support for device tree bindings 2020-09-23 09:42:40 -07:00
sis5595.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
sl28cpld-hwmon.c hwmon: Add support for the sl28cpld hardware monitoring controller 2020-09-17 16:02:42 +01:00
smm665.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
smsc47b397.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
smsc47m1.c hwmon: (smsc47m1) Remove 'h' from printk format specifier 2021-01-27 17:44:17 -08:00
smsc47m192.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
sparx5-temp.c hwmon: (sparx5) Fix initial reading of temperature 2020-09-23 09:39:40 -07:00
stts751.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
tc74.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
tc654.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
thmc50.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
tmp102.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
tmp103.c hwmon: (tmp103) Convert tmp103 to use new hwmon registration API 2021-10-12 07:22:41 -07:00
tmp108.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
tmp401.c hwmon: (tmp401) Add OF device ID table 2022-05-18 10:28:11 +02:00
tmp421.c hwmon: (tmp421) Add of_node_put() before return 2021-10-18 07:23:21 -07:00
tmp513.c hwmon: (tmp513) fix spelling typo in comments 2020-10-04 08:40:10 -07:00
tps23861.c hwmon: (tps23861) correct shunt LSB values 2021-06-10 08:40:09 -07:00
ultra45_env.c
vexpress-hwmon.c hwmon: replace snprintf in show functions with sysfs_emit 2021-04-20 06:50:14 -07:00
via-cputemp.c hwmon: Convert to new X86 CPU match macros 2020-03-24 21:33:36 +01:00
via686a.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
vt1211.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
vt8231.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83l785ts.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83l786ng.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83627ehf.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83627hf.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83773g.c hwmon: use simple i2c probe function 2020-09-23 09:42:39 -07:00
w83781d.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83791d.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83792d.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83793.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
w83795.c hwmon: cleanup non-bool "valid" data fields 2021-10-12 07:22:41 -07:00
wm831x-hwmon.c
wm8350-hwmon.c
xgene-hwmon.c hwmon: (xgene-hwmon) Add free before exiting xgene_hwmon_probe 2021-12-28 08:04:10 -08:00