gpio: pcf857x: Use le16_to_cpu() and cpu_to_le16() in IO accessors

16-bit expander data is an __le16, use le16_to_cpu() to read it.
In the similar way use cpu_to_le16() to write __le16 value.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Fixes: and Cc: stable?
Link: https://patch.msgid.link/20260715163944.1300616-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
This commit is contained in:
Andy Shevchenko
2026-07-15 18:39:44 +02:00
committed by Bartosz Golaszewski
parent e8a40b3566
commit fbd35c8cc6

View File

@@ -18,6 +18,8 @@
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <asm/byteorder.h>
static const struct i2c_device_id pcf857x_id[] = {
{ .name = "pcf8574", .driver_data = 8 },
{ .name = "pcf8574a", .driver_data = 8 },
@@ -96,22 +98,23 @@ static int i2c_read_le8(struct i2c_client *client)
static int i2c_write_le16(struct i2c_client *client, unsigned int word)
{
u8 buf[2] = { word & 0xff, word >> 8, };
__le16 buf = cpu_to_le16(word);
int status;
status = i2c_master_send(client, buf, 2);
status = i2c_master_send(client, (char *)&buf, sizeof(buf));
return (status < 0) ? status : 0;
}
static int i2c_read_le16(struct i2c_client *client)
{
u8 buf[2];
__le16 buf;
int status;
status = i2c_master_recv(client, buf, 2);
status = i2c_master_recv(client, (char *)&buf, sizeof(buf));
if (status < 0)
return status;
return (buf[1] << 8) | buf[0];
return le16_to_cpu(buf);
}
/*-------------------------------------------------------------------------*/