From 03d6cd972efb7289ef208ba4bad72d1e7acccf1d Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Thu, 25 Aug 2016 15:20:01 +0200 Subject: [PATCH] i2c: mvtwsi: Fix order of address bytes (high to low) Patch f8a10ed1 [i2c: mvtwsi: Make address length variable] accidentally inverted the sequence of address bytes sent to the I2C device. This patch corrects this by sending the highest byte first and the lowest byte last again. Tested on theadorable Armada-XP board. Signed-off-by: Stefan Roese Cc: Mario Six Cc: Heiko Schocher --- drivers/i2c/mvtwsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/mvtwsi.c b/drivers/i2c/mvtwsi.c index ab7481a0d4..3765fed50d 100644 --- a/drivers/i2c/mvtwsi.c +++ b/drivers/i2c/mvtwsi.c @@ -595,7 +595,7 @@ static int __twsi_i2c_read(struct mvtwsi_registers *twsi, uchar chip, status = i2c_begin(twsi, expected_start, (chip << 1), tick); /* Send address bytes */ while ((status == 0) && alen--) - status = twsi_send(twsi, *(addr++), + status = twsi_send(twsi, addr[alen], MVTWSI_STATUS_DATA_W_ACK, tick); /* Send repeated STARTs after the initial START */ expected_start = MVTWSI_STATUS_REPEATED_START; @@ -642,7 +642,7 @@ static int __twsi_i2c_write(struct mvtwsi_registers *twsi, uchar chip, status = i2c_begin(twsi, MVTWSI_STATUS_START, (chip << 1), tick); /* Send address bytes */ while ((status == 0) && (alen-- > 0)) - status = twsi_send(twsi, *(addr++), MVTWSI_STATUS_DATA_W_ACK, + status = twsi_send(twsi, addr[alen], MVTWSI_STATUS_DATA_W_ACK, tick); /* Send data bytes */ while ((status == 0) && (length-- > 0)) -- 2.39.5