Messages in this thread | | | From | Boris Brezillon <> | Subject | [PATCH 00/15] mtd: nand: allow vendor specific detection/initialization | Date | Fri, 27 May 2016 14:54:46 +0200 |
| |
Hello,
This patch series is a step forward in supporting vendor-specific functionalities. This series is mainly moving vendor-specific initialization or detection code out of the core, but also introduces an infrastructure allowing support for vendor-specific features.
While those features might seem useless to most users, some of them are actually required on modern MLC/TLC NANDs (this is the case of read-retry support, which AFAICT has not been standardized by the JEDEC consortium).
Now, let's detail what's inside this patch-set.
Patches 1 to 4 are simple reworks simplifying auto-detection function prototypes, and clarifying their purpose.
Patch 5 is introducing the vendor-specific initialization infrastructure.
Patch 6 is removing the MTD_NAND_IDS Kconfig option to avoid creating a nand_ids.ko module when MTD_NAND is enabled as a module. This prevents a future cross-dependency between nand.ko where all vendor specific code will rely and nand_ids.ko which will reference vendor-specific ops in its manufacturer table, which in turn is referenced by the core code linked in nand.ko.
Patches 7 to 12 are moving vendor-specific code into their respective nand_<vendor>.c files.
Patch 13 is taking a patch proposed by Hans and adding support for ECC requirements extraction from the samsung extended IDs. It seems to apply to all Samsung MLCs, but even if it's not the case, the detection code should be improved to support the new formats.
Patch 14 is adding support for advanced NAND ID decoding to the Hynix driver (OOB size, ECC and scrambling requirements extraction). Again this detection code might be incomplete, but I'd like people to extend it if required rather than adding new full-id entries in the nand_ids table.
And finally, patch 15 is showing how useful this vendor-specific stuff can be by implementing read-retry support for Hynix 1x nm MLCs. And trust me, you don't want to try using such a NAND without read-retry support ;).
As always, I'm open to any suggestion to improve this vendor-specific infrastructure, so please review the code :).
Thanks,
Boris
Boris Brezillon (14): mtd: nand: get rid of the mtd parameter in all auto-detection functions mtd: nand: store nand ID in struct nand_chip mtd: nand: get rid of busw parameter mtd: nand: rename nand_get_flash_type() into nand_detect() mtd: nand: add vendor specific initialization step mtd: nand: kill the MTD_NAND_IDS Kconfig option mtd: nand: move samsung specific initialization in nand_samsung.c mtd: nand: move hynix specific initialization in nand_hynix.c mtd: nand: move toshiba specific initialization in nand_toshiba.c mtd: nand: move micron specific initialization in nand_micron.c mtd: nand: move AMD/Spansion specific initialization in nand_amd.c mtd: nand: move Macronix specific initialization in nand_macronix.c mtd: nand: hynix: rework NAND ID decoding to extract more information mtd: nand: hynix: add read-retry support for 1x nm MLC NANDs
Hans de Goede (1): mtd: nand: samsung: retrieve ECC requirements from extended ID
arch/cris/arch-v32/drivers/Kconfig | 1 - drivers/mtd/nand/Kconfig | 4 - drivers/mtd/nand/Makefile | 9 +- drivers/mtd/nand/nand_amd.c | 60 ++++ drivers/mtd/nand/nand_base.c | 362 +++++++-------------- drivers/mtd/nand/nand_hynix.c | 623 +++++++++++++++++++++++++++++++++++++ drivers/mtd/nand/nand_ids.c | 21 +- drivers/mtd/nand/nand_macronix.c | 27 ++ drivers/mtd/nand/nand_micron.c | 84 +++++ drivers/mtd/nand/nand_samsung.c | 110 +++++++ drivers/mtd/nand/nand_toshiba.c | 60 ++++ include/linux/mtd/nand.h | 64 ++-- 12 files changed, 1141 insertions(+), 284 deletions(-) create mode 100644 drivers/mtd/nand/nand_amd.c create mode 100644 drivers/mtd/nand/nand_hynix.c create mode 100644 drivers/mtd/nand/nand_macronix.c create mode 100644 drivers/mtd/nand/nand_micron.c create mode 100644 drivers/mtd/nand/nand_samsung.c create mode 100644 drivers/mtd/nand/nand_toshiba.c
-- 2.7.4
| |