u-boot-brain/drivers
Miquel Raynal c907464a0a mtd: rawnand: pxa3xx: fix 2kiB pages with 8b strength chips layout
The initial layout for such NAND chips was the following:

+----------------------------------------------------------------------------+
| 1024 (data) | 30 (ECC) | 1024 (data) | 30 (ECC) | 32 (free OOB) | 30 (ECC) |
+----------------------------------------------------------------------------+

This layout has a weakness: reading empty pages trigger ECC errors
(this is expected), but the hardware ECC engine tries to correct the
data anyway and creates itself bitflips, hence bitflips are detected
in erased pages while actually there are none in the NAND chip.

Two solutions have been found at the same time. One was to enlarge the
free OOB area to 64 bytes, changing the layout to be:

+----------------------------------------------------------------------------+
| 1024 (data) | 30 (ECC) | 1024 (data) | 30 (ECC) | 64 (free OOB) | 30 (ECC) |
+----------------------------------------------------------------------------+
                                                    ^^

The very big drawbacks of this solution are:
1/ It prevents booting from NAND.
2/ The current Linux driver (marvell_nand) does not have such problem
because it already re-reads possible empty pages in raw mode before
checking for bitflips. Using different layouts in U-Boot and Linux
would simply not work.

As this driver does support raw reads now and uses it to check for
empty pages, let's forget about this broken hack and return to the
initial layout with only 32 free OOB bytes.

Fixes: ac56a3b30c ("mtd: nand: pxa3xx: add support for 2KB 8-bit flash")
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Acked-by: Jagan Teki <jagan@openedev.com>
2018-11-22 11:38:13 +05:30
..
adc dm: adc: add uclass's mask and conversion helpers 2018-11-20 12:35:25 -05:00
ata Switch to driver model for eSDHC on Layerscape SoCs including LS1021A, 2018-09-29 11:47:32 -04:00
axi drivers: cosmetic: Convert SPDX license tags to Linux Kernel style 2018-10-28 09:26:39 -04:00
bios_emulator bios_emulator: remove assignment without effect 2018-07-23 14:33:21 -04:00
block blk: Introduce IF_TYPE_VIRTIO 2018-11-14 09:16:27 -08:00
board drivers: cosmetic: Convert SPDX license tags to Linux Kernel style 2018-10-28 09:26:39 -04:00
bootcount bootcount: Make bootcount magic configurable 2018-10-19 14:16:43 -04:00
clk clk: meson: fix clk81 divider calculation 2018-11-20 12:35:35 -05:00
core dm: uclass: Add uclass_next_device_err() to return a valid device 2018-11-16 16:51:55 -05:00
cpu cpu: mpc83xx: Remove unnecessary characters in the description string 2018-11-14 09:16:27 -08:00
crypto SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
ddr socfpga: stratix10: fix sdram_calculate_size 2018-09-15 03:17:01 +02:00
demo SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dfu dfu: nand: Add missing dependency on CMD_MTDPARTS 2018-11-13 18:53:10 +05:30
dma SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
fastboot drivers: cosmetic: Convert SPDX license tags to Linux Kernel style 2018-10-28 09:26:39 -04:00
firmware dm: test: Add "/firmware" node scan test 2018-09-29 11:49:35 -06:00
fpga arm: socfpga: fpga: fix type of local variable 2018-10-31 01:41:10 +01:00
gpio gpio: Add MT7621 GPIO support 2018-11-18 16:02:22 +01:00
i2c i2c: stm32f7: change setup struct to const 2018-11-16 16:51:58 -05:00
input spl: input: Allow input in SPL and TPL 2018-10-09 04:40:27 -06:00
led dm: led: move default state support in led uclass 2018-08-10 10:27:32 -04:00
mailbox drivers: cosmetic: Convert SPDX license tags to Linux Kernel style 2018-10-28 09:26:39 -04:00
memory SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
misc misc: fs_loader: Fix compiler warning 2018-11-16 16:52:01 -05:00
mmc - virtio implementation and supporting patches 2018-11-16 08:37:50 -05:00
mtd mtd: rawnand: pxa3xx: fix 2kiB pages with 8b strength chips layout 2018-11-22 11:38:13 +05:30
net driver: net: ti: keystone_net: switch to use common mdio lib 2018-11-05 10:42:01 -06:00
nvme blk: Call part_init() in the post_probe() method 2018-11-14 09:16:27 -08:00
pch SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
pci dm: pci: Add APIs to find next capability and extended capability 2018-11-14 09:16:28 -08:00
pcmcia SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
phy drivers: cosmetic: Convert SPDX license tags to Linux Kernel style 2018-10-28 09:26:39 -04:00
pinctrl pinctrl: sandbox: Add get_pin_muxing ops support 2018-11-16 16:51:57 -05:00
power power: spl: add SPL_DM_REGULATOR_GPIO in Kconfig 2018-11-01 10:02:43 -04:00
pwm pwm: sunxi: choose best prescaler to improve PWM resolution 2018-10-24 21:57:16 +05:30
qe drivers: qe: Move CONFIG_U_QE to Kconfig 2018-09-27 10:01:27 -07:00
ram ram: Introduce K3 AM654 DDR Sub System driver 2018-11-16 16:51:58 -05:00
remoteproc spl: Allow remoteproc drivers to be used within SPL 2018-09-11 08:32:55 -04:00
reset drivers: cosmetic: Convert SPDX license tags to Linux Kernel style 2018-10-28 09:26:39 -04:00
rtc Test improvements to tidy up output and drop duplicate tests 2018-10-10 13:35:17 -04:00
scsi blk: Call part_init() in the post_probe() method 2018-11-14 09:16:27 -08:00
serial serial: ns16550: add setconfig support 2018-11-16 16:52:00 -05:00
smem drivers: smem: sandbox 2018-07-19 16:31:38 -04:00
soc SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
sound SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
spi arm64: versal: Add support for new Xilinx Versal ACAPs 2018-10-16 16:53:21 +02:00
spmi SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
sysreset sysreset: Remove DM_FLAG_PRE_RELOC flag in various drivers 2018-11-14 09:16:28 -08:00
tee tee: add sandbox driver 2018-10-07 11:04:01 -04:00
thermal SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
timer timer: Remove DM_FLAG_PRE_RELOC flag in various drivers 2018-11-14 09:16:28 -08:00
tpm tpm: Use livetree and allow children 2018-10-09 04:40:27 -06:00
usb fsl/usb: Workaround for USB erratum-A005275 2018-10-29 13:13:05 -07:00
video - virtio implementation and supporting patches 2018-11-16 08:37:50 -05:00
virtio virtio: Add a Sandbox transport driver 2018-11-14 09:16:28 -08:00
w1 w1: fix data abort if no one wire bus master present 2018-11-01 10:02:10 -04:00
w1-eeprom w1-eeprom: Add support for Maxim DS2502 add only memory 2018-11-16 16:51:55 -05:00
watchdog wdt: Add MT7621 watchdog driver 2018-11-18 16:02:22 +01:00
Kconfig dm: Add a new uclass driver for VirtIO transport devices 2018-11-14 09:16:27 -08:00
Makefile dm: Add a new uclass driver for VirtIO transport devices 2018-11-14 09:16:27 -08:00