diff mbox series

[U-Boot] i2c: rcar_iic: Read ICSR only once

Message ID 20190307024108.31817-1-marek.vasut+renesas@gmail.com
State Accepted
Commit eb54682e91a0a3f9ca8629d67c5195ae54cfb1e9
Delegated to: Heiko Schocher
Headers show
Series [U-Boot] i2c: rcar_iic: Read ICSR only once | expand

Commit Message

Marek Vasut March 7, 2019, 2:41 a.m. UTC
Read ICSR only once to avoid missing interrupts. This happens on R8A7791
Porter during reset, when reading the PMIC register 0x13, which may fail
sometimes because of the missed DTE interrupt.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
---
 drivers/i2c/rcar_iic.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Heiko Schocher March 7, 2019, 5:19 a.m. UTC | #1
Hello Marek,

Am 07.03.2019 um 03:41 schrieb Marek Vasut:
> Read ICSR only once to avoid missing interrupts. This happens on R8A7791
> Porter during reset, when reading the PMIC register 0x13, which may fail
> sometimes because of the missed DTE interrupt.
> 
> Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
> ---
>   drivers/i2c/rcar_iic.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)

Reviewed-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
diff mbox series

Patch

diff --git a/drivers/i2c/rcar_iic.c b/drivers/i2c/rcar_iic.c
index e91fc86c1a..9d45f547d1 100644
--- a/drivers/i2c/rcar_iic.c
+++ b/drivers/i2c/rcar_iic.c
@@ -58,12 +58,14 @@  static void sh_irq_dte(struct udevice *dev)
 static int sh_irq_dte_with_tack(struct udevice *dev)
 {
 	struct rcar_iic_priv *priv = dev_get_priv(dev);
+	u8 icsr;
 	int i;
 
 	for (i = 0; i < IRQ_WAIT; i++) {
-		if (RCAR_IC_DTE & readb(priv->base + RCAR_IIC_ICSR))
+		icsr = readb(priv->base + RCAR_IIC_ICSR);
+		if (RCAR_IC_DTE & icsr)
 			break;
-		if (RCAR_IC_TACK & readb(priv->base + RCAR_IIC_ICSR))
+		if (RCAR_IC_TACK & icsr)
 			return -ETIMEDOUT;
 		udelay(10);
 	}