mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
HID: cp2112: fix byte order in SMBUS operations
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>
This commit is contained in:
parent
6d00d153f0
commit
29e2d6d1f6
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user