diff mbox

[v7,04/15] i2c: octeon: Add flush writeq helper function

Message ID 1461594824-7215-5-git-send-email-jglauber@cavium.com
State Accepted
Headers show

Commit Message

Jan Glauber April 25, 2016, 2:33 p.m. UTC
From: Peter Swain <pswain@cavium.com>

Add helper function that reads back a value after writing to
make sure the write is finished and use it in octeon_i2c_write_int().

Signed-off-by: Peter Swain <pswain@cavium.com>
Signed-off-by: Jan Glauber <jglauber@cavium.com>
---
 drivers/i2c/busses/i2c-octeon.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Comments

Wolfram Sang April 25, 2016, 9:33 p.m. UTC | #1
On Mon, Apr 25, 2016 at 04:33:33PM +0200, Jan Glauber wrote:
> From: Peter Swain <pswain@cavium.com>
> 
> Add helper function that reads back a value after writing to
> make sure the write is finished and use it in octeon_i2c_write_int().
> 
> Signed-off-by: Peter Swain <pswain@cavium.com>
> Signed-off-by: Jan Glauber <jglauber@cavium.com>

Applied to for-next, thanks!
diff mbox

Patch

diff --git a/drivers/i2c/busses/i2c-octeon.c b/drivers/i2c/busses/i2c-octeon.c
index ad563cf..60a02b2 100644
--- a/drivers/i2c/busses/i2c-octeon.c
+++ b/drivers/i2c/busses/i2c-octeon.c
@@ -103,6 +103,12 @@  struct octeon_i2c {
 	struct device *dev;
 };
 
+static void octeon_i2c_writeq_flush(u64 val, void __iomem *addr)
+{
+	__raw_writeq(val, addr);
+	__raw_readq(addr);	/* wait for write to land */
+}
+
 /**
  * octeon_i2c_reg_write - write an I2C core register
  * @i2c: The struct octeon_i2c
@@ -173,8 +179,7 @@  static u64 octeon_i2c_read_int(struct octeon_i2c *i2c)
  */
 static void octeon_i2c_write_int(struct octeon_i2c *i2c, u64 data)
 {
-	__raw_writeq(data, i2c->twsi_base + TWSI_INT);
-	__raw_readq(i2c->twsi_base + TWSI_INT);
+	octeon_i2c_writeq_flush(data, i2c->twsi_base + TWSI_INT);
 }
 
 /**