Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a2805e8 authored by Guenter Roeck's avatar Guenter Roeck
Browse files

hwmon: (pmbus/lm25066) Ignore byte writes to non-zero pages



pmbus_clear_faults() attempts to clear faults on non-existing real pages.
As a result, the command error bit in the status register is set, and faults
are not really cleared.

All byte writes to non-zero pages are requests to clear the status register
on that page. Since non-zero pages are virtual and do not exist on the chip,
there is nothing to do, and such requests have to be ignored. This fixes
above problem.

Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
Reviewed-by: default avatarRobert Coulson <robert.coulson@ericsson.com>
parent 044cd3a5
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -161,6 +161,17 @@ static int lm25066_write_word_data(struct i2c_client *client, int page, int reg,
	return ret;
}

static int lm25066_write_byte(struct i2c_client *client, int page, u8 value)
{
	if (page > 1)
		return -EINVAL;

	if (page == 0)
		return pmbus_write_byte(client, 0, value);

	return 0;
}

static int lm25066_probe(struct i2c_client *client,
			  const struct i2c_device_id *id)
{
@@ -204,6 +215,7 @@ static int lm25066_probe(struct i2c_client *client,

	info->read_word_data = lm25066_read_word_data;
	info->write_word_data = lm25066_write_word_data;
	info->write_byte = lm25066_write_byte;

	switch (id->driver_data) {
	case lm25066: