ARM: OMAP2+: Fix onenand initialization to avoid filesystem corruption
Commite7b11dc7b7
("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:e7b11dc7b7
("ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption") Cc: stable@vger.kernel.org # v4.2+ 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>
This commit is contained in:
parent
e327b3f564
commit
3f315c5b85
|
@ -101,10 +101,8 @@ static void omap2_onenand_set_async_mode(void __iomem *onenand_base)
|
||||||
|
|
||||||
static void set_onenand_cfg(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) |
|
reg |= (latency << ONENAND_SYS_CFG1_BRL_SHIFT) |
|
||||||
ONENAND_SYS_CFG1_BL_16;
|
ONENAND_SYS_CFG1_BL_16;
|
||||||
if (onenand_flags & ONENAND_FLAG_SYNCREAD)
|
if (onenand_flags & ONENAND_FLAG_SYNCREAD)
|
||||||
|
@ -123,6 +121,7 @@ static void set_onenand_cfg(void __iomem *onenand_base)
|
||||||
reg |= ONENAND_SYS_CFG1_VHF;
|
reg |= ONENAND_SYS_CFG1_VHF;
|
||||||
else
|
else
|
||||||
reg &= ~ONENAND_SYS_CFG1_VHF;
|
reg &= ~ONENAND_SYS_CFG1_VHF;
|
||||||
|
|
||||||
writew(reg, onenand_base + ONENAND_REG_SYS_CFG1);
|
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);
|
omap2_onenand_calc_async_timings(&t);
|
||||||
|
|
||||||
ret = gpmc_cs_program_settings(gpmc_onenand_data->cs, &onenand_async);
|
ret = gpmc_cs_program_settings(gpmc_onenand_data->cs, &onenand_async);
|
||||||
|
|
Loading…
Reference in New Issue