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

Commit 2aefb1bd authored by Sifan Naeem's avatar Sifan Naeem Committed by Wolfram Sang
Browse files

i2c: img-scb: do dummy writes before fifo access



Move scb_wr_rd_fence to before reading from fifo and writing to
fifo to make sure the the first read/write is done after the required
number of cycles.

Fixes: commit 27bce457 ("i2c: img-scb: Add Imagination Technologies I2C SCB driver")
Signed-off-by: default avatarSifan Naeem <sifan.naeem@imgtec.com>
Acked-by: default avatarJames Hogan <james.hogan@imgtec.com>
Reviewed-by: default avatarJames Hartley <james.hartley@imgtec.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 0e59378b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -534,6 +534,7 @@ static void img_i2c_read_fifo(struct img_i2c *i2c)
		u32 fifo_status;
		u8 data;

		img_i2c_wr_rd_fence(i2c);
		fifo_status = img_i2c_readl(i2c, SCB_FIFO_STATUS_REG);
		if (fifo_status & FIFO_READ_EMPTY)
			break;
@@ -542,7 +543,6 @@ static void img_i2c_read_fifo(struct img_i2c *i2c)
		*i2c->msg.buf = data;

		img_i2c_writel(i2c, SCB_READ_FIFO_REG, 0xff);
		img_i2c_wr_rd_fence(i2c);
		i2c->msg.len--;
		i2c->msg.buf++;
	}
@@ -554,12 +554,12 @@ static void img_i2c_write_fifo(struct img_i2c *i2c)
	while (i2c->msg.len) {
		u32 fifo_status;

		img_i2c_wr_rd_fence(i2c);
		fifo_status = img_i2c_readl(i2c, SCB_FIFO_STATUS_REG);
		if (fifo_status & FIFO_WRITE_FULL)
			break;

		img_i2c_writel(i2c, SCB_WRITE_DATA_REG, *i2c->msg.buf);
		img_i2c_wr_rd_fence(i2c);
		i2c->msg.len--;
		i2c->msg.buf++;
	}