]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/i2c/i2c-core-acpi.c
i2c: core: ACPI: Properly set status byte to 0 for multi-byte writes
[linux.git] / drivers / i2c / i2c-core-acpi.c
index 7c3b4740b94b644509ae3658fa2eda4885086bba..b8f303dea30588b3ee779fe0d4df0c828996a2a3 100644 (file)
@@ -482,11 +482,16 @@ static int acpi_gsb_i2c_write_bytes(struct i2c_client *client,
        msgs[0].buf = buffer;
 
        ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
-       if (ret < 0)
-               dev_err(&client->adapter->dev, "i2c write failed\n");
 
        kfree(buffer);
-       return ret;
+
+       if (ret < 0) {
+               dev_err(&client->adapter->dev, "i2c write failed: %d\n", ret);
+               return ret;
+       }
+
+       /* 1 transfer must have completed successfully */
+       return (ret == 1) ? 0 : -EIO;
 }
 
 static acpi_status