diff mbox

[U-Boot,30/51] i2c: ihs_i2c: Factor out send_buffer method

Message ID 20170714125537.14895-31-mario.six@gdsys.cc
State Rejected, archived
Delegated to: Mario Six
Headers show

Commit Message

Mario Six July 14, 2017, 12:55 p.m. UTC
Simplify the driver logic by extracting a common send_buffer method.

Signed-off-by: Mario Six <mario.six@gdsys.cc>
---

 drivers/i2c/ihs_i2c.c | 50 ++++++++++++++++++++++++++------------------------
 1 file changed, 26 insertions(+), 24 deletions(-)

Comments

Simon Glass July 19, 2017, 9:05 a.m. UTC | #1
On 14 July 2017 at 05:55, Mario Six <mario.six@gdsys.cc> wrote:
> Simplify the driver logic by extracting a common send_buffer method.
>
> Signed-off-by: Mario Six <mario.six@gdsys.cc>
> ---
>
>  drivers/i2c/ihs_i2c.c | 50 ++++++++++++++++++++++++++------------------------
>  1 file changed, 26 insertions(+), 24 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
diff mbox

Patch

diff --git a/drivers/i2c/ihs_i2c.c b/drivers/i2c/ihs_i2c.c
index 6aeda52cfa..aa15608065 100644
--- a/drivers/i2c/ihs_i2c.c
+++ b/drivers/i2c/ihs_i2c.c
@@ -198,32 +198,48 @@  static int ihs_i2c_transfer(uchar chip, uchar *buffer, int len, bool read,
 }
 
 #ifdef CONFIG_DM_I2C
-static int ihs_i2c_address(struct udevice *dev, uchar chip, u8 *addr, int alen, bool hold_bus)
+static int ihs_i2c_send_buffer(struct udevice *dev, uchar chip, u8 *data, int len, bool hold_bus, int read)
 #else
-static int ihs_i2c_address(uchar chip, u8 *addr, int alen, bool hold_bus)
+static int ihs_i2c_send_buffer(uchar chip, u8 *data, int len, bool hold_bus,
+			       int read)
 #endif
 {
-	while (alen) {
-		int transfer = min(alen, 2);
-		bool is_last = alen <= transfer;
+	while (len) {
+		int transfer = min(len, 2);
+		bool is_last = len <= transfer;
 
 #ifdef CONFIG_DM_I2C
-		if (ihs_i2c_transfer(dev, chip, addr, transfer, I2COP_WRITE,
+		if (ihs_i2c_transfer(dev, chip, data, transfer, read,
 				     hold_bus ? false : is_last))
 			return 1;
 #else
-		if (ihs_i2c_transfer(chip, addr, transfer, I2COP_WRITE,
+		if (ihs_i2c_transfer(chip, data, transfer, read,
 				     hold_bus ? false : is_last))
 			return 1;
 #endif
 
-		alen -= transfer;
+		data += transfer;
+		len -= transfer;
 	}
 
 	return 0;
 }
 
 #ifdef CONFIG_DM_I2C
+static int ihs_i2c_address(struct udevice *dev, uchar chip, u8 *addr, int alen,
+			   bool hold_bus)
+#else
+static int ihs_i2c_address(uchar chip, u8 *addr, int alen, bool hold_bus)
+#endif
+{
+#ifdef CONFIG_DM_I2C
+	return ihs_i2c_send_buffer(dev, chip, addr, alen, hold_bus, I2COP_WRITE);
+#else
+	return ihs_i2c_send_buffer(chip, addr, alen, hold_bus, I2COP_WRITE);
+#endif
+}
+
+#ifdef CONFIG_DM_I2C
 static int ihs_i2c_access(struct udevice *dev, uchar chip, u8 *addr,
 			  int alen, uchar *buffer, int len, int read)
 #else
@@ -240,25 +256,11 @@  static int ihs_i2c_access(struct i2c_adapter *adap, uchar chip, u8 *addr,
 		return 1;
 #endif
 
-	while (len) {
-		int transfer = min(len, 2);
-		bool is_last = len <= transfer;
-
 #ifdef CONFIG_DM_I2C
-		if (ihs_i2c_transfer(dev, chip, buffer, transfer, read,
-				     is_last))
-			return 2;
+	return ihs_i2c_send_buffer(dev, chip, buffer, len, false, read);
 #else
-		if (ihs_i2c_transfer(chip, buffer, transfer, read,
-				     is_last))
-			return 2;
+	return ihs_i2c_send_buffer(chip, buffer, len, false, read);
 #endif
-
-		buffer += transfer;
-		len -= transfer;
-	}
-
-	return 0;
 }
 
 #ifdef CONFIG_DM_I2C