linux-stable/arch/arm/mach-omap2
Tony Lindgren e7b11dc7b7 ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption
Commit 63aa945b10 ("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: 63aa945b10 ("memory: omap-gpmc: Add Kconfig option for debug")
Cc: stable@vger.kernel.org # v4.2+
Reported-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
Tested-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>
2016-01-06 09:21:09 -08:00
..
include/mach ARM: omap2: restore OMAP4 barrier behaviour 2015-07-25 15:28:16 +01:00
am33xx-restart.c
am33xx.h
board-flash.c
board-flash.h
board-generic.c ARM: SoC cleanups for v4.4 2015-11-10 14:48:36 -08:00
board-ldp.c arm: omap2: timer: rename omap_sync32k_timer_init() 2015-10-16 11:06:23 -05:00
board-n8x0.c
board-rx51-peripherals.c
board-rx51-video.c
board-rx51.c arm: omap2: timer: rename omap_sync32k_timer_init() 2015-10-16 11:06:23 -05:00
board-rx51.h
clkt2xxx_dpll.c
clkt2xxx_dpllcore.c
clkt2xxx_virt_prcm_set.c
clock.c Merge branch 'cleanup-clk-h-includes' into clk-next 2015-07-28 11:59:09 -07:00
clock.h
clock2xxx.h
clock3xxx.h
clockdomain.c
clockdomain.h
clockdomains2xxx_3xxx_data.c
clockdomains3xxx_data.c
clockdomains7xx_data.c
clockdomains33xx_data.c
clockdomains43xx_data.c
clockdomains44xx_data.c
clockdomains54xx_data.c
clockdomains81xx_data.c
clockdomains2420_data.c
clockdomains2430_data.c
cm-regbits-7xx.h
cm-regbits-24xx.h
cm-regbits-33xx.h
cm-regbits-34xx.h
cm-regbits-44xx.h
cm-regbits-54xx.h
cm.h
cm1_7xx.h
cm1_44xx.h
cm1_54xx.h
cm2_7xx.h
cm2_44xx.h
cm2_54xx.h
cm2xxx.c
cm2xxx.h
cm2xxx_3xxx.h
cm3xxx.c
cm3xxx.h
cm33xx.c
cm33xx.h
cm44xx.h
cm81xx.h
cm_common.c
cminst44xx.c
common-board-devices.c
common-board-devices.h
common.c Revert "ARM: OMAP4: remove dead kconfig option OMAP4_ERRATA_I688" 2015-07-25 15:28:14 +01:00
common.h arm: omap2: timer: rename omap_sync32k_timer_init() 2015-10-16 11:06:23 -05:00
control.c
control.h
cpuidle34xx.c
cpuidle44xx.c
ctrl_module_wkup_44xx.h
devices.c ARM: OMAP2+: Remove legacy OMAP3 ISP instantiation 2015-10-12 10:04:39 -07:00
display.c
display.h
dma.c
drm.c
dss-common.c
dss-common.h
fb.c
gpio.c
gpmc-nand.c
gpmc-onenand.c ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption 2016-01-06 09:21:09 -08:00
gpmc-smsc911x.c
gpmc-smsc911x.h
gpmc.h
hdq1w.c
hdq1w.h
hsmmc.c
hsmmc.h
i2c.c
i2c.h
id.c ARM: OMAP: Change all cpu_is_* occurences to soc_is_* for id.c 2015-10-16 10:27:03 -07:00
id.h
io.c ARM: OMAP2+: AM43XX: Enable autoidle for clks in am43xx_init_late 2015-09-16 17:01:39 -07:00
iomap.h
Kconfig ARM: OMAP2+: AM43xx: select ARM TWD timer 2015-12-17 10:54:13 -08:00
l3_2xxx.h
l3_3xxx.h
l4_2xxx.h
l4_3xxx.h
Makefile ARM: OMAP3: clock: remove un-used core dpll re-program code 2015-10-14 12:35:27 -07:00
Makefile.boot
mcbsp.c
mmc.h
msdi.c
mux.c
mux.h
mux34xx.c
mux34xx.h
omap-headsmp.S
omap-hotplug.c ARM: Remove __ref on hotplug cpu die path 2015-10-22 09:55:03 -07:00
omap-iommu.c
omap-mpuss-lowpower.c
omap-pm-noop.c
omap-pm.h
omap-secure.c
omap-secure.h ARM: omap2: restore OMAP4 barrier behaviour 2015-07-25 15:28:16 +01:00
omap-smc.S
omap-smp.c ARM: OMAP4+: SMP: use lockless clkdm/pwrdm api in omap4_boot_secondary 2015-11-25 11:03:20 -08:00
omap-wakeupgen.c ARM: SoC cleanups for v4.4 2015-11-10 14:48:36 -08:00
omap-wakeupgen.h
omap2-restart.c
omap3-restart.c
omap4-common.c ARM: omap2: restore OMAP4 barrier behaviour 2015-07-25 15:28:16 +01:00
omap4-restart.c
omap4-sar-layout.h
omap24xx.h
omap34xx.h
omap44xx.h
omap54xx.h
omap_device.c ARM: OMAP2+: omap-device: fix race deferred probe of omap_hsmmc vs omap_device_late_init 2015-09-01 13:59:24 -07:00
omap_device.h
omap_hwmod.c ARM: OMAP2+: hwmod: Add hwmod flag for HWMOD_OPT_CLKS_NEEDED 2015-11-12 09:57:44 -08:00
omap_hwmod.h ARM: OMAP2+: hwmod: Add hwmod flag for HWMOD_OPT_CLKS_NEEDED 2015-11-12 09:57:44 -08:00
omap_hwmod_2xxx_3xxx_interconnect_data.c
omap_hwmod_2xxx_3xxx_ipblock_data.c
omap_hwmod_2xxx_interconnect_data.c
omap_hwmod_2xxx_ipblock_data.c
omap_hwmod_3xxx_data.c ARM: OMAP3: hwmod data: Remove legacy mailbox data and addrs 2015-10-23 13:01:25 -06:00
omap_hwmod_7xx_data.c ARM: OMAP: DRA7: hwmod: Add data for McASP3 2015-11-12 09:57:44 -08:00
omap_hwmod_33xx_43xx_common_data.h
omap_hwmod_33xx_43xx_interconnect_data.c ARM: DRA7/AM335x/AM437x: hwmod: Remove gpmc address space from hwmod data 2015-10-23 13:01:24 -06:00
omap_hwmod_33xx_43xx_ipblock_data.c
omap_hwmod_33xx_data.c
omap_hwmod_43xx_data.c
omap_hwmod_44xx_data.c ARM: OMAP4: hwmod data: Remove spinlock hwmod addrs 2015-10-23 13:01:24 -06:00
omap_hwmod_54xx_data.c ARM: OMAP: Remove duplicated operand in OR operation 2015-10-20 01:29:40 -06:00
omap_hwmod_81xx_data.c arm: omap2+: add missing HWMOD_NO_IDLEST in 81xx hwmod data 2015-11-25 10:54:22 -08:00
omap_hwmod_2420_data.c
omap_hwmod_2430_data.c
omap_hwmod_common_data.c
omap_hwmod_common_data.h
omap_hwmod_common_ipblock_data.c
omap_hwmod_reset.c
omap_opp_data.h
omap_phy_internal.c
omap_twl.c
opp.c
opp2xxx.h
opp3xxx_data.c
opp4xxx_data.c
opp2420_data.c
opp2430_data.c
pdata-quirks.c ARM: OMAP2+: remove custom abort handler for t410 2015-11-12 10:02:05 -08:00
pm-debug.c
pm.c
pm.h ARM: OMAP4+: PM: erratum is used by OMAP5 and DRA7 as well 2015-09-14 12:14:47 -07:00
pm24xx.c
pm34xx.c ARM: OMAP2+: PM: Denote the cpuidle tracepoints as _rcuidle() 2015-10-12 16:09:57 -07:00
pm44xx.c ARM: OMAP2+: Remove unneeded semicolons 2015-10-12 10:56:36 -07:00
pmu.c
powerdomain-common.c
powerdomain.c
powerdomain.h
powerdomains2xxx_3xxx_data.c
powerdomains2xxx_3xxx_data.h
powerdomains2xxx_data.c
powerdomains3xxx_data.c ARM: OMAP2+: Remove unneeded semicolons 2015-10-12 10:56:36 -07:00
powerdomains7xx_data.c
powerdomains33xx_data.c
powerdomains43xx_data.c
powerdomains44xx_data.c
powerdomains54xx_data.c
prcm-common.h
prcm43xx.h
prcm44xx.h
prcm_mpu7xx.h
prcm_mpu44xx.c
prcm_mpu44xx.h
prcm_mpu54xx.h
prcm_mpu_44xx_54xx.h
prm-regbits-24xx.h
prm-regbits-33xx.h
prm-regbits-34xx.h
prm-regbits-44xx.h
prm.h
prm2xxx.c
prm2xxx.h
prm2xxx_3xxx.c
prm2xxx_3xxx.h
prm3xxx.c
prm3xxx.h
prm7xx.h
prm33xx.c
prm33xx.h
prm44xx.c
prm44xx.h
prm44xx_54xx.h
prm54xx.h
prm_common.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
prminst44xx.c
prminst44xx.h
scrm44xx.h
scrm54xx.h
sdram-hynix-h8mbx00u0mer-0em.h
sdram-micron-mt46h32m32lf-6.h
sdram-nokia.c
sdram-nokia.h
sdram-numonyx-m65kxxxxam.h
sdram-qimonda-hyb18m512160af-6.h
sdrc.c
sdrc.h
sdrc2xxx.c
serial.c
serial.h
sleep24xx.S
sleep34xx.S
sleep44xx.S ARM: omap2: restore OMAP4 barrier behaviour 2015-07-25 15:28:16 +01:00
smartreflex-class3.c
soc.h ARM: OMAP2+: Rename cpu_is macros to soc_is 2015-10-16 10:08:45 -07:00
sr_device.c
sram.c ARM: OMAP3: clock: remove un-used core dpll re-program code 2015-10-14 12:35:27 -07:00
sram.h ARM: OMAP3: clock: remove un-used core dpll re-program code 2015-10-14 12:35:27 -07:00
sram242x.S
sram243x.S
ti81xx-restart.c
ti81xx.h
timer.c ARM: OMAP2+: am43xx: enable GENERIC_CLOCKEVENTS_BROADCAST 2015-12-17 10:53:28 -08:00
twl-common.c
twl-common.h
usb-host.c
usb-musb.c
usb-tusb6010.c
usb.h
vc.c ARM: OMAP3: vc: Remove unused macros 2015-10-12 10:56:36 -07:00
vc.h
vc3xxx_data.c
vc44xx_data.c
voltage.c
voltage.h
voltagedomains2xxx_data.c
voltagedomains3xxx_data.c ARM: appropriate __init annotation for const data 2015-07-28 13:55:27 +02:00
voltagedomains44xx_data.c ARM: appropriate __init annotation for const data 2015-07-28 13:55:27 +02:00
voltagedomains54xx_data.c ARM: appropriate __init annotation for const data 2015-07-28 13:55:27 +02:00
vp.c
vp.h
vp3xxx_data.c
vp44xx_data.c
wd_timer.c
wd_timer.h