Commit dbc0860f authored by Erik Rosen's avatar Erik Rosen Committed by Guenter Roeck
Browse files

hwmon: (pmbus) Add new pmbus flag NO_WRITE_PROTECT



Some PMBus chips respond with invalid data when reading the WRITE_PROTECT
register. For such chips, this flag should be set so that the PMBus core
driver doesn't use the WRITE_PROTECT command to determine its behavior.

Signed-off-by: default avatarErik Rosen <erik.rosen@metormote.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent ff53b77e
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -2231,9 +2231,11 @@ static int pmbus_init_common(struct i2c_client *client, struct pmbus_data *data,
	 * faults, and we should not try it. Also, in that case, writes into
	 * limit registers need to be disabled.
	 */
	if (!(data->flags & PMBUS_NO_WRITE_PROTECT)) {
		ret = i2c_smbus_read_byte_data(client, PMBUS_WRITE_PROTECT);
		if (ret > 0 && (ret & PB_WP_ANY))
			data->flags |= PMBUS_WRITE_PROTECTED | PMBUS_SKIP_STATUS_CHECK;
	}

	if (data->info->pages)
		pmbus_clear_faults(client);
+9 −0
Original line number Diff line number Diff line
@@ -56,6 +56,15 @@
 */
#define PMBUS_READ_STATUS_AFTER_FAILED_CHECK	BIT(3)

/*
 * PMBUS_NO_WRITE_PROTECT
 *
 * Some PMBus chips respond with invalid data when reading the WRITE_PROTECT
 * register. For such chips, this flag should be set so that the PMBus core
 * driver doesn't use the WRITE_PROTECT command to determine its behavior.
 */
#define PMBUS_NO_WRITE_PROTECT			BIT(4)

struct pmbus_platform_data {
	u32 flags;		/* Device specific flags */