From 23fa8d125ca1be9c03ac7d2f42530a57d6ca28f2 Mon Sep 17 00:00:00 2001 From: Valentine Barshak Date: Tue, 3 Mar 2015 18:30:16 +0300 Subject: [PATCH] i2c: busses: rcar: Workaround arbitration loss error Sometimes I2C master enable/disable at every transmission causes arbitration loss errors making the bus unusable. Workaround the issue by enabling I2C master in the rcar_i2c_init() function. Signed-off-by: Valentine Barshak --- drivers/i2c/busses/i2c-rcar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c index 0e863f3..4334006 100644 --- a/drivers/i2c/busses/i2c-rcar.c +++ b/drivers/i2c/busses/i2c-rcar.c @@ -161,7 +161,7 @@ static void rcar_i2c_init(struct rcar_i2c_priv *priv) /* reset master mode */ rcar_i2c_write(priv, ICMIER, 0); - rcar_i2c_write(priv, ICMCR, 0); + rcar_i2c_write(priv, ICMCR, MDBS | MIE); rcar_i2c_write(priv, ICMSR, 0); rcar_i2c_write(priv, ICMAR, 0); } -- 1.9.3