lkml.org 
[lkml]   [2016]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.2.y-ckt 196/273] ARM: OMAP2+: Fix onenand initialization to avoid filesystem corruption
    Date
    4.2.8-ckt5 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>

    commit 3f315c5b850fa7aff73f50de8e316b98f611a32b upstream.

    Commit e7b11dc7b77b ("ARM: OMAP2+: Fix onenand rate detection to avoid
    filesystem corruption") partially fixed onenand configuration when GPMC
    module is reset. Finish the job by also providing the correct values in
    ONENAND_REG_SYS_CFG1 register.

    Fixes: e7b11dc7b77b ("ARM: OMAP2+: Fix onenand rate detection to avoid
    filesystem corruption")
    Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    arch/arm/mach-omap2/gpmc-onenand.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/arch/arm/mach-omap2/gpmc-onenand.c b/arch/arm/mach-omap2/gpmc-onenand.c
    index 7b76ce0..8633c70 100644
    --- a/arch/arm/mach-omap2/gpmc-onenand.c
    +++ b/arch/arm/mach-omap2/gpmc-onenand.c
    @@ -101,10 +101,8 @@ static void omap2_onenand_set_async_mode(void __iomem *onenand_base)

    static void set_onenand_cfg(void __iomem *onenand_base)
    {
    - u32 reg;
    + u32 reg = ONENAND_SYS_CFG1_RDY | ONENAND_SYS_CFG1_INT;

    - reg = readw(onenand_base + ONENAND_REG_SYS_CFG1);
    - reg &= ~((0x7 << ONENAND_SYS_CFG1_BRL_SHIFT) | (0x7 << 9));
    reg |= (latency << ONENAND_SYS_CFG1_BRL_SHIFT) |
    ONENAND_SYS_CFG1_BL_16;
    if (onenand_flags & ONENAND_FLAG_SYNCREAD)
    @@ -123,6 +121,7 @@ static void set_onenand_cfg(void __iomem *onenand_base)
    reg |= ONENAND_SYS_CFG1_VHF;
    else
    reg &= ~ONENAND_SYS_CFG1_VHF;
    +
    writew(reg, onenand_base + ONENAND_REG_SYS_CFG1);
    }

    @@ -289,6 +288,7 @@ static int omap2_onenand_setup_async(void __iomem *onenand_base)
    }
    }

    + onenand_async.sync_write = true;
    omap2_onenand_calc_async_timings(&t);

    ret = gpmc_cs_program_settings(gpmc_onenand_data->cs, &onenand_async);
    --
    2.7.0
    \
     
     \ /
      Last update: 2016-03-08 00:41    [W:4.055 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site