Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30c24b25 authored by Peter Swain's avatar Peter Swain Committed by Wolfram Sang
Browse files

i2c: octeon: Add flush writeq helper function



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: default avatarPeter Swain <pswain@cavium.com>
Signed-off-by: default avatarJan Glauber <jglauber@cavium.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent c981e34e
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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
@@ -172,8 +178,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);
}

/**