lkml.org 
[lkml]   [2014]   [Feb]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 109/140] i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs
    Date
    3.13-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Gregory CLEMENT <gregory.clement@free-electrons.com>

    commit 6cf70ae928bae17077efc0d528dec49bc380438b upstream.

    The first variants of Armada XP SoCs (A0 stepping) have issues related
    to the i2c controller which prevent to use the offload mechanism and
    lead to a kernel hang during boot.

    The commit introduces a new the compatible string
    marvell,mv78230-a0-i2c for the i2c controller. When this compatible
    string is used the driver disables the offload mechanism and the
    kernel no more hangs on these SoCs.

    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Reported-by: Andrew Lunn <andrew@lunn.ch>
    Acked-by: Wolfram Sang <wsa@the-dreams.de>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 930ab3d403ae (i2c: mv64xxx: Add I2C Transaction Generator support)
    Signed-off-by: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/i2c/busses/i2c-mv64xxx.c | 5 +++++
    1 file changed, 5 insertions(+)

    --- a/drivers/i2c/busses/i2c-mv64xxx.c
    +++ b/drivers/i2c/busses/i2c-mv64xxx.c
    @@ -692,6 +692,7 @@ static const struct of_device_id mv64xxx
    { .compatible = "allwinner,sun4i-i2c", .data = &mv64xxx_i2c_regs_sun4i},
    { .compatible = "marvell,mv64xxx-i2c", .data = &mv64xxx_i2c_regs_mv64xxx},
    { .compatible = "marvell,mv78230-i2c", .data = &mv64xxx_i2c_regs_mv64xxx},
    + { .compatible = "marvell,mv78230-a0-i2c", .data = &mv64xxx_i2c_regs_mv64xxx},
    {}
    };
    MODULE_DEVICE_TABLE(of, mv64xxx_i2c_of_match_table);
    @@ -783,6 +784,10 @@ mv64xxx_of_config(struct mv64xxx_i2c_dat
    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;
    + }
    out:
    return rc;
    #endif



    \
     
     \ /
      Last update: 2014-02-04 23:21    [W:4.127 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site