From 74e6795f6ac327ab34f3aad54a8de4bbf0ec0096 Mon Sep 17 00:00:00 2001 From: Daniel Leung Date: Sun, 3 Nov 2019 19:21:05 -0800 Subject: [PATCH] drivers: gpio_pca95xx: use I2C burst write Use I2C burst write to write 2 bytes to each pair of registers instead of 2 separate transactions of writing 1 byte. Signed-off-by: Daniel Leung --- drivers/gpio/gpio_pca95xx.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpio/gpio_pca95xx.c b/drivers/gpio/gpio_pca95xx.c index 38aec647941..1ab895f1ae6 100644 --- a/drivers/gpio/gpio_pca95xx.c +++ b/drivers/gpio/gpio_pca95xx.c @@ -113,16 +113,12 @@ static int write_port_regs(struct device *dev, u8_t reg, "0x%X", i2c_addr, reg, buf->byte[0], (reg + 1), buf->byte[1]); - ret = i2c_reg_write_byte(i2c_master, i2c_addr, reg, buf->byte[0]); + ret = i2c_burst_write(i2c_master, i2c_addr, reg, buf->byte, 2); if (ret) { LOG_ERR("PCA95XX[0x%X]: error writing to register 0x%X " "(%d)", i2c_addr, reg, ret); } - ret = i2c_reg_write_byte(i2c_master, i2c_addr, reg+1, buf->byte[1]); - if (ret) { - LOG_ERR("PCA95XX[0x%X]: error writing to register 0x%X " - "(%d)", i2c_addr, reg, ret); - } + return ret; }