From 14ef09b8b495ccb41e6277a73655759a9b7da8ce Mon Sep 17 00:00:00 2001 From: Francisco Molina Date: Wed, 22 Sep 2021 09:22:51 +0200 Subject: [PATCH] drivers/mtd: fix Kconfig dependencies Currently implementations of the MTD api are selecting the module, this makes it easy for default backends to be selected. But the correct modeling is simply selecting the MTD api and then selecting a backend. BOARDs providing one of the backends can expose this and then that backend can be selected by default. There is also currently nothing preventing from using the MTD api with no backend since a mock backend can easily be provided as is done in all mtd tests. --- cpu/native/Kconfig | 2 +- cpu/native/mtd/Kconfig | 12 ---- drivers/Kconfig | 3 - drivers/at24cxxx/Kconfig | 3 +- drivers/at24cxxx/mtd/Kconfig | 13 ----- drivers/at25xxx/Kconfig | 3 +- drivers/at25xxx/mtd/Kconfig | 12 ---- drivers/mtd/Kconfig | 86 ++++++++++++++++++++++++++++- drivers/mtd_flashpage/Kconfig | 17 ------ drivers/mtd_mci/Kconfig | 12 ---- drivers/mtd_sdcard/Kconfig | 7 --- drivers/mtd_spi_nor/Kconfig | 13 ----- tests/mtd_flashpage/app.config.test | 1 + 13 files changed, 89 insertions(+), 95 deletions(-) delete mode 100644 cpu/native/mtd/Kconfig delete mode 100644 drivers/at24cxxx/mtd/Kconfig delete mode 100644 drivers/at25xxx/mtd/Kconfig delete mode 100644 drivers/mtd_flashpage/Kconfig delete mode 100644 drivers/mtd_mci/Kconfig delete mode 100644 drivers/mtd_spi_nor/Kconfig diff --git a/cpu/native/Kconfig b/cpu/native/Kconfig index 2250080b7e..e45e0cbaf0 100644 --- a/cpu/native/Kconfig +++ b/cpu/native/Kconfig @@ -21,6 +21,7 @@ config CPU_ARCH_NATIVE select HAS_PERIPH_PWM select HAS_PERIPH_TIMER_PERIODIC select HAS_SSP + select HAVE_MTD_NATIVE # needed modules select MODULE_PERIPH if TEST_KCONFIG @@ -88,5 +89,4 @@ rsource "backtrace/Kconfig" endmenu # Native modules -rsource "mtd/Kconfig" rsource "periph/Kconfig" diff --git a/cpu/native/mtd/Kconfig b/cpu/native/mtd/Kconfig deleted file mode 100644 index a97959fb3e..0000000000 --- a/cpu/native/mtd/Kconfig +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2021 HAW Hamburg -# -# This file is subject to the terms and conditions of the GNU Lesser -# General Public License v2.1. See the file LICENSE in the top level -# directory for more details. -# - -config MODULE_MTD_NATIVE - bool - default y if MODULE_MTD - depends on NATIVE_OS_LINUX - depends on TEST_KCONFIG diff --git a/drivers/Kconfig b/drivers/Kconfig index 2cd1475318..145f9f7d35 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -144,11 +144,8 @@ menu "Storage Device Drivers" rsource "at24cxxx/Kconfig" rsource "at25xxx/Kconfig" rsource "mtd/Kconfig" -rsource "mtd_flashpage/Kconfig" rsource "mtd_mapper/Kconfig" -rsource "mtd_mci/Kconfig" rsource "mtd_sdcard/Kconfig" -rsource "mtd_spi_nor/Kconfig" rsource "nvram/Kconfig" rsource "nvram_spi/Kconfig" rsource "sdcard_spi/Kconfig" diff --git a/drivers/at24cxxx/Kconfig b/drivers/at24cxxx/Kconfig index 1b0af3bd59..9b62401da0 100644 --- a/drivers/at24cxxx/Kconfig +++ b/drivers/at24cxxx/Kconfig @@ -63,7 +63,6 @@ config MODULE_AT24CXXX bool depends on HAS_PERIPH_I2C depends on TEST_KCONFIG + select HAVE_MTD_AT24CXXX select MODULE_PERIPH_I2C select MODULE_XTIMER - -rsource "mtd/Kconfig" diff --git a/drivers/at24cxxx/mtd/Kconfig b/drivers/at24cxxx/mtd/Kconfig deleted file mode 100644 index f70ef0622a..0000000000 --- a/drivers/at24cxxx/mtd/Kconfig +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2020 HAW Hamburg -# -# This file is subject to the terms and conditions of the GNU Lesser -# General Public License v2.1. See the file LICENSE in the top level -# directory for more details. -# - -config MODULE_MTD_AT24CXXX - bool "MTD implementation for AT24CXXX" - default y - depends on MODULE_AT24CXXX - depends on MODULE_MTD - depends on TEST_KCONFIG diff --git a/drivers/at25xxx/Kconfig b/drivers/at25xxx/Kconfig index 83b28c7af2..bdda9e9e25 100644 --- a/drivers/at25xxx/Kconfig +++ b/drivers/at25xxx/Kconfig @@ -9,10 +9,9 @@ config MODULE_AT25XXX bool "AT25xxx SPI-EEPROMs" depends on HAS_PERIPH_SPI depends on TEST_KCONFIG + select HAVE_MTD_AT25XXX select MODULE_PERIPH_SPI select MODULE_XTIMER help This driver also supports M95xxx, 25AAxxx, 25LCxxx, CAT25xxx & BR25Sxxx families. - -rsource "mtd/Kconfig" diff --git a/drivers/at25xxx/mtd/Kconfig b/drivers/at25xxx/mtd/Kconfig deleted file mode 100644 index 89496e0356..0000000000 --- a/drivers/at25xxx/mtd/Kconfig +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2020 HAW Hamburg -# -# This file is subject to the terms and conditions of the GNU Lesser -# General Public License v2.1. See the file LICENSE in the top level -# directory for more details. -# - -config MODULE_MTD_AT25XXX - bool "MTD implementation for AT25XXX" - depends on MODULE_AT25XXX - depends on MODULE_MTD - depends on TEST_KCONFIG diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig index a969e5cb54..21deb947a7 100644 --- a/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig @@ -5,6 +5,90 @@ # directory for more details. # -config MODULE_MTD +config HAVE_MTD_AT24CXXX + bool + depends on MODULE_AT24CXXX + select MODULE_MTD_AT24CXXX if MODULE_MTD + help + Indicates that a at24cxxx EEPROM MTD is present + +config HAVE_MTD_AT25XXX + bool + depends on MODULE_AT25XXX + select MODULE_MTD_AT25XXX if MODULE_MTD + help + Indicates that a at25xxx SPI-EEPROM MTD is present + +config HAVE_MTD_NATIVE + bool + select MODULE_MTD_NATIVE if MODULE_MTD + help + Indicates that a native MTD is present. + +config HAVE_MTD_SD_SCARD + bool + select MODULE_MTD_SD_CARD if MODULE_MTD + help + Indicates that a sdcard MTD is present + +config HAVE_MTD_SPI_NOR + bool + select MODULE_MTD_SPI_NOR if MODULE_MTD + help + Indicates that a spi-nor MTD is present + +config HAVE_MTD_SPI_MCI + bool + select MODULE_MTD_MCI if MODULE_MTD + help + Indicates that a Multimedia Card Interface (MCI) MTD is present + +menuconfig MODULE_MTD bool "Memory Technology Device interface (MTD)" depends on TEST_KCONFIG + +if MODULE_MTD + +menu "MTD Interefaces" + +config MODULE_MTD_SPI_NOR + bool "MTD interface for SPI NOR Flash" + depends on HAS_PERIPH_SPI + select MODULE_PERIPH_SPI + +config MODULE_MTD_FLASHPAGE + bool "MTD interface for Flashpage" + depends on HAS_PERIPH_FLASHPAGE + depends on HAS_PERIPH_FLASHPAGE_PAGEWISE + select MODULE_PERIPH_FLASHPAGE + select MODULE_PERIPH_FLASHPAGE_PAGEWISE + help + Driver for internal flash devices implementing flashpage interface. + +config MODULE_MTD_NATIVE + bool "MTD native driver" + depends on NATIVE_OS_LINUX + +config MODULE_MTD_AT24CXXX + bool "MTD implementation for AT24CXXX" + depends on MODULE_AT24CXXX + +config MODULE_MTD_AT25XXX + bool "MTD implementation for AT25XXX" + depends on MODULE_AT25XXX + +config MODULE_MTD_MCI + bool "MTD interface for LPC23XX MCI" + depends on CPU_FAM_LPC23XX + select MODULE_MCI + +config MODULE_MTD_SDCARD + bool "MTD interface for SPI SD-Card" + depends on MODULE_SDCARD_SPI + +endmenu # MTD Interfacs + +config MODULE_MTD_WRITE_PAGE + bool "MTD write page API" + +endif diff --git a/drivers/mtd_flashpage/Kconfig b/drivers/mtd_flashpage/Kconfig deleted file mode 100644 index cb3262976b..0000000000 --- a/drivers/mtd_flashpage/Kconfig +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2020 HAW Hamburg -# -# This file is subject to the terms and conditions of the GNU Lesser -# General Public License v2.1. See the file LICENSE in the top level -# directory for more details. -# - -config MODULE_MTD_FLASHPAGE - bool "MTD interface for Flashpage" - depends on HAS_PERIPH_FLASHPAGE - depends on HAS_PERIPH_FLASHPAGE_PAGEWISE - depends on TEST_KCONFIG - select MODULE_PERIPH_FLASHPAGE - select MODULE_PERIPH_FLASHPAGE_PAGEWISE - select MODULE_MTD - help - Driver for internal flash devices implementing flashpage interface. diff --git a/drivers/mtd_mci/Kconfig b/drivers/mtd_mci/Kconfig deleted file mode 100644 index 626cacb76a..0000000000 --- a/drivers/mtd_mci/Kconfig +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2020 HAW Hamburg -# -# This file is subject to the terms and conditions of the GNU Lesser -# General Public License v2.1. See the file LICENSE in the top level -# directory for more details. -# - -config MODULE_MTD_MCI - bool "MTD interface for LPC23XX MCI" - depends on TEST_KCONFIG - depends on MODULE_MCI - select MODULE_MTD diff --git a/drivers/mtd_sdcard/Kconfig b/drivers/mtd_sdcard/Kconfig index 2265bfe774..e3d91253e0 100644 --- a/drivers/mtd_sdcard/Kconfig +++ b/drivers/mtd_sdcard/Kconfig @@ -5,13 +5,6 @@ # General Public License v2.1. See the file LICENSE in the top level # directory for more details. # - -config MODULE_MTD_SDCARD - bool "MTD interface for SPI SD-Card" - depends on MODULE_SDCARD_SPI - depends on TEST_KCONFIG - select MODULE_MTD - menuconfig KCONFIG_USEMODULE_MTD_SDCARD bool "Configure MTD_SDCARD driver" depends on USEMODULE_MTD_SDCARD diff --git a/drivers/mtd_spi_nor/Kconfig b/drivers/mtd_spi_nor/Kconfig deleted file mode 100644 index a633b76312..0000000000 --- a/drivers/mtd_spi_nor/Kconfig +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2020 HAW Hamburg -# -# This file is subject to the terms and conditions of the GNU Lesser -# General Public License v2.1. See the file LICENSE in the top level -# directory for more details. -# - -config MODULE_MTD_SPI_NOR - bool "MTD interface for SPI NOR Flash" - depends on HAS_PERIPH_SPI - depends on TEST_KCONFIG - select MODULE_PERIPH_SPI - select MODULE_MTD diff --git a/tests/mtd_flashpage/app.config.test b/tests/mtd_flashpage/app.config.test index 5ce587cc4d..f801742643 100644 --- a/tests/mtd_flashpage/app.config.test +++ b/tests/mtd_flashpage/app.config.test @@ -1,4 +1,5 @@ # this file enables modules defined in Kconfig. Do not use this file for # application configuration. This is only needed during migration. +CONFIG_MODULE_MTD=y CONFIG_MODULE_MTD_FLASHPAGE=y CONFIG_MODULE_EMBUNIT=y