u-boot-brain/drivers
Ye Li 616f03daba mtd: gpmi: change the BCH layout setting for large oob NAND
The code change updated the NAND driver BCH ECC layout algorithm to
support large oob size NAND chips(oob > 1024 bytes) and proposed a new
way to set ECC layout.

Current implementation requires each chunk size larger than oob size so
the bad block marker (BBM) can be guaranteed located in data chunk. The
ECC layout always using the unbalanced layout(Ecc for both meta and
Data0 chunk), but for the NAND chips with oob larger than 1k, the driver
cannot support because BCH doesn’t support GF 15 for 2K chunk.

The change keeps the data chunk no larger than 1k and adjust the ECC
strength or ECC layout to locate the BBM in data chunk. General idea for
large oob NAND chips is

1.Try all ECC strength from the minimum value required by NAND spec to
the maximum one that works, any ECC makes the BBM locate in data chunk
can be chosen.

2.If none of them works, using separate ECC for meta, which will add one
extra ecc with the same ECC strength as other data chunks. This extra
ECC can guarantee BBM located in data chunk, of course, we need to check
if oob can afford it.

Previous code has two methods for ECC layout setting, the
legacy_calc_ecc_layout and calc_ecc_layout_by_info, the difference
between these two methods is, legacy_calc_ecc_layout set the chunk size
larger chan oob size and then set the maximum ECC strength that oob can
afford. While the calc_ecc_layout_by_info set chunk size and ECC
strength according to NAND spec. It has been proved that the first
method cannot provide safe ECC strength for some modern NAND chips, so
in current code,

1. Driver read NAND parameters first and then chose the proper ECC
layout setting method.

2. If the oob is large or NAND required data chunk larger than oob size,
chose calc_ecc_for_large_oob, otherwise use calc_ecc_layout_by_info

3. legacy_calc_ecc_layout only used for some NAND chips does not contains
necessary information. So this is only a backup plan, it is NOT
recommended to use these NAND chips.

Signed-off-by: Han Xu <b45815@freescale.com>
Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
2020-05-10 20:55:20 +02:00
..
adc dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
ata sata: dwc_ahsata: Fix memory issue in reset_sata 2020-05-08 18:29:10 -04:00
axi dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
bios_emulator bios_emulator: remove stray break 2019-08-09 22:24:02 +08:00
block block: ide: use definitions from include/libata.h 2020-04-17 12:32:36 -04:00
board drivers: board: Add get_fit_loadable() 2020-01-07 11:13:24 -05:00
bootcount bootcount_ext: Add flag to enable/disable bootcount 2020-04-24 10:10:00 -04:00
cache cache: l2x0: Fix missing write to Auxiliary Control Register 2020-05-06 15:12:48 -04:00
clk i.MX for 2020.07 2020-05-04 09:29:42 -04:00
core dm: core: Add function to get child count of ofnode or device 2020-05-02 12:32:28 +02:00
cpu cpu: imx8: show RevC instead of Rev? at boot log 2020-05-03 15:45:49 +02:00
crypto drivers: crypto: rsa_mod_exp: avoid DM_FLAG_PRE_RELOC 2020-04-16 08:12:32 +02:00
ddr arm: mvebu: drivers/ddr: remove redundant assignment 2020-04-14 13:16:42 +02:00
demo SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dfu configs: migrate CONFIG_SET_DFU_ALT_INFO to defconfigs 2020-05-08 09:16:26 -04:00
dma dma: ti: k3-udma: Mark flow id as valid parameter for RX channel config 2020-03-03 13:08:14 +05:30
fastboot fastboot: mt85xx: add command to flash/erase emmc hwpart 2020-01-25 12:04:36 -05:00
firmware Xilinx changes for v2020.07 2020-04-07 17:13:35 -04:00
fpga dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
gpio test: pinmux: add pincontrol-gpio for pin configuration 2020-04-16 23:06:54 -04:00
hwspinlock dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
i2c i2c: mxc: add fuse check 2020-05-10 13:21:20 +02:00
input input: Move input.o to be built only in some cases 2019-11-19 17:43:04 -05:00
led dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
mailbox dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
memory SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
misc misc: scu: Increase the timeout for MU communication 2020-05-10 20:55:20 +02:00
mmc mmc: zynq: parse dt when probing 2020-04-27 13:53:13 +02:00
mtd mtd: gpmi: change the BCH layout setting for large oob NAND 2020-05-10 20:55:20 +02:00
net eQos: Implement the read_rom_hwaddr callback 2020-05-10 20:55:20 +02:00
nvme dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
pch x86: Allow removal of standard PCH drivers 2019-12-15 11:44:16 +08:00
pci pci: Avoid auto-config when chain loading 2020-04-30 17:40:16 +08:00
pci_endpoint pci_ep: Fix Coverity warning 2019-08-07 15:31:04 -04:00
phy phy: phy-mtk-tphy: add a new reference clock 2020-05-02 12:32:28 +02:00
pinctrl pinctrl: nxp: scu: Check the pad partition before set pinmux 2020-05-10 13:24:23 +02:00
power pmic: pfuze100: Change error message level to debug 2020-04-18 12:59:37 +02:00
pwm mediatek: pwm: add pwm driver for MediaTek SoCs 2020-04-17 12:32:36 -04:00
qe doc: fix references to README.qe_firmware 2020-05-04 09:12:37 +05:30
ram configs: stm32mp1: replace STM32MP1_TRUSTED by TFABOOT 2020-04-15 09:08:37 +02:00
remoteproc remoteproc: k3-r5: Fix rproc init failure on Split-mode _only_ devices 2020-03-16 12:33:19 +05:30
reset sandbox conversion to SDL2 2020-02-11 10:58:41 -05:00
rng rockchip: rng: Add a driver for random number generator(rng) device 2020-04-29 10:30:55 +08:00
rtc rtc: pt7c4338: Add driver model support 2020-05-04 09:12:36 +05:30
scsi scsi: Add dma direction member to command structure 2019-10-23 20:47:12 -04:00
serial uart: pl011: Add proper DM clock support 2020-05-07 09:01:42 -04:00
smem dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
soc dma-mapping: move dma_map_(un)single() to <linux/dma-mapping.h> 2020-02-19 21:27:30 +08:00
sound dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
spi spi: sifive: Fix QPP transfer 2020-04-30 22:34:20 +05:30
spmi dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
sysreset sysreset: add reset controller based reboot driver 2020-04-27 20:29:33 +02:00
tee tee: optee: use dev_info in print_os_revision 2020-04-17 12:32:36 -04:00
thermal thermal: imx_tmu: support i.MX8MP 2020-05-10 20:55:20 +02:00
timer timer MediaTek use upstream compatible 2020-05-01 11:34:01 -04:00
tpm tpm: Don't cleanup unless an error happens 2020-04-16 14:36:28 +08:00
ufs dma-mapping: move dma_map_(un)single() to <linux/dma-mapping.h> 2020-02-19 21:27:30 +08:00
usb usb: mx6: add fuse check 2020-05-10 13:21:27 +02:00
video i.MX for 2020.07 2020-05-04 09:29:42 -04:00
virtio dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
w1 dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
w1-eeprom dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
watchdog watchdog MediaTek add upstream compatible 2020-05-01 11:34:01 -04:00
Kconfig dm: rng: Add random number generator(rng) uclass 2020-01-07 18:08:21 +01:00
Makefile drivers: Descend to drivers/soc unconditionally 2020-03-03 13:08:13 +05:30