• Tony Lindgren's avatar
    ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption · e7b11dc7
    Tony Lindgren authored
    Commit 63aa945b ("memory: omap-gpmc: Add Kconfig option for debug")
    unified the GPMC debug for the SoCs with GPMC. The commit also left out
    the option for HWMOD_INIT_NO_RESET as we now require proper timings for
    GPMC to be able to remap GPMC devices out of address 0.
    
    Unfortunately on Nokia N900, onenand now only partially works with the
    device tree provided timings. It works enough to get detected but the
    clock rate supported by the onenand chip gets misdetected. This in turn
    causes the GPMC timings to be miscalculated and this leads into file
    system corruption on N900.
    
    Looks like onenand needs CS_CONFIG1 bit 27 WRITETYPE set for for sync
    write. This is needed also for async timings when we write to onenand
    with omap2_onenand_set_async_mode(). Without sync write bit set, the
    async read for the onenand ONENAND_REG_VERSION_ID will return 0xfff.
    
    Let's exit with an error if onenand rate is not detected. And let's
    remove the extra call to omap2_onenand_set_async_mode() as we only need
    to do this once at the end of omap2_onenand_setup_async().
    
    Fixes: 63aa945b ("memory: omap-gpmc: Add Kconfig option for debug")
    Cc: stable@vger.kernel.org # v4.2+
    Reported-by: default avatarIvaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Tested-by: default avatarIvaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    e7b11dc7
gpmc-onenand.c 9.86 KB