From a104b8efc3f1b9f49d16d8c08f27acaadd3dff2b Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Wed, 27 Nov 2024 16:53:21 +0800 Subject: [PATCH] mtd: spinand: Add macro definition constraints Change-Id: I65e03dd7cc70d1ab279c5bdea0ef8969666d7469 Signed-off-by: Jon Lin --- drivers/mtd/nand/spi/Kconfig | 2 + drivers/mtd/nand/spi/Kconfig.spinandlist | 156 +++++++++++++++++++++++ drivers/mtd/nand/spi/Makefile | 26 +++- drivers/mtd/nand/spi/core.c | 46 +++++++ 4 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 drivers/mtd/nand/spi/Kconfig.spinandlist diff --git a/drivers/mtd/nand/spi/Kconfig b/drivers/mtd/nand/spi/Kconfig index 8c1d95d23b56..e6cfa409756f 100644 --- a/drivers/mtd/nand/spi/Kconfig +++ b/drivers/mtd/nand/spi/Kconfig @@ -8,3 +8,5 @@ menuconfig MTD_SPI_NAND select MTD_NAND_BBT_USING_FLASH help This is the framework for the SPI NAND device drivers. + +source "drivers/mtd/nand/spi/Kconfig.spinandlist" diff --git a/drivers/mtd/nand/spi/Kconfig.spinandlist b/drivers/mtd/nand/spi/Kconfig.spinandlist new file mode 100644 index 000000000000..eb41188cbd29 --- /dev/null +++ b/drivers/mtd/nand/spi/Kconfig.spinandlist @@ -0,0 +1,156 @@ +# SPDX-License-Identifier: GPL-2.0-only + +if MTD_SPI_NAND + +config MTD_SPI_NAND_DEVICE_AUTOSELECT + bool "Autoselect SPI Nand flash" + default y + help + By default, auto-selects all SPI Nand flash chips. + +menu "SPI Nand flash" + visible if !MTD_SPI_NAND_DEVICE_AUTOSELECT + +config MTD_SPI_NAND_ATO + bool "ATO SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various ATO SPI Nand flash chips + +config MTD_SPI_NAND_BIWIN + bool "BIWIN SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various BIWIN SPI Nand flash chips + +config MTD_SPI_NAND_DOSILICON + bool "DOSILICON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various DOSILICON SPI Nand flash chips + +config MTD_SPI_NAND_ESMT + bool "ESMT SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + select SPI_NAND_MICRON + help + Add support for various ESMT SPI Nand flash chips + +config MTD_SPI_NAND_ETRON + bool "ETRON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various ETRON SPI Nand flash chips + +config MTD_SPI_NAND_FMSH + bool "FMSH SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various FMSH SPI Nand flash chips + +config MTD_SPI_NAND_FORESEE + bool "FORESEE SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various FORESEE SPI Nand flash chips + +config MTD_SPI_NAND_GIGADEVICE + bool "GIGADEVICE SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various GIGADEVICE SPI Nand flash chips + +config MTD_SPI_NAND_GSTO + bool "GSTO SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various GSTO SPI Nand flash chips + +config MTD_SPI_NAND_HIKSEMI + bool "HIKSEMI SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various HIKSEMI SPI Nand flash chips + +config MTD_SPI_NAND_HYF + bool "HYF SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various HYF SPI Nand flash chips + +config MTD_SPI_NAND_JSC + bool "JSC SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various JSC SPI Nand flash chips + +config MTD_SPI_NAND_MACRONIX + bool "MACRONIX SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various MACRONIX SPI Nand flash chips + +config MTD_SPI_NAND_MICRON + bool "MICRON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various MICRON SPI Nand flash chips + +config MTD_SPI_NAND_PARAGON + bool "PARAGON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various PARAGON SPI Nand flash chips + +config MTD_SPI_NAND_SILICONGO + bool "SILICONGO SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various SILICONGO SPI Nand flash chips + +config MTD_SPI_NAND_SKYHIGH + bool "SKYHIGH SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various SKYHIGH SPI Nand flash chips + +config MTD_SPI_NAND_TOSHIBA + bool "TOSHIBA SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various TOSHIBA SPI Nand flash chips + +config MTD_SPI_NAND_UNIM + bool "UNIM SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various UNIM SPI Nand flash chips + +config MTD_SPI_NAND_WINBOND + bool "WINBOND SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various WINBOND SPI Nand flash chips + +config MTD_SPI_NAND_XINCUN + bool "XINCUN SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various XINCUN SPI Nand flash chips + +config MTD_SPI_NAND_XTX + bool "XTX SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + select MTD_SPI_NAND_MICRON + help + Add support for various XTX SPI Nand flash chips + +config MTD_SPI_NAND_ZBIT + bool "ZBIT SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various ZBIT SPI Nand flash chips + +endmenu + +endif diff --git a/drivers/mtd/nand/spi/Makefile b/drivers/mtd/nand/spi/Makefile index b28cdffeaa6d..2fd86cdb708c 100644 --- a/drivers/mtd/nand/spi/Makefile +++ b/drivers/mtd/nand/spi/Makefile @@ -1,3 +1,27 @@ # SPDX-License-Identifier: GPL-2.0 -spinand-objs := core.o ato.o gigadevice.o gsto.o macronix.o micron.o paragon.o toshiba.o winbond.o biwin.o dosilicon.o esmt.o etron.o fmsh.o foresee.o hiksemi.o hyf.o jsc.o silicongo.o skyhigh.o unim.o xincun.o xtx.o zbit.o +spinand-objs := core.o obj-$(CONFIG_MTD_SPI_NAND) += spinand.o + +spinand-$(CONFIG_MTD_SPI_NAND_ATO) += ato.o +spinand-$(CONFIG_MTD_SPI_NAND_BIWIN) += biwin.o +spinand-$(CONFIG_MTD_SPI_NAND_DOSILICON) += dosilicon.o +spinand-$(CONFIG_MTD_SPI_NAND_ESMT) += esmt.o +spinand-$(CONFIG_MTD_SPI_NAND_ETRON) += etron.o +spinand-$(CONFIG_MTD_SPI_NAND_FMSH) += fmsh.o +spinand-$(CONFIG_MTD_SPI_NAND_FORESEE) += foresee.o +spinand-$(CONFIG_MTD_SPI_NAND_GIGADEVICE) += gigadevice.o +spinand-$(CONFIG_MTD_SPI_NAND_GSTO) += gsto.o +spinand-$(CONFIG_MTD_SPI_NAND_HIKSEMI) += hiksemi.o +spinand-$(CONFIG_MTD_SPI_NAND_HYF) += hyf.o +spinand-$(CONFIG_MTD_SPI_NAND_JSC) += jsc.o +spinand-$(CONFIG_MTD_SPI_NAND_MACRONIX) += macronix.o +spinand-$(CONFIG_MTD_SPI_NAND_MICRON) += micron.o +spinand-$(CONFIG_MTD_SPI_NAND_PARAGON) += paragon.o +spinand-$(CONFIG_MTD_SPI_NAND_SILICONGO) += silicongo.o +spinand-$(CONFIG_MTD_SPI_NAND_SKYHIGH) += skyhigh.o +spinand-$(CONFIG_MTD_SPI_NAND_TOSHIBA) += toshiba.o +spinand-$(CONFIG_MTD_SPI_NAND_UNIM) += unim.o +spinand-$(CONFIG_MTD_SPI_NAND_WINBOND) += winbond.o +spinand-$(CONFIG_MTD_SPI_NAND_XINCUN) += xincun.o +spinand-$(CONFIG_MTD_SPI_NAND_XTX) += xtx.o +spinand-$(CONFIG_MTD_SPI_NAND_ZBIT) += zbit.o diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c index a46142634b1c..0eb65ca35b73 100644 --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c @@ -951,30 +951,76 @@ static const struct nand_ops spinand_ops = { }; static const struct spinand_manufacturer *spinand_manufacturers[] = { +#ifdef CONFIG_MTD_SPI_NAND_ATO &ato_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_BIWIN &biwin_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_DOSILICON &dosilicon_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_ESMT &esmt_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_ETRON &etron_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_FMSH &fmsh_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_FORESEE &foresee_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_GIGADEVICE &gigadevice_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_GSTO &gsto_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_HIKSEMI &hiksemi_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_HYF &hyf_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_JSC &jsc_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_MACRONIX ¯onix_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_MICRON µn_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_PARAGON ¶gon_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_SILICONGO &silicongo_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_SKYHIGH &skyhigh_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_TOSHIBA &toshiba_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_UNIM &unim_spinand_manufacturer, &unim_zl_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_WINBOND &winbond_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_XINCUN &xincun_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_XTX &xtx_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_ZBIT &zbit_spinand_manufacturer, +#endif }; static int spinand_manufacturer_match(struct spinand_device *spinand,