]> git.itanic.dy.fi Git - linux-stable/commitdiff
i2c: mv64xxx: Apply errata delay only in standard mode
authorGregory CLEMENT <gregory.clement@bootlin.com>
Wed, 14 Mar 2018 17:03:40 +0000 (18:03 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:52:31 +0000 (07:52 +0200)
[ Upstream commit 31184d8c6ea49ea0676d100cdd7e1f102ad025b5 ]

The errata FE-8471889 description has been updated. There is still a
timing violation for repeated start. But the errata now states that it
was only the case for the Standard mode (100 kHz), in Fast mode (400 kHz)
there is no issue.

This patch limit the errata fix to the Standard mode.

It has been tesed successfully on the clearfog (Aramda 388 based board).

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/i2c/busses/i2c-mv64xxx.c

index a832c45276a42008a0b1a9ebeac00ffb8144a519..b0fb97823d6a4006068d6105ecc7d83329575255 100644 (file)
@@ -844,12 +844,16 @@ mv64xxx_of_config(struct mv64xxx_i2c_data *drv_data,
         */
        if (of_device_is_compatible(np, "marvell,mv78230-i2c")) {
                drv_data->offload_enabled = true;
-               drv_data->errata_delay = true;
+               /* The delay is only needed in standard mode (100kHz) */
+               if (bus_freq <= 100000)
+                       drv_data->errata_delay = true;
        }
 
        if (of_device_is_compatible(np, "marvell,mv78230-a0-i2c")) {
                drv_data->offload_enabled = false;
-               drv_data->errata_delay = true;
+               /* The delay is only needed in standard mode (100kHz) */
+               if (bus_freq <= 100000)
+                       drv_data->errata_delay = true;
        }
 
        if (of_device_is_compatible(np, "allwinner,sun6i-a31-i2c"))