u-boot/drivers/mtd
Lukasz Majewski ca1ac16da0 sf: bar: Clean BA24 Bank Address Register bit after read/write/erase operation
The content of Bank Address Register (BAR) is volatile. It is cleared
after power cycle or reset command (RESET F0h).

Some memories (like e.g. s25fl256s) use it to access memory larger than
0x1000000 (16 MiB).

The problem shows up when one:

1. Reads/writes/erases memory > 16 MiB
2. Calls "reset" u-boot command (which is not causing BAR to be cleared)

In the above scenario, the SoC ROM sends 0x000000 address to read SPL.
Unfortunately, the BA24 bit is still set and hence it receives content
from 0x1000000 (16 MiB) memory address.
As a result the SoC aborts and we hang. Only power cycle can take the
SoC out of this state.

How to reproduce/test:

sf probe; sf erase 0x1200000 0x800000; reset
sf probe; sf erase 0x1200000 0x800000; sf write 0x11000000 0x1200000 0x800000; reset
sf probe; sf read 0x11000000 0x1200000 0x800000; reset

Signed-off-by: Lukasz Majewski <lukma@denx.de>
[Fixed comment text on clean_bar function]
Signed-off-by: Jagan Teki <jagan@openedev.com>
Reviewed-by: Jagan Teki <jagan@openedev.com>
2017-09-27 13:31:59 +05:30
..
nand mtd: nand: denali: allow to override corrupted revision register 2017-09-18 20:26:00 +09:00
onenand mtd: OneNAND: Fix onenand_block_markbad 2017-06-23 10:38:07 -04:00
spi sf: bar: Clean BA24 Bank Address Register bit after read/write/erase operation 2017-09-27 13:31:59 +05:30
ubi ubi: Kconfig: Make MTD_UBI select MTD_PARTITIONS 2017-07-24 07:33:34 -04:00
ubispl spl: Lightweight UBI and UBI fastmap support 2016-07-22 09:53:00 -04:00
altera_qspi.c fdt: Rename a few functions in fdt_support 2017-06-01 07:03:11 -06:00
at45.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
cfi_flash.c mtd: cfi: staticize functions 2017-08-22 09:56:09 +02:00
cfi_mtd.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
dataflash.c env: Rename setenv() to env_set() 2017-08-16 08:22:18 -04:00
ftsmc020.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
jedec_flash.c mtd: Handle 29LV800BT 2014-11-19 08:48:41 +01:00
Kconfig flash: complete CONFIG_SYS_NO_FLASH move with renaming 2017-02-12 14:30:25 -05:00
Makefile drivers: mtd: add Microchip PIC32 internal non-CFI flash driver. 2016-05-21 01:25:50 +02:00
mtd-uclass.c dm: implement a MTD uclass 2015-11-12 08:26:58 +08:00
mtd_uboot.c mtd: uboot: Add meaningful error message 2015-11-12 13:17:28 -05:00
mtdconcat.c kbuild: force to define __UBOOT__ in all the C sources 2014-09-16 12:23:56 -04:00
mtdcore.c compat: Remove is_power_of_2() definition 2015-11-05 16:46:59 -05:00
mtdcore.h mtd, ubi, ubifs: resync with Linux-3.14 2014-08-25 19:25:55 -04:00
mtdpart.c treewide: replace #include <asm/errno.h> with <linux/errno.h> 2016-09-23 17:55:42 -04:00
mw_eeprom.c Update i386 code (sc520_cdp) 2008-09-09 11:48:53 +02:00
pic32_flash.c fdt: Rename a few functions in fdt_support 2017-06-01 07:03:11 -06:00
st_smi.c flash: complete CONFIG_SYS_NO_FLASH move with renaming 2017-02-12 14:30:25 -05:00
stm32_flash.c mtd: stm32: use parameter instead of default value 2017-07-10 14:26:05 -04:00
stm32_flash.h stm32: stm32f4: move flash driver to mtd driver location 2016-03-26 18:49:28 -04:00