| From d89667b14f9d13b684287f6189ca209af5feee43 Mon Sep 17 00:00:00 2001 |
| From: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| Date: Thu, 19 Nov 2015 16:56:47 +0100 |
| Subject: i2c: rcar: don't issue stop when HW does it automatically |
| |
| From: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| |
| commit d89667b14f9d13b684287f6189ca209af5feee43 upstream. |
| |
| The manual says (55.4.8.6) that HW does automatically send STOP after |
| NACK was received. My measuerments confirm that. |
| |
| Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| Signed-off-by: Wolfram Sang <wsa@the-dreams.de> |
| Signed-off-by: Fabrizio Castro <fabrizio.castro@bp.renesas.com> |
| Reviewed-by: Biju Das <biju.das@bp.renesas.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/i2c/busses/i2c-rcar.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/i2c/busses/i2c-rcar.c |
| +++ b/drivers/i2c/busses/i2c-rcar.c |
| @@ -455,8 +455,8 @@ static irqreturn_t rcar_i2c_irq(int irq, |
| |
| /* Nack */ |
| if (msr & MNR) { |
| - /* go to stop phase */ |
| - rcar_i2c_write(priv, ICMCR, RCAR_BUS_PHASE_STOP); |
| + /* HW automatically sends STOP after received NACK */ |
| + rcar_i2c_write(priv, ICMCR, RCAR_BUS_PHASE_DATA); |
| rcar_i2c_write(priv, ICMIER, RCAR_IRQ_STOP); |
| rcar_i2c_flags_set(priv, ID_NACK); |
| goto out; |