mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
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: Peter Swain <pswain@cavium.com> Signed-off-by: Jan Glauber <jglauber@cavium.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
c981e34eee
commit
30c24b2514
1 changed files with 7 additions and 2 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue