diff mbox series

hwmon: (max6697) Document discrepancy in overtemperature status bit values

Message ID 20240727202007.1656841-1-linux@roeck-us.net (mailing list archive)
State Accepted
Headers show
Series hwmon: (max6697) Document discrepancy in overtemperature status bit values | expand

Commit Message

Guenter Roeck July 27, 2024, 8:20 p.m. UTC
In the MAX6581 datasheet Revision 0 to 3, the local channel overtemperature
status is reported in bit 6 of register 0x45, and the overtemperature
status for remote channel 7 is reported in bit 7. In Revision 4 and later,
the local channel overtemperature status is reported in bit 7, and the
remote channel 7 overtemperature status is reported in bit 6. A real
chip was found to match the functionality documented in Revision 4 and
later.

The code was fixed with commit 1ea3fd1eb986 ("hwmon: (max6697) Fix swapped
temp{1,8} critical alarms"). At that time it looked like this was an
original bug. It only turned out later that the problem was the result of
incorrect information in the chip datasheet.

Document the discrepancy to avoid confusion caused by old versions of the
datasheet.

Cc: Tzung-Bi Shih <tzungbi@kernel.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
 drivers/hwmon/max6697.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Tzung-Bi Shih July 28, 2024, 12:17 p.m. UTC | #1
On Sat, Jul 27, 2024 at 01:20:07PM -0700, Guenter Roeck wrote:
> In the MAX6581 datasheet Revision 0 to 3, the local channel overtemperature
> status is reported in bit 6 of register 0x45, and the overtemperature
> status for remote channel 7 is reported in bit 7. In Revision 4 and later,
> the local channel overtemperature status is reported in bit 7, and the
> remote channel 7 overtemperature status is reported in bit 6. A real
> chip was found to match the functionality documented in Revision 4 and
> later.
> 
> The code was fixed with commit 1ea3fd1eb986 ("hwmon: (max6697) Fix swapped
> temp{1,8} critical alarms"). At that time it looked like this was an
> original bug. It only turned out later that the problem was the result of
> incorrect information in the chip datasheet.
> 
> Document the discrepancy to avoid confusion caused by old versions of the
> datasheet.
> 
> Cc: Tzung-Bi Shih <tzungbi@kernel.org>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>

Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
diff mbox series

Patch

diff --git a/drivers/hwmon/max6697.c b/drivers/hwmon/max6697.c
index 0c34c0c81232..0735a1d2c20f 100644
--- a/drivers/hwmon/max6697.c
+++ b/drivers/hwmon/max6697.c
@@ -248,6 +248,16 @@  static int max6697_read(struct device *dev, enum hwmon_sensor_types type,
 		ret = regmap_read(regmap, MAX6697_REG_STAT_CRIT, &regval);
 		if (ret)
 			return ret;
+		/*
+		 * In the MAX6581 datasheet revision 0 to 3, the local channel
+		 * overtemperature status is reported in bit 6 of register 0x45,
+		 * and the overtemperature status for remote channel 7 is
+		 * reported in bit 7. In Revision 4 and later, the local channel
+		 * overtemperature status is reported in bit 7, and the remote
+		 * channel 7 overtemperature status is reported in bit 6. A real
+		 * chip was found to match the functionality documented in
+		 * Revision 4 and later.
+		 */
 		*val = !!(regval & BIT(channel ? channel - 1 : 7));
 		break;
 	case hwmon_temp_max_alarm: