Linux Hardware Monitor development
 help / color / mirror / Atom feed
* [PATCH 1/3] hwmon: (tps23861) fix byte order in resistance register
@ 2022-09-05 14:28 Alexandru Gagniuc
  2022-09-05 14:28 ` [PATCH 2/3] hwmon: (tps23861) reduce count of i2c transactions for port_status Alexandru Gagniuc
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Alexandru Gagniuc @ 2022-09-05 14:28 UTC (permalink / raw)
  To: linux, linux-hwmon
  Cc: robert.marko, luka.perkov, jdelvare, dev, linux-kernel,
	Alexandru Gagniuc

The tps23861 registers are little-endian, and regmap_read_bulk() does
not do byte order conversion. On BE machines, the bytes were swapped,
and the interpretation of the resistance value was incorrect.

To make it work on both big and little-endian machines, use
le16_to_cpu() to convert the resitance register to host byte order.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
---
 drivers/hwmon/tps23861.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/hwmon/tps23861.c b/drivers/hwmon/tps23861.c
index 42762e87b014..f7c59ff7ae8e 100644
--- a/drivers/hwmon/tps23861.c
+++ b/drivers/hwmon/tps23861.c
@@ -493,18 +493,20 @@ static char *tps23861_port_poe_plus_status(struct tps23861_data *data, int port)
 
 static int tps23861_port_resistance(struct tps23861_data *data, int port)
 {
-	u16 regval;
+	unsigned int raw_val;
+	__le16 regval;
 
 	regmap_bulk_read(data->regmap,
 			 PORT_1_RESISTANCE_LSB + PORT_N_RESISTANCE_LSB_OFFSET * (port - 1),
 			 &regval,
 			 2);
 
-	switch (FIELD_GET(PORT_RESISTANCE_RSN_MASK, regval)) {
+	raw_val = le16_to_cpu(regval);
+	switch (FIELD_GET(PORT_RESISTANCE_RSN_MASK, raw_val)) {
 	case PORT_RESISTANCE_RSN_OTHER:
-		return (FIELD_GET(PORT_RESISTANCE_MASK, regval) * RESISTANCE_LSB) / 10000;
+		return (FIELD_GET(PORT_RESISTANCE_MASK, raw_val) * RESISTANCE_LSB) / 10000;
 	case PORT_RESISTANCE_RSN_LOW:
-		return (FIELD_GET(PORT_RESISTANCE_MASK, regval) * RESISTANCE_LSB_LOW) / 10000;
+		return (FIELD_GET(PORT_RESISTANCE_MASK, raw_val) * RESISTANCE_LSB_LOW) / 10000;
 	case PORT_RESISTANCE_RSN_SHORT:
 	case PORT_RESISTANCE_RSN_OPEN:
 	default:
-- 
2.34.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-09-05 22:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-05 14:28 [PATCH 1/3] hwmon: (tps23861) fix byte order in resistance register Alexandru Gagniuc
2022-09-05 14:28 ` [PATCH 2/3] hwmon: (tps23861) reduce count of i2c transactions for port_status Alexandru Gagniuc
2022-09-05 22:29   ` Guenter Roeck
2022-09-05 14:28 ` [PATCH 3/3] hwmon: (tps23861) create unique debugfs directory per device Alexandru Gagniuc
2022-09-05 22:30   ` Guenter Roeck
2022-09-05 22:10 ` [PATCH 1/3] hwmon: (tps23861) fix byte order in resistance register Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox