linux/drivers/mtd/nand
Hans de Goede 8fc82d456e mtd: nand: samsung: Retrieve ECC requirements from extended ID
On some nand controllers with hw-ecc the controller code wants to know
the ecc strength and size and having these as 0, 0 is not accepted.

Specifying these in devicetree is possible but undesirable as the nand
may be different in different production runs of the same board, so it
is better to get this info from the nand id where possible.

This commit adds code to read the ecc strength and size from the nand
for Samsung extended-id nands. This code is based on the info for the 5th
id byte in the datasheets for the following Samsung nands: K9GAG08U0E,
K9GAG08U0F, K9GAG08X0D, K9GBG08U0A, K9GBG08U0B. These all use these bits
in the exact same way.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
2017-03-08 23:21:23 +01:00
..
bcm47xxnflash mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
brcmnand mtd: nand: brcmnand: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:47 +01:00
gpmi-nand sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
ams-delta.c mtd: nand: ams-delta: return error code of nand_scan() on error 2016-11-07 14:48:41 +01:00
atmel_nand_ecc.h mtd: atmel_nand: Support 32-bit ECC strength 2016-02-12 10:27:48 -08:00
atmel_nand_nfc.h Revert "mtd: atmel_nand: Support variable RB_EDGE interrupts" 2016-05-25 20:06:28 -07:00
atmel_nand.c mtd: nand: atmel: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:46 +01:00
au1550nd.c mtd: nand: au1550nd: set ECC algorithm explicitly 2016-05-05 23:51:53 +02:00
bf5xx_nand.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
cafe_nand.c mtd: nand: cafe: return error code of nand_scan_ident() on error 2016-11-07 14:48:51 +01:00
cmx270_nand.c mtd: nand: cmx270: return error code of nand_scan() on error 2016-11-07 14:48:41 +01:00
cs553x_nand.c mtd: nand: cs553x: return error code of nand_scan() on error 2016-11-07 14:48:42 +01:00
davinci_nand.c mtd: nand: davinci: Reinitialize the HW ECC engine in 4bit hwctl 2016-09-09 19:39:33 -07:00
denali_dt.c mtd: nand: denali: remove unneeded <linux/slab.h> includes 2016-11-19 09:30:55 +01:00
denali_pci.c mtd: nand: denali: remove unneeded <linux/slab.h> includes 2016-11-19 09:30:55 +01:00
denali.c mtd: nand: denali: remove debug lines of __FILE__, __LINE__, __func__ 2016-11-19 09:40:42 +01:00
denali.h mtd: nand: denali: remove unused struct member totalblks, blksperchip 2016-11-19 09:38:59 +01:00
diskonchip.c mtd: nand: diskonchip: switch to mtd_ooblayout_ops 2016-05-05 23:51:40 +02:00
docg4.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
fsl_elbc_nand.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
fsl_ifc_nand.c mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0 2017-02-06 08:54:01 +01:00
fsl_upm.c mtd: nand: fsl_upm: set ECC algorithm explicitly 2016-05-05 23:51:54 +02:00
fsmc_nand.c mtd: nand: fsmc: remove stale non-DT probe path 2017-01-30 11:50:30 +01:00
gpio.c mtd: nand: gpio: return error code of nand_scan() on error 2016-11-07 14:48:43 +01:00
hisi504_nand.c mtd: nand: hisi504: return error code of nand_scan_ident() on error 2016-11-07 14:48:51 +01:00
jz4740_nand.c mtd: nand: jz4740: Remove unused local variable 2016-05-05 23:51:56 +02:00
jz4780_bch.c mtd: nand: jz4780: Update MODULE_AUTHOR email address 2016-07-11 08:40:19 +02:00
jz4780_bch.h mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs 2016-01-07 09:35:11 -08:00
jz4780_nand.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
Kconfig mtd: nand: Kill the MTD_NAND_IDS Kconfig option 2017-03-08 23:21:18 +01:00
lpc32xx_mlc.c mtd: nand: lpc32xx: fix invalid error handling of a requested irq 2017-01-04 20:50:18 +01:00
lpc32xx_slc.c mtd: nand: lpc32xx_slc: Remove unneeded NULL check on 'rc' 2017-01-30 11:50:30 +01:00
Makefile mtd: nand: Move Macronix specific initialization in nand_macronix.c 2017-03-08 23:21:23 +01:00
mpc5121_nfc.c mtd: nand: mpc5121: return error code of nand_scan() on error 2016-11-07 14:48:43 +01:00
mtk_ecc.c mtd: mtk: avoid warning in mtk_ecc_encode 2016-10-28 10:21:23 +02:00
mtk_ecc.h mtd: mediatek: driver for MTK Smart Device 2016-07-11 08:39:54 +02:00
mtk_nand.c mtd: nand: mediatek: remove redundant dev_err call in mtk_nfc_probe() 2017-01-30 11:54:22 +01:00
mxc_nand.c mtd: nand: mxc: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:49 +01:00
nand_amd.c mtd: nand: Move AMD/Spansion specific init/detection logic in nand_amd.c 2017-03-08 23:21:22 +01:00
nand_base.c mtd: nand: Move Macronix specific initialization in nand_macronix.c 2017-03-08 23:21:23 +01:00
nand_bbt.c mtd: nand_bbt: scan for next free bbt block if writing bbt fails 2016-09-23 09:35:16 +02:00
nand_bch.c mtd: nand_bch: fix spelling of "probably" 2016-05-06 09:45:45 -07:00
nand_ecc.c mtd: nand: return consistent error codes in ecc.correct() implementations 2016-01-06 18:45:46 -08:00
nand_hynix.c mtd: nand: Move Hynix specific init/detection logic in nand_hynix.c 2017-03-08 23:21:20 +01:00
nand_ids.c mtd: nand: Move Macronix specific initialization in nand_macronix.c 2017-03-08 23:21:23 +01:00
nand_macronix.c mtd: nand: Move Macronix specific initialization in nand_macronix.c 2017-03-08 23:21:23 +01:00
nand_micron.c mtd: nand: Move Micron specific init logic in nand_micron.c 2017-03-08 23:21:21 +01:00
nand_samsung.c mtd: nand: samsung: Retrieve ECC requirements from extended ID 2017-03-08 23:21:23 +01:00
nand_timings.c mtd: nand: Add a few more timings to nand_sdr_timings 2016-11-07 14:48:37 +01:00
nand_toshiba.c mtd: nand: Move Toshiba specific init/detection logic in nand_toshiba.c 2017-03-08 23:21:21 +01:00
nandsim.c mtd: nand: nandsim: fix error check 2016-11-19 09:43:15 +01:00
ndfc.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
nuc900_nand.c mtd: nand: nuc900: set ECC algorithm explicitly 2016-04-19 22:05:32 +02:00
omap2.c mtd: nand: omap2: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:50 +01:00
omap_elm.c mtd: omap_elm: print interrupt resource using %pr 2015-12-18 10:16:17 -08:00
orion_nand.c mtd: nand: orion: return error code of nand_scan() on error 2016-11-07 14:48:44 +01:00
oxnas_nand.c mtd: nand: Add OX820 NAND Support 2016-10-22 14:24:21 +02:00
pasemi_nand.c mtd: nand: pasemi: return error code of nand_scan() on error 2016-11-07 14:48:45 +01:00
plat_nand.c mtd: nand: plat_nand: return error code of nand_scan() on error 2016-11-07 14:48:45 +01:00
pxa3xx_nand.c mtd: nand: pxa3xx: return error code of nand_scan_ident() on error 2016-11-07 14:48:52 +01:00
qcom_nandc.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
r852.c mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
r852.h mtd: nand: r852: use the mtd instance embedded in struct nand_chip 2015-12-18 10:54:41 -08:00
s3c2410.c mtd: s3c2410: parse the device configuration from OF node 2016-11-07 14:48:36 +01:00
sh_flctl.c mtd: nand: sh_flctl: handle dma_submit() errors 2016-09-23 09:35:16 +02:00
sharpsl.c mtd: nand: sharpsl: switch to mtd_ooblayout_ops 2016-05-05 23:51:36 +02:00
sm_common.c mtd: nand: sm_common: switch to mtd_ooblayout_ops 2016-05-05 23:51:48 +02:00
sm_common.h mtd: use __packed shorthand 2014-08-19 11:53:08 -07:00
socrates_nand.c mtd: nand: socrates: use nand_scan() for nand_scan_ident/tail() combo 2016-11-07 14:48:53 +01:00
sunxi_nand.c mtd: nand: sunxi: Improve sunxi_nfc_cmd_ctrl() 2017-02-06 09:35:19 +01:00
tango_nand.c mtd: nand: tango: Reset pbus to raw mode in probe 2017-01-03 11:58:35 +01:00
tmio_nand.c mtd: nand: tmio: return error code of nand_scan() on error 2016-11-07 14:48:44 +01:00
txx9ndfmc.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
vf610_nfc.c mtd: nand: vf610: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:50 +01:00
xway_nand.c mtd: update my email address 2017-02-08 12:49:27 -08:00