u-boot/drivers/mtd/nand/raw
Michael Trimarchi c21b0ca525 mtd: nand: make Samsung SLC NAND usable again
Upstream linux commit 69fc01296c9281

commit a1286a1fc4 ("mtd: nand: Move Samsung specific init/detection
logic in nand_samsung.c") introduced a regression for Samsung SLC NAND
chips. Prior to this commit chip->bits_per_cell was initialized by calling
nand_get_bits_per_cell() before using nand_is_slc().
With the offending commit this call is skipped, leaving
chip->bits_per_cell cleared to zero when the manufacturer specific
'.detect' function calls nand_is_slc() which in turn interprets
bits_per_cell != 1 as indication for an MLC chip.
The effect is that e.g. a K9F1G08U0F NAND chip is falsely detected as
MLC NAND with 4KiB page size rather than SLC with 2KiB page size.

Add a call to nand_get_bits_per_cell() before calling the .detect hook
function in nand_manufacturer_detect(), so that the nand_is_slc()
calls in the manufacturer specific code will return correct results.

Reported-by: Marcin Gołaś <marcingol30@gmail.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Reviewed-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Link: https://lore.kernel.org/all/20221021060536.11747-1-michael@amarulasolutions.com
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
2022-12-10 14:35:55 +01:00
..
brcmnand nand: brcmnand: add bcm6753 support 2022-03-07 11:36:12 -05:00
am335x_spl_bch.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
arasan_nfc.c dm: Rename DM_GET_DRIVER() to DM_DRIVER_GET() 2021-01-05 12:26:35 -07:00
atmel_nand.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
atmel_nand_ecc.h mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
cortina_nand.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
cortina_nand.h mtd: rawnand: cortina_nand: Add Cortina CAxxxx SoC support 2021-01-18 15:14:34 -05:00
davinci_nand.c Finish conversion CONFIG_SYS_NAND_SELF_INIT to Kconfig 2021-12-27 16:20:18 -05:00
denali.c mtd: nand: raw: convert nand_dt_init() to ofnode_xx() interface 2021-09-28 06:34:45 +02:00
denali.h mtd: nand: raw: denali: Wait for reset completion status 2020-07-11 21:30:21 +09:00
denali_dt.c dm: Rename DM_GET_DRIVER() to DM_DRIVER_GET() 2021-01-05 12:26:35 -07:00
denali_spl.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
fsl_elbc_nand.c mtd: rawnand: fsl_elbc: Fix reading address pointer from DT 2022-08-22 11:15:57 +02:00
fsl_elbc_spl.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
fsl_ifc_nand.c mtd: rawnand: fsl_ifc: fix FSL NAND driver to read all ONFI parameter pages 2021-03-23 18:06:07 +05:30
fsl_ifc_spl.c Convert CONFIG_TPL_NAND_INIT to Kconfig 2022-06-06 12:09:28 -04:00
fsl_upm.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
fsmc_nand.c stm32mp1: fix reference for STMicroelectronics 2022-06-17 14:12:27 +02:00
kb9202_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
Kconfig mtd: rawnand: omap_gpmc: Enable build for K2/K3 platforms 2022-12-10 11:11:25 +01:00
kirkwood_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
kmeter1_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
lpc32xx_nand_mlc.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
lpc32xx_nand_slc.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
Makefile mtd: nand: Move Macronix specific initialization in nand_macronix.c 2022-07-22 13:29:06 +02:00
mt7621_nand.c mtd: nand: Rename nand_get_flash_type() into nand_detect() 2022-08-22 11:15:15 +02:00
mt7621_nand.h nand: raw: add support for MediaTek MT7621 SoC 2022-07-13 23:03:37 +02:00
mt7621_nand_spl.c nand: raw: add support for MediaTek MT7621 SoC 2022-07-13 23:03:37 +02:00
mxc_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
mxc_nand.h arm: Remove zmx25 board and ARCH_MX25 2021-10-01 21:08:18 -04:00
mxc_nand_spl.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
mxic_nand.c mtd: rawnand: Add Macronix raw NAND controller driver 2021-10-12 16:48:38 -04:00
mxs_nand.c mtd: mxs_nand: Support EDO mode for imx8mn architecture 2022-10-09 10:42:26 +02:00
mxs_nand_dt.c mtd: mxs_nand: Support EDO mode for imx8mn architecture 2022-10-09 10:42:26 +02:00
mxs_nand_spl.c mtd: nand: Rename nand_get_flash_type() into nand_detect() 2022-08-22 11:15:15 +02:00
nand.c mtd: nand: Fix SPL build after migration of CONFIG_SYS_NAND_SELF_INIT to Kconfig 2022-10-08 10:53:13 +02:00
nand_amd.c mtd: nand: Move AMD/Spansion specific init/detection logic in nand_amd.c 2022-07-22 13:29:06 +02:00
nand_base.c mtd: nand: make Samsung SLC NAND usable again 2022-12-10 14:35:55 +01:00
nand_bbt.c common: Drop linux/bug.h from common header 2020-05-18 21:19:23 -04:00
nand_bch.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
nand_ecc.c mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
nand_hynix.c mtd: nand: Move Hynix specific init/detection logic in nand_hynix.c 2022-07-22 13:29:06 +02:00
nand_ids.c mtd: nand: Rename the nand_manufacturers struct 2022-08-22 11:14:37 +02:00
nand_macronix.c mtd: nand: Move Macronix specific initialization in nand_macronix.c 2022-07-22 13:29:06 +02:00
nand_micron.c mtd: nand: Move Micron specific init logic in nand_micron.c 2022-07-22 13:29:06 +02:00
nand_plat.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
nand_samsung.c mtd: nand: samsung: Retrieve ECC requirements from extended 2022-08-22 11:15:24 +02:00
nand_spl_load.c mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
nand_spl_loaders.c mtd: rawnand: nand_spl_loaders: Fix cast type build warning 2022-12-10 14:35:54 +01:00
nand_spl_simple.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
nand_timings.c dm: core: Require users of devres to include the header 2020-02-05 19:33:46 -07:00
nand_toshiba.c mtd: nand: toshiba: Retrieve ECC requirements from extended ID 2022-07-22 13:29:06 +02:00
nand_util.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
octeontx_bch.c pci: Add mask parameter to dm_pci_map_bar() 2022-05-03 18:33:29 -04:00
octeontx_bch.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
octeontx_bch_regs.h mtd: nand: Add NAND controller driver for OcteonTX 2020-10-14 07:55:56 +02:00
octeontx_nand.c pci: Add mask parameter to dm_pci_map_bar() 2022-05-03 18:33:29 -04:00
omap_elm.c mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
omap_gpmc.c mtd: rawnand: omap_gpmc: Reduce .bss usage 2022-12-10 14:35:54 +01:00
pxa3xx_nand.c mtd: nand: pxa3xx: simplify ECC hardware parameters 2022-10-06 10:15:34 +02:00
pxa3xx_nand.h mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
rockchip_nfc.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
stm32_fmc2_nand.c mtd: rawnand: stm32_fmc2: add NAND Write Protect support 2022-03-15 09:10:52 +01:00
sunxi_nand.c mtd: nand: raw: convert nand_dt_init() to ofnode_xx() interface 2021-09-28 06:34:45 +02:00
sunxi_nand_spl.c sunxi-nand: fix the PIO instead of DMA implementation 2022-07-18 11:34:26 +01:00
tegra_nand.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
tegra_nand.h mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
vf610_nfc.c nand: vf610_nfc: Do not abuse CONFIG namespace 2021-08-30 14:10:08 -04:00
zynq_nand.c dm: core: Drop ofnode_is_available() 2022-09-29 16:11:31 -04:00