From f965b5da7c18b199a8fb27fd4fa8d4ce0615a708 Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Wed, 27 Nov 2024 16:10:14 +0800 Subject: [PATCH] mtd: spi-nor: Add macro definition constraints Change-Id: I3b35faaea4fad132be18940328e7df88ebdb0dbd Signed-off-by: Jon Lin --- drivers/mtd/spi-nor/Kconfig | 1 + drivers/mtd/spi-nor/Kconfig.spinorlist | 148 +++++++++++++++++++++++++ drivers/mtd/spi-nor/Makefile | 44 ++++---- drivers/mtd/spi-nor/core.c | 46 ++++++++ 4 files changed, 217 insertions(+), 22 deletions(-) create mode 100644 drivers/mtd/spi-nor/Kconfig.spinorlist diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig index ab7f2e7cdde5..e88fb485839c 100644 --- a/drivers/mtd/spi-nor/Kconfig +++ b/drivers/mtd/spi-nor/Kconfig @@ -76,5 +76,6 @@ config MTD_SPI_NOR_SWP_KEEP endchoice source "drivers/mtd/spi-nor/controllers/Kconfig" +source "drivers/mtd/spi-nor/Kconfig.spinorlist" endif # MTD_SPI_NOR diff --git a/drivers/mtd/spi-nor/Kconfig.spinorlist b/drivers/mtd/spi-nor/Kconfig.spinorlist new file mode 100644 index 000000000000..eb281a667fcc --- /dev/null +++ b/drivers/mtd/spi-nor/Kconfig.spinorlist @@ -0,0 +1,148 @@ +# SPDX-License-Identifier: GPL-2.0-only + +if MTD_SPI_NOR + +config MTD_SPI_NOR_DEVICE_AUTOSELECT + bool "Autoselect SPI Nor flash" + default y + help + By default, auto-selects all SPI Nor flash chips. + +menu "SPI Nor flash" + visible if !MTD_SPI_NOR_DEVICE_AUTOSELECT + +config MTD_SPI_NOR_ATMEL + bool "Atmel SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various Atmel SPI flash chips (AT45xxx and AT25xxx) + +config MTD_SPI_NOR_BOYA + bool "BOYA SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various BOYA SPI flash chips (BY25xxx) + +config MTD_SPI_NOR_CATALYST + bool "CATALYST SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various CATALYST SPI flash chips (cat25xxx) + +config MTD_SPI_NOR_DOSILICON + bool "DOSILICON SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various DOSILICON SPI flash chips (FM25xxx) + +config MTD_SPI_NOR_EON + bool "EON SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various EON SPI flash chips (EN25xxx) + +config MTD_SPI_NOR_ESMT + bool "ESMT SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various ESMT SPI flash chips (F25xxx and EN25) + +config MTD_SPI_NOR_EVERSPIN + bool "EVERSPIN SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various EVERSPIN SPI flash chips (mrxxx) + +config MTD_SPI_NOR_FMSH + bool "FMSH SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various FMSH SPI flash chips (FM25xxx) + +config MTD_SPI_NOR_FUJITSU + bool "FUJITSU SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various FUJITSU SPI flash chips (MB85xxx) + +config MTD_SPI_NOR_GIGADEVICE + bool "GigaDevice SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various GigaDevice SPI flash chips (GD25xxx) + +config MTD_SPI_NOR_INTEL + bool "INTEL SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various INTEL SPI flash chips + +config MTD_SPI_NOR_ISSI + bool "ISSI SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various ISSI SPI flash chips (ISxxx) + +config MTD_SPI_NOR_MACRONIX + bool "Macronix SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various Macronix SPI flash chips (MX25Lxxx) + +config MTD_SPI_NOR_NORMEM + bool "NORMEM SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various NORMEM SPI flash chips (NM25xxx) + +config MTD_SPI_NOR_PUYA + bool "PUYA SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various PUYA SPI flash chips (PY25xxx) + +config MTD_SPI_NOR_SPANSION + bool "Spansion SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various Spansion SPI flash chips (S25FLxxx) + +config MTD_SPI_NOR_STMICRO + bool "STMicro SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx) + +config MTD_SPI_NOR_SST + bool "SST SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various SST SPI flash chips (SST25xxx) + +config MTD_SPI_NOR_WINBOND + bool "Winbond SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various WINBOND SPI flash chips (W25xxx) + +config MTD_SPI_NOR_XILINX + bool "XILINX SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various XILINX SPI flash chips (3Sxxx) + +config MTD_SPI_NOR_XMC + bool "XMC SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various XMC SPI flash chips (XM25xxx) + +config MTD_SPI_NOR_XTX + bool "XTX SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various XTX SPI flash chips (XT25xxx) + +endmenu + +endif # MTD_SPI_NOR diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile index 1401664fea87..a89fe38b21a8 100644 --- a/drivers/mtd/spi-nor/Makefile +++ b/drivers/mtd/spi-nor/Makefile @@ -1,28 +1,28 @@ # SPDX-License-Identifier: GPL-2.0 spi-nor-objs := core.o sfdp.o swp.o otp.o sysfs.o -spi-nor-objs += atmel.o -spi-nor-objs += boya.o -spi-nor-objs += catalyst.o -spi-nor-objs += dosilicon.o -spi-nor-objs += eon.o -spi-nor-objs += esmt.o -spi-nor-objs += everspin.o -spi-nor-objs += fmsh.o -spi-nor-objs += fujitsu.o -spi-nor-objs += gigadevice.o -spi-nor-objs += normem.o -spi-nor-objs += intel.o -spi-nor-objs += issi.o -spi-nor-objs += macronix.o -spi-nor-objs += micron-st.o -spi-nor-objs += puya.o -spi-nor-objs += spansion.o -spi-nor-objs += sst.o -spi-nor-objs += winbond.o -spi-nor-objs += xilinx.o -spi-nor-objs += xmc.o -spi-nor-objs += xtx.o +spi-nor-$(CONFIG_MTD_SPI_NOR_ATMEL) += atmel.o +spi-nor-$(CONFIG_MTD_SPI_NOR_BOYA) += boya.o +spi-nor-$(CONFIG_MTD_SPI_NOR_CATALYST) += catalyst.o +spi-nor-$(CONFIG_MTD_SPI_NOR_DOSILICON) += dosilicon.o +spi-nor-$(CONFIG_MTD_SPI_NOR_EON) += eon.o +spi-nor-$(CONFIG_MTD_SPI_NOR_ESMT) += esmt.o +spi-nor-$(CONFIG_MTD_SPI_NOR_EVERSPIN) += everspin.o +spi-nor-$(CONFIG_MTD_SPI_NOR_FMSH) += fmsh.o +spi-nor-$(CONFIG_MTD_SPI_NOR_FUJITSU) += fujitsu.o +spi-nor-$(CONFIG_MTD_SPI_NOR_GIGADEVICE) += gigadevice.o +spi-nor-$(CONFIG_MTD_SPI_NOR_INTEL) += intel.o +spi-nor-$(CONFIG_MTD_SPI_NOR_ISSI) += issi.o +spi-nor-$(CONFIG_MTD_SPI_NOR_MACRONIX) += macronix.o +spi-nor-$(CONFIG_MTD_SPI_NOR_STMICRO) += micron-st.o +spi-nor-$(CONFIG_MTD_SPI_NOR_NORMEM) += normem.o +spi-nor-$(CONFIG_MTD_SPI_NOR_PUYA) += puya.o +spi-nor-$(CONFIG_MTD_SPI_NOR_SPANSION) += spansion.o +spi-nor-$(CONFIG_MTD_SPI_NOR_SST) += sst.o +spi-nor-$(CONFIG_MTD_SPI_NOR_WINBOND) += winbond.o +spi-nor-$(CONFIG_MTD_SPI_NOR_XILINX) += xilinx.o +spi-nor-$(CONFIG_MTD_SPI_NOR_XMC) += xmc.o +spi-nor-$(CONFIG_MTD_SPI_NOR_XTX) += xtx.o spi-nor-$(CONFIG_DEBUG_FS) += debugfs.o obj-$(CONFIG_MTD_SPI_NOR) += spi-nor.o diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index f46420308c21..ba809b46cd4f 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -1753,29 +1753,75 @@ int spi_nor_sr2_bit2_quad_enable(struct spi_nor *nor) } static const struct spi_nor_manufacturer *manufacturers[] = { +#ifdef CONFIG_MTD_SPI_NOR_ATMEL &spi_nor_atmel, +#endif +#ifdef CONFIG_MTD_SPI_NOR_BOYA &spi_nor_boya, +#endif +#ifdef CONFIG_MTD_SPI_NOR_CATALYST &spi_nor_catalyst, +#endif +#ifdef CONFIG_MTD_SPI_NOR_DOSILICON &spi_nor_dosilicon, +#endif +#ifdef CONFIG_MTD_SPI_NOR_EON &spi_nor_eon, +#endif +#ifdef CONFIG_MTD_SPI_NOR_ESMT &spi_nor_esmt, +#endif +#ifdef CONFIG_MTD_SPI_NOR_EVERSPIN &spi_nor_everspin, +#endif +#ifdef CONFIG_MTD_SPI_NOR_FMSH &spi_nor_fmsh, +#endif +#ifdef CONFIG_MTD_SPI_NOR_FUJITSU &spi_nor_fujitsu, +#endif +#ifdef CONFIG_MTD_SPI_NOR_GIGADEVICE &spi_nor_gigadevice, +#endif +#ifdef CONFIG_MTD_SPI_NOR_NORMEM &spi_nor_normem, +#endif +#ifdef CONFIG_MTD_SPI_NOR_INTEL &spi_nor_intel, +#endif +#ifdef CONFIG_MTD_SPI_NOR_ISSI &spi_nor_issi, +#endif +#ifdef CONFIG_MTD_SPI_NOR_MACRONIX &spi_nor_macronix, +#endif +#ifdef CONFIG_MTD_SPI_NOR_STMICRO &spi_nor_micron, +#endif +#ifdef CONFIG_MTD_SPI_NOR_PUYA &spi_nor_puya, +#endif +#ifdef CONFIG_MTD_SPI_NOR_STMICRO &spi_nor_st, +#endif +#ifdef CONFIG_MTD_SPI_NOR_SPANSION &spi_nor_spansion, +#endif +#ifdef CONFIG_MTD_SPI_NOR_SST &spi_nor_sst, +#endif +#ifdef CONFIG_MTD_SPI_NOR_WINBOND &spi_nor_winbond, +#endif +#ifdef CONFIG_MTD_SPI_NOR_XILINX &spi_nor_xilinx, +#endif +#ifdef CONFIG_MTD_SPI_NOR_XMC &spi_nor_xmc, +#endif +#ifdef CONFIG_MTD_SPI_NOR_XTX &spi_nor_xtx, +#endif }; static const struct flash_info *spi_nor_match_id(struct spi_nor *nor,