Patchwork [3.5.y.z,extended,stable] Patch "hwmon: (adt7470) Fix incorrect return code check" has been added to staging queue

mail settings
Submitter Luis Henriques
Date Aug. 13, 2013, 1:59 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/266809/
State New
Headers show


Luis Henriques - Aug. 13, 2013, 1:59 p.m.
This is a note to let you know that I have just added a patch titled

    hwmon: (adt7470) Fix incorrect return code check

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see



From 97bed7faf350dd32bea1234dd66a25889f346989 Mon Sep 17 00:00:00 2001
From: Curt Brune <>
Date: Thu, 8 Aug 2013 12:11:03 -0700
Subject: [PATCH] hwmon: (adt7470) Fix incorrect return code check

commit 93d783bcca69bfacc8dc739d8a050498402587b5 upstream.

In adt7470_write_word_data(), which writes two bytes using
i2c_smbus_write_byte_data(), the return codes are incorrectly AND-ed
together when they should be OR-ed together.

The return code of i2c_smbus_write_byte_data() is zero for success.

The upshot is only the first byte was ever written to the hardware.
The 2nd byte was never written out.

I noticed that trying to set the fan speed limits was not working
correctly on my system.  Setting the fan speed limits is the only
code that uses adt7470_write_word_data().  After making the change
the limit settings work and the alarms work also.

Signed-off-by: Curt Brune <>
Signed-off-by: Guenter Roeck <>
Signed-off-by: Luis Henriques <>
 drivers/hwmon/adt7470.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c
index 54ec890..034085d 100644
--- a/drivers/hwmon/adt7470.c
+++ b/drivers/hwmon/adt7470.c
@@ -215,7 +215,7 @@  static inline int adt7470_write_word_data(struct i2c_client *client, u8 reg,
 					  u16 value)
 	return i2c_smbus_write_byte_data(client, reg, value & 0xFF)
-	       && i2c_smbus_write_byte_data(client, reg + 1, value >> 8);
+	       || i2c_smbus_write_byte_data(client, reg + 1, value >> 8);

 static void adt7470_init_client(struct i2c_client *client)