From 4fcc084eeb8cd7db77263672c6a43da629a4ed48 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
Date: Mon, 26 Oct 2020 22:36:15 +0100
Subject: [PATCH] power: twl4030: Add twl4030_i2c_read() function
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Function twl4030_i2c_read() is like twl4030_i2c_read_u8() but instead of
single value it rather returns array of values.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
---
 drivers/power/twl4030.c |  7 +++----
 include/twl4030.h       | 12 +++++++++---
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/power/twl4030.c b/drivers/power/twl4030.c
index b0d5cba2c4..f48af84e17 100644
--- a/drivers/power/twl4030.c
+++ b/drivers/power/twl4030.c
@@ -201,7 +201,7 @@ int twl4030_i2c_write_u8(u8 chip_no, u8 reg, u8 val)
 	return 0;
 }
 
-int twl4030_i2c_read_u8(u8 chip_no, u8 reg, u8 *valp)
+int twl4030_i2c_read(u8 chip_no, u8 reg, u8 *valp, int len)
 {
 	struct udevice *dev;
 	int ret;
@@ -211,12 +211,11 @@ int twl4030_i2c_read_u8(u8 chip_no, u8 reg, u8 *valp)
 		pr_err("unable to get I2C bus. ret %d\n", ret);
 		return ret;
 	}
-	ret = dm_i2c_reg_read(dev, reg);
-	if (ret < 0) {
+	ret = dm_i2c_read(dev, reg, valp, len);
+	if (ret) {
 		pr_err("reading from twl4030 failed. ret %d\n", ret);
 		return ret;
 	}
-	*valp = (u8)ret;
 	return 0;
 }
 #endif
diff --git a/include/twl4030.h b/include/twl4030.h
index c27ad615ee..ef05193996 100644
--- a/include/twl4030.h
+++ b/include/twl4030.h
@@ -654,14 +654,20 @@ static inline int twl4030_i2c_write_u8(u8 chip_no, u8 reg, u8 val)
 	return i2c_write(chip_no, reg, 1, &val, 1);
 }
 
-static inline int twl4030_i2c_read_u8(u8 chip_no, u8 reg, u8 *val)
+static inline int twl4030_i2c_read(u8 chip_no, u8 reg, u8 *val, int len)
 {
-	return i2c_read(chip_no, reg, 1, val, 1);
+	return i2c_read(chip_no, reg, 1, val, len);
 }
 #else
 int twl4030_i2c_write_u8(u8 chip_no, u8 reg, u8 val);
-int twl4030_i2c_read_u8(u8 chip_no, u8 reg, u8 *val);
+int twl4030_i2c_read(u8 chip_no, u8 reg, u8 *val, int len);
 #endif
+
+static inline int twl4030_i2c_read_u8(u8 chip_no, u8 reg, u8 *val)
+{
+	return twl4030_i2c_read(chip_no, reg, val, 1);
+}
+
 /*
  * Power
  */
-- 
2.39.5