Message ID | 20210812014000.26293-2-chris.packham@alliedtelesis.co.nz (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | hwmon: (pmbus/bpa-rs600) cleanup and workaround | expand |
On Thu, Aug 12, 2021 at 01:39:59PM +1200, Chris Packham wrote: > In the initial implementation a number of PMBUS_x_WARN_LIMITs were > mapped to MFR fields. This was incorrect as these MFR limits reflect the > rated limit as opposed to a limit which will generate warning. Instead > return -ENXIO like we were already doing for other WARN_LIMITs. > > Subsequently these rated limits have been exposed generically as new > fields in the sysfs ABI so the values are still available. > > Fixes: 15b2703e5e02 ("hwmon: (pmbus) Add driver for BluTek BPA-RS600") > Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> Applied. Thanks, Guenter > --- > > Notes: > Changes in v2: > - Reworked to remove the mapping of warning limits to rated limits. > > drivers/hwmon/pmbus/bpa-rs600.c | 25 ------------------------- > 1 file changed, 25 deletions(-) > > diff --git a/drivers/hwmon/pmbus/bpa-rs600.c b/drivers/hwmon/pmbus/bpa-rs600.c > index d205b41540ce..84dee86399cb 100644 > --- a/drivers/hwmon/pmbus/bpa-rs600.c > +++ b/drivers/hwmon/pmbus/bpa-rs600.c > @@ -12,15 +12,6 @@ > #include <linux/pmbus.h> > #include "pmbus.h" > > -#define BPARS600_MFR_VIN_MIN 0xa0 > -#define BPARS600_MFR_VIN_MAX 0xa1 > -#define BPARS600_MFR_IIN_MAX 0xa2 > -#define BPARS600_MFR_PIN_MAX 0xa3 > -#define BPARS600_MFR_VOUT_MIN 0xa4 > -#define BPARS600_MFR_VOUT_MAX 0xa5 > -#define BPARS600_MFR_IOUT_MAX 0xa6 > -#define BPARS600_MFR_POUT_MAX 0xa7 > - > enum chips { bpa_rs600, bpd_rs600 }; > > static int bpa_rs600_read_byte_data(struct i2c_client *client, int page, int reg) > @@ -83,29 +74,13 @@ static int bpa_rs600_read_word_data(struct i2c_client *client, int page, int pha > > switch (reg) { > case PMBUS_VIN_UV_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VIN_MIN); > - break; > case PMBUS_VIN_OV_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VIN_MAX); > - break; > case PMBUS_VOUT_UV_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VOUT_MIN); > - break; > case PMBUS_VOUT_OV_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VOUT_MAX); > - break; > case PMBUS_IIN_OC_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_IIN_MAX); > - break; > case PMBUS_IOUT_OC_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_IOUT_MAX); > - break; > case PMBUS_PIN_OP_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_PIN_MAX); > - break; > case PMBUS_POUT_OP_WARN_LIMIT: > - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_POUT_MAX); > - break; > case PMBUS_VIN_UV_FAULT_LIMIT: > case PMBUS_VIN_OV_FAULT_LIMIT: > case PMBUS_VOUT_UV_FAULT_LIMIT:
diff --git a/drivers/hwmon/pmbus/bpa-rs600.c b/drivers/hwmon/pmbus/bpa-rs600.c index d205b41540ce..84dee86399cb 100644 --- a/drivers/hwmon/pmbus/bpa-rs600.c +++ b/drivers/hwmon/pmbus/bpa-rs600.c @@ -12,15 +12,6 @@ #include <linux/pmbus.h> #include "pmbus.h" -#define BPARS600_MFR_VIN_MIN 0xa0 -#define BPARS600_MFR_VIN_MAX 0xa1 -#define BPARS600_MFR_IIN_MAX 0xa2 -#define BPARS600_MFR_PIN_MAX 0xa3 -#define BPARS600_MFR_VOUT_MIN 0xa4 -#define BPARS600_MFR_VOUT_MAX 0xa5 -#define BPARS600_MFR_IOUT_MAX 0xa6 -#define BPARS600_MFR_POUT_MAX 0xa7 - enum chips { bpa_rs600, bpd_rs600 }; static int bpa_rs600_read_byte_data(struct i2c_client *client, int page, int reg) @@ -83,29 +74,13 @@ static int bpa_rs600_read_word_data(struct i2c_client *client, int page, int pha switch (reg) { case PMBUS_VIN_UV_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VIN_MIN); - break; case PMBUS_VIN_OV_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VIN_MAX); - break; case PMBUS_VOUT_UV_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VOUT_MIN); - break; case PMBUS_VOUT_OV_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_VOUT_MAX); - break; case PMBUS_IIN_OC_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_IIN_MAX); - break; case PMBUS_IOUT_OC_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_IOUT_MAX); - break; case PMBUS_PIN_OP_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_PIN_MAX); - break; case PMBUS_POUT_OP_WARN_LIMIT: - ret = pmbus_read_word_data(client, 0, 0xff, BPARS600_MFR_POUT_MAX); - break; case PMBUS_VIN_UV_FAULT_LIMIT: case PMBUS_VIN_OV_FAULT_LIMIT: case PMBUS_VOUT_UV_FAULT_LIMIT:
In the initial implementation a number of PMBUS_x_WARN_LIMITs were mapped to MFR fields. This was incorrect as these MFR limits reflect the rated limit as opposed to a limit which will generate warning. Instead return -ENXIO like we were already doing for other WARN_LIMITs. Subsequently these rated limits have been exposed generically as new fields in the sysfs ABI so the values are still available. Fixes: 15b2703e5e02 ("hwmon: (pmbus) Add driver for BluTek BPA-RS600") Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> --- Notes: Changes in v2: - Reworked to remove the mapping of warning limits to rated limits. drivers/hwmon/pmbus/bpa-rs600.c | 25 ------------------------- 1 file changed, 25 deletions(-)