HID: cp2112: fix byte order in SMBUS operations
authorEllen Wang <ellen@cumulusnetworks.com>
Fri, 10 Jul 2015 05:04:31 +0000 (22:04 -0700)
committerJiri Kosina <jkosina@suse.com>
Tue, 14 Jul 2015 20:42:42 +0000 (22:42 +0200)
Change all occurrences of be16 to le16 in cp2112_xfer(),
because SMBUS words are little endian, not big endian.

Signed-off-by: Ellen Wang <ellen@cumulusnetworks.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-cp2112.c

index a84d3700e740e430fd3407d3e1f37c27bb166945..7afc3fcc122c476a42e20f1e85e1ed409c93a734 100644 (file)
@@ -589,7 +589,7 @@ static int cp2112_xfer(struct i2c_adapter *adap, u16 addr,
        struct cp2112_device *dev = (struct cp2112_device *)adap->algo_data;
        struct hid_device *hdev = dev->hdev;
        u8 buf[64];
-       __be16 word;
+       __le16 word;
        ssize_t count;
        size_t read_length = 0;
        unsigned int retries;
@@ -621,7 +621,7 @@ static int cp2112_xfer(struct i2c_adapter *adap, u16 addr,
                break;
        case I2C_SMBUS_WORD_DATA:
                read_length = 2;
-               word = cpu_to_be16(data->word);
+               word = cpu_to_le16(data->word);
 
                if (I2C_SMBUS_READ == read_write)
                        count = cp2112_write_read_req(buf, addr, read_length,
@@ -634,7 +634,7 @@ static int cp2112_xfer(struct i2c_adapter *adap, u16 addr,
                size = I2C_SMBUS_WORD_DATA;
                read_write = I2C_SMBUS_READ;
                read_length = 2;
-               word = cpu_to_be16(data->word);
+               word = cpu_to_le16(data->word);
 
                count = cp2112_write_read_req(buf, addr, read_length, command,
                                              (u8 *)&word, 2);
@@ -727,7 +727,7 @@ static int cp2112_xfer(struct i2c_adapter *adap, u16 addr,
                data->byte = buf[0];
                break;
        case I2C_SMBUS_WORD_DATA:
-               data->word = be16_to_cpup((__be16 *)buf);
+               data->word = le16_to_cpup((__le16 *)buf);
                break;
        case I2C_SMBUS_BLOCK_DATA:
                if (read_length > I2C_SMBUS_BLOCK_MAX) {