Skip to contentSkip to conversation

MTD defconfigs/Kconfigs/Makefiles heavy cleanup

PATCH Superseded Miquel Raynal 8 participants 83 messages Dec 4, 2018 – Dec 9, 2018 Page 2 of 2

Subsystems (16)

v3 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
author maintainer
#19 lore raw

PATCH v3 8/28 mtd: ensure UBI is compiled when using fastmap

In reply to Miquel Raynal

UBI must be enabled when using fastmap, reflect this is defconfigs.

---
 configs/am335x_igep003x_defconfig     | 1 +
 configs/aristainetos2_defconfig       | 1 +
 configs/aristainetos2b_defconfig      | 1 +
 configs/aristainetos_defconfig        | 1 +
 configs/colibri-imx6ull_defconfig     | 1 +
 configs/colibri_imx7_defconfig        | 1 +
 configs/colibri_t20_defconfig         | 1 +
 configs/colibri_vf_defconfig          | 1 +
 configs/draco_defconfig               | 1 +
 configs/etamin_defconfig              | 1 +
 configs/harmony_defconfig             | 1 +
 configs/igep00x0_defconfig            | 1 +
 configs/pxm2_defconfig                | 1 +
 configs/rastaban_defconfig            | 1 +
 configs/rut_defconfig                 | 1 +
 configs/socfpga_vining_fpga_defconfig | 1 +
 configs/thuban_defconfig              | 1 +
 17 files changed, 17 insertions(+)
configs/am335x_igep003x_defconfig +1 -0
index ab4fb76a8b..12e8195584 100644
@@ -44,6 +44,7 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
configs/aristainetos2_defconfig +1 -0
index 365db0f410..2b5e7a8b30 100644
@@ -40,6 +40,7 @@ CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_PHYLIB=y
configs/aristainetos2b_defconfig +1 -0
index 778db36346..04eb2e336c 100644
@@ -40,6 +40,7 @@ CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_PHYLIB=y
configs/aristainetos_defconfig +1 -0
index d3d5e23e2d..6d2ce2c03b 100644
@@ -40,6 +40,7 @@ CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_PHYLIB=y
configs/colibri-imx6ull_defconfig +1 -0
index e9faf3a204..e16bb5c425 100644
@@ -53,6 +53,7 @@ CONFIG_DM_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_MTD_RAW_NAND_MXS_DT=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_ADDR_ENABLE=y
configs/colibri_imx7_defconfig +1 -0
index f7976dedca..59afc811d8 100644
@@ -52,6 +52,7 @@ CONFIG_DM_I2C=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
configs/colibri_t20_defconfig +1 -0
index c360497355..5b3eb2a7a7 100644
@@ -40,6 +40,7 @@ CONFIG_DFU_RAM=y
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_DM_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_REGULATOR=y
configs/colibri_vf_defconfig +1 -0
index 453fa25f82..305dfcccb5 100644
@@ -50,6 +50,7 @@ CONFIG_FSL_ESDHC=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_VF610_NFC_60_ECC_BYTES=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
configs/draco_defconfig +1 -0
index 139851e333..ff28ed9d76 100644
@@ -65,6 +65,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
configs/etamin_defconfig +1 -0
index 24a6a0148f..e6ce4090f1 100644
@@ -65,6 +65,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
configs/harmony_defconfig +1 -0
index a5edd9b9e4..8eeb362db8 100644
@@ -29,6 +29,7 @@ CONFIG_DEFAULT_DEVICE_TREE="tegra20-harmony"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SPL_DM=y
 CONFIG_DM_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PCI=y
 CONFIG_DM_PCI=y
configs/igep00x0_defconfig +1 -0
index 1dd87b3faa..89af776ed6 100644
@@ -36,6 +36,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x2C000000
configs/pxm2_defconfig +1 -0
index 0cd7fe9394..18e9833316 100644
@@ -67,6 +67,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
configs/rastaban_defconfig +1 -0
index 3ccaf6cc71..9b3c6f7da6 100644
@@ -65,6 +65,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
configs/rut_defconfig +1 -0
index e712692b83..0e0fb236e0 100644
@@ -68,6 +68,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
configs/socfpga_vining_fpga_defconfig +1 -0
index a666fe1d32..dc43f77a80 100644
@@ -71,6 +71,7 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
configs/thuban_defconfig +1 -0
index f87328e47b..da8873f59d 100644
@@ -65,6 +65,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
Signature · 1 line
2.19.1
author maintainer
#21 lore raw

PATCH v3 9/28 mtd: ensure MTD is compiled when UBI is used

In reply to Miquel Raynal

MTD must be enabled when UBI is used, this is mandatory and will later be reflected thanks to a "depends on" in Kconfig. But first, defconfigs needs to be fixed.

---
 configs/gardena-smart-gateway-mt7688-ram_defconfig | 1 +
 configs/gardena-smart-gateway-mt7688_defconfig     | 1 +
 configs/harmony_defconfig                          | 1 +
 3 files changed, 3 insertions(+)
configs/gardena-smart-gateway-mt7688-ram_defconfig +1 -0
index d9f75570bb..7bd23bb1a1 100644
@@ -37,6 +37,7 @@ CONFIG_DM_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_BLINK=y
 CONFIG_LED_GPIO=y
+CONFIG_MTD=y
 CONFIG_DM_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
configs/gardena-smart-gateway-mt7688_defconfig +1 -0
index ca63358f6c..0ecffe608f 100644
@@ -40,6 +40,7 @@ CONFIG_DM_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_BLINK=y
 CONFIG_LED_GPIO=y
+CONFIG_MTD=y
 CONFIG_DM_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
configs/harmony_defconfig +1 -0
index 8eeb362db8..d916d9db94 100644
@@ -28,6 +28,7 @@ CONFIG_OF_LIVE=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-harmony"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SPL_DM=y
+CONFIG_MTD=y
 CONFIG_DM_MTD=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
Signature · 1 line
2.19.1
author maintainer
#23 lore raw

PATCH v3 10/28 mtd: ensure UBI is compiled when CMD_UBI is selected

In reply to Miquel Raynal

UBI must be enabled when CMD_UBI is used, this is mandatory and will later be reflected thanks to a "depends on" in Kconfig. But first, defconfigs needs to be fixed.

---
 configs/am335x_baltos_defconfig                    | 1 +
 configs/am3517_evm_defconfig                       | 1 +
 configs/apf27_defconfig                            | 1 +
 configs/apx4devkit_defconfig                       | 1 +
 configs/at91sam9x5ek_dataflash_defconfig           | 1 +
 configs/at91sam9x5ek_mmc_defconfig                 | 1 +
 configs/at91sam9x5ek_nandflash_defconfig           | 1 +
 configs/at91sam9x5ek_spiflash_defconfig            | 1 +
 configs/bk4r1_defconfig                            | 1 +
 configs/dns325_defconfig                           | 1 +
 configs/dockstar_defconfig                         | 1 +
 configs/ds414_defconfig                            | 1 +
 configs/ea20_defconfig                             | 1 +
 configs/eco5pk_defconfig                           | 1 +
 configs/ethernut5_defconfig                        | 1 +
 configs/gardena-smart-gateway-mt7688-ram_defconfig | 1 +
 configs/gardena-smart-gateway-mt7688_defconfig     | 1 +
 configs/goflexhome_defconfig                       | 1 +
 configs/guruplug_defconfig                         | 1 +
 configs/gwventana_emmc_defconfig                   | 1 +
 configs/gwventana_gw5904_defconfig                 | 1 +
 configs/gwventana_nand_defconfig                   | 1 +
 configs/ib62x0_defconfig                           | 1 +
 configs/iconnect_defconfig                         | 1 +
 configs/igep0032_defconfig                         | 1 +
 configs/imx6dl_icore_nand_defconfig                | 1 +
 configs/imx6q_icore_nand_defconfig                 | 1 +
 configs/imx6q_logic_defconfig                      | 1 +
 configs/imx6qdl_icore_mmc_defconfig                | 1 +
 configs/imx6qdl_icore_nand_defconfig               | 1 +
 configs/imx6ul_geam_nand_defconfig                 | 1 +
 configs/imx6ul_isiot_nand_defconfig                | 1 +
 configs/ipam390_defconfig                          | 1 +
 configs/k2e_evm_defconfig                          | 1 +
 configs/k2e_hs_evm_defconfig                       | 1 +
 configs/k2g_evm_defconfig                          | 1 +
 configs/k2g_hs_evm_defconfig                       | 1 +
 configs/k2hk_evm_defconfig                         | 1 +
 configs/k2hk_hs_evm_defconfig                      | 1 +
 configs/k2l_evm_defconfig                          | 1 +
 configs/k2l_hs_evm_defconfig                       | 1 +
 configs/km_kirkwood_128m16_defconfig               | 1 +
 configs/km_kirkwood_defconfig                      | 1 +
 configs/km_kirkwood_pci_defconfig                  | 1 +
 configs/kmcoge4_defconfig                          | 2 ++
 configs/kmcoge5ne_defconfig                        | 1 +
 configs/kmcoge5un_defconfig                        | 1 +
 configs/kmeter1_defconfig                          | 1 +
 configs/kmlion1_defconfig                          | 2 ++
 configs/kmnusa_defconfig                           | 1 +
 configs/kmopti2_defconfig                          | 1 +
 configs/kmsugp1_defconfig                          | 1 +
 configs/kmsupx5_defconfig                          | 1 +
 configs/kmsuv31_defconfig                          | 1 +
 configs/kmtegr1_defconfig                          | 1 +
 configs/kmtepr2_defconfig                          | 1 +
 configs/kmvect1_defconfig                          | 1 +
 configs/m53menlo_defconfig                         | 1 +
 configs/mcx_defconfig                              | 1 +
 configs/mgcoge3un_defconfig                        | 1 +
 configs/mt_ventoux_defconfig                       | 1 +
 configs/mx28evk_auart_console_defconfig            | 1 +
 configs/mx28evk_defconfig                          | 1 +
 configs/mx28evk_nand_defconfig                     | 1 +
 configs/mx28evk_spi_defconfig                      | 1 +
 configs/nas220_defconfig                           | 1 +
 configs/nsa310s_defconfig                          | 1 +
 configs/omap35_logic_defconfig                     | 1 +
 configs/omap35_logic_somlv_defconfig               | 1 +
 configs/omap3_beagle_defconfig                     | 1 +
 configs/omap3_evm_defconfig                        | 1 +
 configs/omap3_logic_defconfig                      | 1 +
 configs/omap3_logic_somlv_defconfig                | 1 +
 configs/omap3_overo_defconfig                      | 1 +
 configs/omap3_pandora_defconfig                    | 1 +
 configs/omapl138_lcdk_defconfig                    | 1 +
 configs/openrd_base_defconfig                      | 1 +
 configs/openrd_client_defconfig                    | 1 +
 configs/openrd_ultimate_defconfig                  | 1 +
 configs/pcm052_defconfig                           | 1 +
 configs/pcm058_defconfig                           | 1 +
 configs/pfla02_defconfig                           | 1 +
 configs/platinum_picon_defconfig                   | 1 +
 configs/platinum_titanium_defconfig                | 1 +
 configs/pogo_e02_defconfig                         | 1 +
 configs/portl2_defconfig                           | 1 +
 configs/sama5d3_xplained_mmc_defconfig             | 1 +
 configs/sama5d3_xplained_nandflash_defconfig       | 1 +
 configs/sheevaplug_defconfig                       | 1 +
 configs/socfpga_arria5_defconfig                   | 1 +
 configs/socfpga_cyclone5_defconfig                 | 1 +
 configs/socfpga_de0_nano_soc_defconfig             | 1 +
 configs/socfpga_is1_defconfig                      | 1 +
 configs/socfpga_sockit_defconfig                   | 1 +
 configs/socfpga_socrates_defconfig                 | 1 +
 configs/socfpga_sr1500_defconfig                   | 1 +
 configs/suvd3_defconfig                            | 1 +
 configs/titanium_defconfig                         | 1 +
 configs/tricorder_defconfig                        | 1 +
 configs/tricorder_flash_defconfig                  | 1 +
 configs/tuge1_defconfig                            | 1 +
 configs/tuxx1_defconfig                            | 1 +
 configs/twister_defconfig                          | 1 +
 configs/uniphier_ld4_sld8_defconfig                | 1 +
 configs/uniphier_v7_defconfig                      | 1 +
 configs/uniphier_v8_defconfig                      | 1 +
 configs/vct_platinum_onenand_defconfig             | 1 +
 configs/vct_platinum_onenand_small_defconfig       | 1 +
 configs/vct_platinumavc_onenand_defconfig          | 1 +
 configs/vct_platinumavc_onenand_small_defconfig    | 1 +
 configs/vct_premium_onenand_defconfig              | 1 +
 configs/vct_premium_onenand_small_defconfig        | 1 +
 configs/vf610twr_defconfig                         | 1 +
 configs/vf610twr_nand_defconfig                    | 1 +
 configs/x600_defconfig                             | 1 +
 include/environment.h                              | 4 ++--
 116 files changed, 119 insertions(+), 2 deletions(-)
configs/am335x_baltos_defconfig +1 -0
index 461de8bd5d..67551c3104 100644
@@ -44,6 +44,7 @@ CONFIG_BOOTCOUNT_LIMIT=y
 CONFIG_SYS_OMAP24_I2C_SPEED=1000
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
configs/am3517_evm_defconfig +1 -0
index 85075c5cb9..a03d8e3b85 100644
@@ -39,6 +39,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_DM_PCA953X=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
configs/apf27_defconfig +1 -0
index 8f8a984b26..34e368efa7 100644
@@ -41,6 +41,7 @@ CONFIG_FPGA_SPARTAN3=y
 CONFIG_MXC_GPIO=y
 CONFIG_MMC_MXC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
configs/apx4devkit_defconfig +1 -0
index 7d308a5e6f..ec420f4af5 100644
@@ -32,6 +32,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MMC_MXS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_MII=y
configs/at91sam9x5ek_dataflash_defconfig +1 -0
index eef9d7d701..4776ade826 100644
@@ -42,6 +42,7 @@ CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
configs/at91sam9x5ek_mmc_defconfig +1 -0
index c9505343ad..8c2e2653e1 100644
@@ -42,6 +42,7 @@ CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
configs/at91sam9x5ek_nandflash_defconfig +1 -0
index ed305c8213..8e28d5990b 100644
@@ -42,6 +42,7 @@ CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
configs/at91sam9x5ek_spiflash_defconfig +1 -0
index 5a44091e4c..646650b5cd 100644
@@ -42,6 +42,7 @@ CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
configs/bk4r1_defconfig +1 -0
index bf2d94394b..7836a9935c 100644
@@ -35,6 +35,7 @@ CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_MTD=y
configs/dns325_defconfig +1 -0
index 5e6b59db0c..f7114bd09d 100644
@@ -29,6 +29,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="kirkwood-dns325"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_DM=y
 CONFIG_MVSATA_IDE=y
configs/dockstar_defconfig +1 -0
index eabd1bd037..8190010bd8 100644
@@ -26,6 +26,7 @@ CONFIG_DEFAULT_DEVICE_TREE="kirkwood-dockstar"
 CONFIG_ENV_IS_IN_NAND=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/ds414_defconfig +1 -0
index fe29ec46b4..5288936aa1 100644
@@ -43,6 +43,7 @@ CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_OF_TRANSLATE=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/ea20_defconfig +1 -0
index 0e99b9d348..576d73abda 100644
@@ -35,6 +35,7 @@ CONFIG_DA8XX_GPIO=y
 CONFIG_SYS_I2C_DAVINCI=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_SPI_FLASH=y
configs/eco5pk_defconfig +1 -0
index d5e990383f..8f02056ff1 100644
@@ -31,6 +31,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_OMAP24_I2C_SPEED=400000
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
configs/ethernut5_defconfig +1 -0
index 1b374b4e15..9dd684e8fa 100644
@@ -51,6 +51,7 @@ CONFIG_CLK_AT91=y
 CONFIG_DM_GPIO=y
 CONFIG_AT91_GPIO=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_ATMEL=y
configs/gardena-smart-gateway-mt7688-ram_defconfig +1 -0
index 7bd23bb1a1..8659cfbccf 100644
@@ -38,6 +38,7 @@ CONFIG_LED=y
 CONFIG_LED_BLINK=y
 CONFIG_LED_GPIO=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_DM_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
configs/gardena-smart-gateway-mt7688_defconfig +1 -0
index 0ecffe608f..c4ee0dabaf 100644
@@ -41,6 +41,7 @@ CONFIG_LED=y
 CONFIG_LED_BLINK=y
 CONFIG_LED_GPIO=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_DM_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
configs/goflexhome_defconfig +1 -0
index 2dff9d68eb..e4c1ed4166 100644
@@ -33,6 +33,7 @@ CONFIG_DM=y
 CONFIG_MVSATA_IDE=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/guruplug_defconfig +1 -0
index 95c21d6ea2..70bd7121fe 100644
@@ -33,6 +33,7 @@ CONFIG_DM=y
 CONFIG_MVSATA_IDE=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/gwventana_emmc_defconfig +1 -0
index deb4e11947..a3a4b6b867 100644
@@ -62,6 +62,7 @@ CONFIG_DWC_AHSATA=y
 CONFIG_SUPPORT_EMMC_RPMB=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_PHYLIB=y
 CONFIG_E1000=y
 CONFIG_MII=y
configs/gwventana_gw5904_defconfig +1 -0
index 240933db97..f30639d425 100644
@@ -62,6 +62,7 @@ CONFIG_DWC_AHSATA=y
 CONFIG_SUPPORT_EMMC_RPMB=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_PHYLIB=y
 CONFIG_MV88E61XX_SWITCH=y
 CONFIG_MV88E61XX_CPU_PORT=5
configs/gwventana_nand_defconfig +1 -0
index 7bf4b6e0d2..5c581daa8e 100644
@@ -64,6 +64,7 @@ CONFIG_DWC_AHSATA=y
 CONFIG_SUPPORT_EMMC_RPMB=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/ib62x0_defconfig +1 -0
index e846210cb4..28c6885353 100644
@@ -30,6 +30,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MVSATA_IDE=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/iconnect_defconfig +1 -0
index 62766fd6de..60039f9618 100644
@@ -25,6 +25,7 @@ CONFIG_DEFAULT_DEVICE_TREE="kirkwood-iconnect"
 CONFIG_ENV_IS_IN_NAND=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/igep0032_defconfig +1 -0
index 8a9f8432b9..6b4616df83 100644
@@ -33,6 +33,7 @@ CONFIG_CMD_UBI=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
configs/imx6dl_icore_nand_defconfig +1 -0
index 091cf5ccc3..fffc9d410e 100644
@@ -39,6 +39,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/imx6q_icore_nand_defconfig +1 -0
index 0a60726b1a..562f7ca36a 100644
@@ -40,6 +40,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/imx6q_logic_defconfig +1 -0
index d507b2a0b7..78b466fd6d 100644
@@ -58,6 +58,7 @@ CONFIG_LED=y
 CONFIG_LED_GPIO=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/imx6qdl_icore_mmc_defconfig +1 -0
index 54eda990e7..b07762b1da 100644
@@ -49,6 +49,7 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/imx6qdl_icore_nand_defconfig +1 -0
index 0a60726b1a..562f7ca36a 100644
@@ -40,6 +40,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/imx6ul_geam_nand_defconfig +1 -0
index 11e514aa52..1f82974d2f 100644
@@ -41,6 +41,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/imx6ul_isiot_nand_defconfig +1 -0
index 80460e406a..cb61e46357 100644
@@ -41,6 +41,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/ipam390_defconfig +1 -0
index bece70d2d0..0e4db51197 100644
@@ -39,6 +39,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_DA8XX_GPIO=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DRIVER_TI_EMAC=y
configs/k2e_evm_defconfig +1 -0
index e03cf0309b..de77c49767 100644
@@ -39,6 +39,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_TI_AEMIF=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/k2e_hs_evm_defconfig +1 -0
index c13ecc5705..c69378ff99 100644
@@ -32,6 +32,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_TI_AEMIF=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/k2g_evm_defconfig +1 -0
index 5ed7d1656d..dee00ec8d4 100644
@@ -39,6 +39,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/k2g_hs_evm_defconfig +1 -0
index 74b85864ce..b8c395d78d 100644
@@ -32,6 +32,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/k2hk_evm_defconfig +1 -0
index ffc4eb51fb..c602342c53 100644
@@ -39,6 +39,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_TI_AEMIF=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/k2hk_hs_evm_defconfig +1 -0
index a3ad8c8ae2..bc91f2193d 100644
@@ -32,6 +32,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_TI_AEMIF=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/k2l_evm_defconfig +1 -0
index 28cbc963eb..06be026868 100644
@@ -39,6 +39,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_TI_AEMIF=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/k2l_hs_evm_defconfig +1 -0
index 5998f14651..f49bc3fada 100644
@@ -31,6 +31,7 @@ CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_TI_AEMIF=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
configs/km_kirkwood_128m16_defconfig +1 -0
index a0d0fef4e8..f5fb3c9baf 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/km_kirkwood_defconfig +1 -0
index 86d2379c5f..5b9539e42d 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/km_kirkwood_pci_defconfig +1 -0
index 8494d4ff49..a3c1d73382 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/kmcoge4_defconfig +2 -0
index a3cc06bd43..74d42f7609 100644
@@ -39,6 +39,8 @@ CONFIG_BOOTCOUNT_LIMIT=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 CONFIG_SYS_BOOTCOUNT_ADDR=0xFB000020
 # CONFIG_MMC is not set
+CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/kmcoge5ne_defconfig +1 -0
index c8cc69a985..445b561b0a 100644
@@ -33,6 +33,7 @@ CONFIG_BOOTCOUNT_BOOTLIMIT=3
 CONFIG_SYS_BOOTCOUNT_ADDR=0xE011BFF8
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
configs/kmcoge5un_defconfig +1 -0
index 3f3f2cc7a9..524c225ddd 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/kmeter1_defconfig +1 -0
index 4e5e34c34a..f7697e0ad7 100644
@@ -33,6 +33,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE011BFF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/kmlion1_defconfig +2 -0
index 75e5204ff5..0671ebad26 100644
@@ -39,6 +39,8 @@ CONFIG_BOOTCOUNT_LIMIT=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 CONFIG_SYS_BOOTCOUNT_ADDR=0xFB000020
 # CONFIG_MMC is not set
+CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/kmnusa_defconfig +1 -0
index 6e8214a4d8..15ff03d2b0 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/kmopti2_defconfig +1 -0
index 8fe3c09428..1357cd5083 100644
@@ -33,6 +33,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/kmsugp1_defconfig +1 -0
index 3f72be007b..b409a8c6b8 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/kmsupx5_defconfig +1 -0
index cacd9bb4dc..db148d0ce2 100644
@@ -33,6 +33,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/kmsuv31_defconfig +1 -0
index e593ad3a26..28444c2cff 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/kmtegr1_defconfig +1 -0
index 3c95e8a767..c084980b71 100644
@@ -34,6 +34,7 @@ CONFIG_BOOTCOUNT_BOOTLIMIT=3
 CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
configs/kmtepr2_defconfig +1 -0
index 2a10fc19e7..ea6431d692 100644
@@ -33,6 +33,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/kmvect1_defconfig +1 -0
index 70d0742588..8ec014b466 100644
@@ -34,6 +34,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/m53menlo_defconfig +1 -0
index cbc7aca0a9..c8c5db6756 100644
@@ -46,6 +46,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXC=y
 CONFIG_PHYLIB=y
configs/mcx_defconfig +1 -0
index cbe95d4e17..775264afbf 100644
@@ -37,6 +37,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
configs/mgcoge3un_defconfig +1 -0
index faddfa65a5..1b989aa798 100644
@@ -35,6 +35,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/mt_ventoux_defconfig +1 -0
index 0fd997bbbb..9dcaed02b4 100644
@@ -37,6 +37,7 @@ CONFIG_FPGA_SPARTAN3=y
 CONFIG_SYS_OMAP24_I2C_SPEED=400000
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
configs/mx28evk_auart_console_defconfig +1 -0
index 4946fec5ca..d313507d8f 100644
@@ -41,6 +41,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_MMC_MXS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
configs/mx28evk_defconfig +1 -0
index 3a58656a49..2b4c6568fe 100644
@@ -41,6 +41,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_MMC_MXS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
configs/mx28evk_nand_defconfig +1 -0
index 0789af6e7d..ea506054a1 100644
@@ -40,6 +40,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MMC_MXS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
configs/mx28evk_spi_defconfig +1 -0
index 5b34a988a3..137e1c8243 100644
@@ -40,6 +40,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_MMC_MXS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
configs/nas220_defconfig +1 -0
index 5585dfd701..8b568d682a 100644
@@ -30,6 +30,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="kirkwood-blackarmor-nas220"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_DM=y
 CONFIG_MVSATA_IDE=y
configs/nsa310s_defconfig +1 -0
index cbee88022b..5d3ca20e10 100644
@@ -27,6 +27,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MVSATA_IDE=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/omap35_logic_defconfig +1 -0
index 9d2cd49094..605b17f4f3 100644
@@ -40,6 +40,7 @@ CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
configs/omap35_logic_somlv_defconfig +1 -0
index d103f14291..982ed560d1 100644
@@ -40,6 +40,7 @@ CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
configs/omap3_beagle_defconfig +1 -0
index 685533cec0..563b57fed4 100644
@@ -54,6 +54,7 @@ CONFIG_LED_STATUS_CMD=y
 CONFIG_TWL4030_LED=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
configs/omap3_evm_defconfig +1 -0
index 1c43772c98..976985aec2 100644
@@ -46,6 +46,7 @@ CONFIG_DM_MMC=y
 # CONFIG_SPL_DM_MMC is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
configs/omap3_logic_defconfig +1 -0
index 66b1bd811b..5a671f060f 100644
@@ -41,6 +41,7 @@ CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MMC_OMAP36XX_PINS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
configs/omap3_logic_somlv_defconfig +1 -0
index 63e076d018..77df467450 100644
@@ -40,6 +40,7 @@ CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MMC_OMAP36XX_PINS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
configs/omap3_overo_defconfig +1 -0
index 39d7ac6374..ba3ef62fb1 100644
@@ -35,6 +35,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_TWL4030_LED=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
configs/omap3_pandora_defconfig +1 -0
index 2d2a8d2ffd..4fbf864284 100644
@@ -31,6 +31,7 @@ CONFIG_DM=y
 CONFIG_TWL4030_LED=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_DM_SERIAL=y
configs/omapl138_lcdk_defconfig +1 -0
index 0b54822529..e093eebd30 100644
@@ -40,6 +40,7 @@ CONFIG_DM_I2C_COMPAT=y
 CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_DM_MMC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
configs/openrd_base_defconfig +1 -0
index 4ceb9e2291..0b296d4466 100644
@@ -32,6 +32,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MVSATA_IDE=y
 # CONFIG_MMC_HW_PARTITIONING is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/openrd_client_defconfig +1 -0
index 8f6e6319b8..6d6e9ca205 100644
@@ -30,6 +30,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="kirkwood-openrd-client"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVSATA_IDE=y
 # CONFIG_MMC_HW_PARTITIONING is not set
configs/openrd_ultimate_defconfig +1 -0
index d3111ee1f9..39c9807886 100644
@@ -30,6 +30,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="kirkwood-openrd-ultimate"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVSATA_IDE=y
 # CONFIG_MMC_HW_PARTITIONING is not set
configs/pcm052_defconfig +1 -0
index 2cd9e7bee7..64b748b53d 100644
@@ -31,6 +31,7 @@ CONFIG_DM_GPIO=y
 CONFIG_VYBRID_GPIO=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
configs/pcm058_defconfig +1 -0
index c831d1210d..fb450052ad 100644
@@ -43,6 +43,7 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_DM_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
configs/pfla02_defconfig +1 -0
index d0ae55f2e1..ae9b8969df 100644
@@ -42,6 +42,7 @@ CONFIG_CMD_UBI=y
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_DM_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
configs/platinum_picon_defconfig +1 -0
index 5a03eafbf4..540233c748 100644
@@ -47,6 +47,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/platinum_titanium_defconfig +1 -0
index ad912f21cc..d46cfcd347 100644
@@ -47,6 +47,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/pogo_e02_defconfig +1 -0
index fe08911e23..6586a7a063 100644
@@ -25,6 +25,7 @@ CONFIG_DEFAULT_DEVICE_TREE="kirkwood-pogo_e02"
 CONFIG_ENV_IS_IN_NAND=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MVGBE=y
 CONFIG_MII=y
configs/portl2_defconfig +1 -0
index 8fb6ffd43d..3ad4e6197b 100644
@@ -33,6 +33,7 @@ CONFIG_BOOTCOUNT_RAM=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/sama5d3_xplained_mmc_defconfig +1 -0
index a88fabf6a4..48301a230e 100644
@@ -59,6 +59,7 @@ CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_ETH=y
configs/sama5d3_xplained_nandflash_defconfig +1 -0
index e780722e3b..c16fd19948 100644
@@ -56,6 +56,7 @@ CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_ETH=y
configs/sheevaplug_defconfig +1 -0
index 7176b3d85d..82bea61fef 100644
@@ -32,6 +32,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="kirkwood-sheevaplug"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_DM=y
 CONFIG_MVSATA_IDE=y
configs/socfpga_arria5_defconfig +1 -0
index 04cf5d254a..f16debbcff 100644
@@ -50,6 +50,7 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
configs/socfpga_cyclone5_defconfig +1 -0
index bd8216df59..4a462fb1b0 100644
@@ -50,6 +50,7 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
configs/socfpga_de0_nano_soc_defconfig +1 -0
index 90850d9cab..d62b6eb0a4 100644
@@ -50,6 +50,7 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
 CONFIG_DM_ETH=y
configs/socfpga_is1_defconfig +1 -0
index 601b7018b0..9c664c099f 100644
@@ -47,6 +47,7 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/socfpga_sockit_defconfig +1 -0
index 2963bae333..2fdd88b216 100644
@@ -50,6 +50,7 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
configs/socfpga_socrates_defconfig +1 -0
index 6cf12cb272..abc40d431d 100644
@@ -51,6 +51,7 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
configs/socfpga_sr1500_defconfig +1 -0
index 41d8af06b1..29a88ccfdc 100644
@@ -52,6 +52,7 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/suvd3_defconfig +1 -0
index 4e1e54060b..f495f11137 100644
@@ -33,6 +33,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/titanium_defconfig +1 -0
index 56d0a6309f..cc38efe1ca 100644
@@ -35,6 +35,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_PHYLIB=y
configs/tricorder_defconfig +1 -0
index c7e52e2f64..cad698bba0 100644
@@ -38,6 +38,7 @@ CONFIG_LED_STATUS_CMD=y
 CONFIG_TWL4030_LED=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPL_NAND_SIMPLE=y
 CONFIG_CONS_INDEX=3
configs/tricorder_flash_defconfig +1 -0
index a46e1a6d99..13c5797087 100644
@@ -37,6 +37,7 @@ CONFIG_LED_STATUS_CMD=y
 CONFIG_TWL4030_LED=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SPL_NAND_SIMPLE=y
 CONFIG_CONS_INDEX=3
configs/tuge1_defconfig +1 -0
index 2d92a98f5f..82437d5c2f 100644
@@ -33,6 +33,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/tuxx1_defconfig +1 -0
index 8b32e0efb4..c2c7a586b7 100644
@@ -33,6 +33,7 @@ CONFIG_SYS_BOOTCOUNT_ADDR=0xE0113FF8
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_FLASH_CFI_MTD=y
configs/twister_defconfig +1 -0
index 82220318a3..041f54e993 100644
@@ -36,6 +36,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_OMAP24_I2C_SPEED=400000
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
configs/uniphier_ld4_sld8_defconfig +1 -0
index 776f54cc5f..3ed82523a8 100644
@@ -40,6 +40,7 @@ CONFIG_MMC_UNIPHIER=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_CFI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DENALI_DT=y
 CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES=8
configs/uniphier_v7_defconfig +1 -0
index c9c37bf108..46f10f1727 100644
@@ -39,6 +39,7 @@ CONFIG_MMC_UNIPHIER=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_CFI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DENALI_DT=y
 CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES=8
configs/uniphier_v8_defconfig +1 -0
index b781cd8992..239c14965c 100644
@@ -38,6 +38,7 @@ CONFIG_MMC_SDHCI_CADENCE=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_CFI=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_DENALI_DT=y
 CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES=8
configs/vct_platinum_onenand_defconfig +1 -0
index 1d3d405d8e..5cb798859c 100644
@@ -24,6 +24,7 @@ CONFIG_CMD_UBI=y
 # CONFIG_CMD_UBIFS is not set
 CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x00000000
 CONFIG_SMC911X_32_BIT=y
configs/vct_platinum_onenand_small_defconfig +1 -0
index 50adb73129..00fc222710 100644
@@ -30,4 +30,5 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_ONENAND=y
 # CONFIG_NET is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SYS_NS16550=y
configs/vct_platinumavc_onenand_defconfig +1 -0
index 692fae7036..f9f598b3cb 100644
@@ -21,5 +21,6 @@ CONFIG_CMD_UBI=y
 # CONFIG_ISO_PARTITION is not set
 CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SYS_NS16550=y
 # CONFIG_REGEX is not set
configs/vct_platinumavc_onenand_small_defconfig +1 -0
index bcf39bc1ed..be06cf5aac 100644
@@ -30,4 +30,5 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_ONENAND=y
 # CONFIG_NET is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SYS_NS16550=y
configs/vct_premium_onenand_defconfig +1 -0
index 2e87bdf358..fea07c1916 100644
@@ -24,6 +24,7 @@ CONFIG_CMD_UBI=y
 # CONFIG_CMD_UBIFS is not set
 CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x00000000
 CONFIG_SMC911X_32_BIT=y
configs/vct_premium_onenand_small_defconfig +1 -0
index 93fd4299d2..998c5d3ef5 100644
@@ -30,4 +30,5 @@ CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_ONENAND=y
 # CONFIG_NET is not set
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_SYS_NS16550=y
configs/vf610twr_defconfig +1 -0
index c8c46e9c64..fd3d59c492 100644
@@ -34,6 +34,7 @@ CONFIG_DM_GPIO=y
 CONFIG_VYBRID_GPIO=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
configs/vf610twr_nand_defconfig +1 -0
index 5b7037bb9f..42b246d617 100644
@@ -34,6 +34,7 @@ CONFIG_DM_GPIO=y
 CONFIG_VYBRID_GPIO=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
configs/x600_defconfig +1 -0
index 3797a443d6..2cc408c83b 100644
@@ -48,6 +48,7 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_UBI=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_PHY_MICREL=y
include/environment.h +2 -2
index 5e90f157e8..329f8df5d0 100644
@@ -99,8 +99,8 @@ extern unsigned long nand_env_oob_offset;
 # ifndef CONFIG_ENV_SIZE
 #  error "Need to define CONFIG_ENV_SIZE when using CONFIG_ENV_IS_IN_UBI"
 # endif
-# ifndef CONFIG_CMD_UBI
-#  error "Need to define CONFIG_CMD_UBI when using CONFIG_ENV_IS_IN_UBI"
+# ifndef CONFIG_MTD_UBI
+#  error "Need to define CONFIG_MTD_UBI when using CONFIG_ENV_IS_IN_UBI"
 # endif
 #endif /* CONFIG_ENV_IS_IN_UBI */
 
Signature · 1 line
2.19.1
author maintainer
#25 lore raw

PATCH v3 11/28 mtd: ensure UBI is compiled when ENV_IS_IN_UBI is selected

In reply to Miquel Raynal

UBI must be enabled when the environment is in UBI.

---
 configs/CHIP_pro_defconfig | 2 ++
 env/Kconfig                | 2 ++
 2 files changed, 4 insertions(+)
configs/CHIP_pro_defconfig +2 -0
index 7f8bd0f00e..5c2880c960 100644
@@ -8,6 +8,7 @@ CONFIG_NR_DRAM_BANKS=1
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_MTDPARTS=y
+CONFIG_CMD_UBI=y
 CONFIG_MTDIDS_DEFAULT="nand0=sunxi-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=sunxi-nand.0:256k(spl),256k(spl-backup),2m(uboot),2m(uboot-backup),-(UBI)"
 CONFIG_DEFAULT_DEVICE_TREE="sun5i-gr8-chip-pro"
@@ -17,6 +18,7 @@ CONFIG_ENV_UBI_VOLUME="uboot-env"
 # CONFIG_MMC is not set
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_UBI=y
 CONFIG_SYS_NAND_BLOCK_SIZE=0x40000
 CONFIG_SYS_NAND_PAGE_SIZE=0x1000
 CONFIG_SYS_NAND_OOBSIZE=0x100
env/Kconfig +2 -0
index 9011109b47..71a14a0967 100644
@@ -340,6 +340,8 @@ config ENV_IS_IN_SPI_FLASH
 config ENV_IS_IN_UBI
 	bool "Environment in a UBI volume"
 	depends on !CHAIN_OF_TRUST
+	depends on MTD_UBI
+	depends on CMD_UBI
 	help
 	  Define this if you have an UBI volume that you want to use for the
 	  environment.  This has the benefit of wear-leveling the environment
Signature · 1 line
2.19.1
author maintainer
#27 lore raw

PATCH v3 12/28 mtd: ensure MTD_RAW_NAND is compiled when ENV_IS_IN_NAND is selected

In reply to Miquel Raynal

Raw NAND support must be enabled when the environment is in NAND.

---
 configs/bk4r1_defconfig   | 1 +
 configs/harmony_defconfig | 1 +
 2 files changed, 2 insertions(+)
configs/bk4r1_defconfig +1 -0
index 7836a9935c..1df498bff1 100644
@@ -35,6 +35,7 @@ CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_MTD=y
+CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_UBI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
configs/harmony_defconfig +1 -0
index d916d9db94..a8cc8fbadc 100644
@@ -30,6 +30,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SPL_DM=y
 CONFIG_MTD=y
 CONFIG_DM_MTD=y
+CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PCI=y
Signature · 1 line
2.19.1
author maintainer
#29 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

In reply to Miquel Raynal

MTD support must be enabled when the environment is in NOR.

---
 configs/armadillo-800eva_defconfig | 1 +
 1 file changed, 1 insertion(+)
configs/armadillo-800eva_defconfig +1 -0
index b1d923c069..45736a9b01 100644
@@ -32,6 +32,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_MISC is not set
 CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_MMC is not set
+CONFIG_MTD=y
 CONFIG_SH_ETHER=y
 CONFIG_SCIF_CONSOLE=y
 CONFIG_OF_LIBFDT=y
Signature · 1 line
2.19.1
#30 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Quoted 12 lines · On Wed, 5 Dec 2018 00:56:59 +0100 Miquel Raynal <[email protected]>…

MTD support must be enabled when the environment is in NOR.

---
 configs/armadillo-800eva_defconfig | 1 +
 1 file changed, 1 insertion(+)
configs/armadillo-800eva_defconfig +0 -0
index b1d923c069..45736a9b01 100644

configs/armadillo-800eva_defconfig CONFIG_CMD_PING=y · line 35

Quoted 4 lines
configs/armadillo-800eva_defconfig +1 -0
@@ -32,6 +32,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_MISC is not set
 CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_MMC is not set
+CONFIG_MTD=y

Don't we need CONFIG_MTD_NOR_FLASH too?

Quoted 3 lines
configs/armadillo-800eva_defconfig +0 -0
 CONFIG_SH_ETHER=y
 CONFIG_SCIF_CONSOLE=y
 CONFIG_OF_LIBFDT=y
#31 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

In reply to Miquel Raynal

Dear Miquel,

Quoted 1 line · In message <[email protected]> you wrote:

MTD support must be enabled when the environment is in NOR.

Environment in NOR must not, I repeat: must not ever depend on MTD!

For more than 19 years we have been using environment in NOR flash without the need for MTD support, which makes a lot of sense especially on smaller systems where resources are low and MTD is an expensive, but not really needed feature.

It is not acceptable to create a dependency that costs so much.

Best regards,

Wolfgang Denk

Signature · 6 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Very ugly or very beautiful women should be flattered on their
understanding, and mediocre ones on their beauty.
                                       -- Philip Earl of Chesterfield
author maintainer
#32 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Hi Wolfgang,

Wolfgang Denk <[email protected]> wrote on Wed, 05 Dec 2018 13:06:10 +0100:

Quoted 7 lines

Dear Miquel,

Quoted 1 line · In message <[email protected]> you wrote:

MTD support must be enabled when the environment is in NOR.

Quoted 8 lines

Environment in NOR must not, I repeat: must not ever depend on MTD!

For more than 19 years we have been using environment in NOR flash without the need for MTD support, which makes a lot of sense especially on smaller systems where resources are low and MTD is an expensive, but not really needed feature.

It is not acceptable to create a dependency that costs so much.

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

I am talking about U-Boot only, there is a CONFIG_SPL_MTD_SUPPORT option that must be enabled to compile MTD in the SPL so the change I propose do not enlarge the SPL.

Today, there are multiple boards having more than one type of MTD device (eg. raw NAND and SPI-NOR). In this case you need to compile two commands which interface only with the subsystem they have been written for. We propose to kill this approach and instead use an 'mtd' command which shares the same code for all MTD devices: less duplication, more users, and in the end, a reduced size. And I am not event talking about all the code that has been added over the years to "avoid using MTD" which enlarges the binary as well.

The current situation is unmaintainable. Any change in U-Boot under the drivers/mtd/ directory results in hours of debugging to fix broken dependencies and crappy configurations. It took me one week to port the SPI-mem/SPI-NAND layers (which rely on MTD) and to have a working 'mtd' command. It took me and Boris almost 4 weeks to fix the fallouts. Now, either we keep U-Boot MTD subsystem maintainable and in sync as much as possible with Linux to continue to benefit from evolutions/drivers/fixes at the cost of a little overhead, or we continue in the current path, with the results we know.

Thanks,
Miquèl

#33 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Quoted 38 lines · Miquel Raynal

Hi Wolfgang,

Wolfgang Denk <[email protected]> wrote on Wed, 05 Dec 2018 13:06:10 +0100:

Quoted 7 lines

Dear Miquel,

Quoted 1 line · In message <[email protected]> you wrote:

MTD support must be enabled when the environment is in NOR.

Quoted 8 lines

Environment in NOR must not, I repeat: must not ever depend on MTD!

For more than 19 years we have been using environment in NOR flash without the need for MTD support, which makes a lot of sense especially on smaller systems where resources are low and MTD is an expensive, but not really needed feature.

It is not acceptable to create a dependency that costs so much.

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

I am talking about U-Boot only, there is a CONFIG_SPL_MTD_SUPPORT option that must be enabled to compile MTD in the SPL so the change I propose do not enlarge the SPL.

Today, there are multiple boards having more than one type of MTD device (eg. raw NAND and SPI-NOR). In this case you need to compile two commands which interface only with the subsystem they have been written for. We propose to kill this approach and instead use an 'mtd' command which shares the same code for all MTD devices: less duplication, more users, and in the end, a reduced size. And I am not event talking about all the code that has been added over the years to "avoid using MTD" which enlarges the binary as well.

Quoted 9 lines

The current situation is unmaintainable. Any change in U-Boot under the drivers/mtd/ directory results in hours of debugging to fix broken dependencies and crappy configurations. It took me one week to port the SPI-mem/SPI-NAND layers (which rely on MTD) and to have a working 'mtd' command. It took me and Boris almost 4 weeks to fix the fallouts. Now, either we keep U-Boot MTD subsystem maintainable and in sync as much as possible with Linux to continue to benefit from evolutions/drivers/fixes at the cost of a little overhead, or we continue in the current path, with the results we know.

I'm not really involved in U-Boot development, but watching the recent MTD changes and also from a user/board supplier point of view, I strongly support Miquèl's and Boris' approach.

Moving towards a unified MTD layer to replace all the historic solutions is definitely the right thing to do. Miquèl already mentioned the reasons in detail and saving a few bytes of binary size in my opinion does not justify enough for going without all the advantages.

Regards,
Frieder

#34 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Dear Frieder,

Quoted 4 lines · In message <[email protected]> you wrote:

Moving towards a unified MTD layer to replace all the historic solutions is definitely the right thing to do. Miquèl already mentioned the reasons in detail...

I fully agree on this. I just ask not to break fundamental principles of operation which have been in use forever.

Parallel NOR is memory - reading memory must not depend on MTD.

Best regards,

Wolfgang Denk

Signature · 7 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
In the pitiful, multipage, connection-boxed form to which  the  flow-
chart  has  today  been  elaborated, it has proved to be useless as a
design tool -- programmers draw flowcharts after, not before, writing
the programs they describe.                        - Fred Brooks, Jr.
#35 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

In reply to Miquel Raynal

Dear Miquel,

Quoted 5 lines · In message <20181205153218.36f6ed4e@xps13> you wrote:

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

So it's a 5 k code increase for zero benefit.

Quoted 3 lines

I am talking about U-Boot only, there is a CONFIG_SPL_MTD_SUPPORT option that must be enabled to compile MTD in the SPL so the change I propose do not enlarge the SPL.

This is even worse - the SPL is frequently at the size limits.

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data. Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

Reading data from parallel NOR comes at zero overhead (except maybe for setting up the memory controller to map the NOR into the address space).

Adding a dependency on the MTD layer is broken.

Quoted 8 lines

Today, there are multiple boards having more than one type of MTD device (eg. raw NAND and SPI-NOR). In this case you need to compile two commands which interface only with the subsystem they have been written for. We propose to kill this approach and instead use an 'mtd' command which shares the same code for all MTD devices: less duplication, more users, and in the end, a reduced size. And I am not event talking about all the code that has been added over the years to "avoid using MTD" which enlarges the binary as well.

This is perfectly fine. But you must not break fundamental features that have been there ever since the beginning of the project.

Simple things - like reading the environment from parallel NOR (which boils down to calling ofa memcpy()) must not be bloated with unneeded layers like MTD - even if these are needed and useful elsewhere.

Please do not understand me wrong: I fully agree with the MTD rework in general, and I'm happy to see it happen. But please do it in a way not to break existing basic use cases.

Thanks.

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
An expert is a person who avoids the small errors while  sweeping  on
to the grand fallacy.
#36 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Hello Wolfgang,

Quoted 10 lines · On Thu, 06 Dec 2018 09:06:05 +0100 Wolfgang Denk <[email protected]> wrote:

Dear Miquel,

Quoted 5 lines · In message <20181205153218.36f6ed4e@xps13> you wrote:

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

So it's a 5 k code increase for zero benefit.

There's no short term benefit, but the long term benefit is ease better maintainability.

Quoted 6 lines
Quoted 4 lines

I am talking about U-Boot only, there is a CONFIG_SPL_MTD_SUPPORT option that must be enabled to compile MTD in the SPL so the change I propose do not enlarge the SPL.

This is even worse - the SPL is frequently at the size limits.

I think you missed the *no*. There's no overhead at all for the SPL. Either the platform was already enabling CONFIG_SPL_MTD_SUPPORT and the MTD code was already compiled in before Miquel's patch, or this option is disabled, and the SPL still does *not* embed the MTD layer.

Quoted 7 lines

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data. Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

That's only partially true. Yes, you can read from a parallel NORs like if it was memory because memory controllers embedded in SoCs provide your a direct mmio mapping. That's not true for write accesses, as NORs need to be erased before you can write on it. The MTD layer is here to abstract that, such that flash users only have to know how to manipulate an MTD device instead of having one backend per flash-type (actually it's even one per-flash-type+mem-bus).

Quoted 4 lines

Reading data from parallel NOR comes at zero overhead (except maybe for setting up the memory controller to map the NOR into the address space).

The overhead can be minimal if we want (we can have a tiny MTD layer)

current:
flash_read()

proposed:

	mtd_read()
		mtd_to_flash_read_wrapper()
			flash_read()

and when I say minimal, I mean both in term of size and perfs (we're talking about an indirect jump and a few extra instructions in mtd_to_flash_read_wrapper()).

The benefit, well, a single entry point for all kind of mtd accesses. That means we can have an MTD backend for env retrieval instead of one per flash type. Same goes for DFU backends, and maybe even for SPL boots.
To sum-up: less code to maintain. And I wouldn't be surprized if we were actually reducing the image footprint in some cases (when support for several flash types is enabled).

Quoted 15 lines

Adding a dependency on the MTD layer is broken.

Quoted 8 lines

Today, there are multiple boards having more than one type of MTD device (eg. raw NAND and SPI-NOR). In this case you need to compile two commands which interface only with the subsystem they have been written for. We propose to kill this approach and instead use an 'mtd' command which shares the same code for all MTD devices: less duplication, more users, and in the end, a reduced size. And I am not event talking about all the code that has been added over the years to "avoid using MTD" which enlarges the binary as well.

This is perfectly fine. But you must not break fundamental features that have been there ever since the beginning of the project.

Quoted 8 lines

Simple things - like reading the environment from parallel NOR (which boils down to calling ofa memcpy()) must not be bloated with unneeded layers like MTD - even if these are needed and useful elsewhere.

Please do not understand me wrong: I fully agree with the MTD rework in general, and I'm happy to see it happen. But please do it in a way not to break existing basic use cases.

Okay, maybe we can put aside the parallel NOR case for now, but I do think even parallel NOR accesses would benefit from the MTD layer.

Regards,

Boris

#37 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Dear Boris,

Quoted 10 lines · In message <20181206100016.706330ba@bbrezillon> you wrote:
Quoted 7 lines
Quoted 5 lines

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

So it's a 5 k code increase for zero benefit.

There's no short term benefit, but the long term benefit is ease better maintainability.

For MTD, yes. But a user of environment in NOR flash does not necessarily want MTD,

Parallel NOR flash is a traditional memory device - you find it frequently on older, resource-restricted systems. It is not so polular any more today - SPI NOR is much cheaper, comea with a smaller footprint of thr PCB and is much easier to route.

And on these older systems a 5 k code increase is often critical.

Especially if this should also affect the SPL.

Quoted 4 lines

I think you missed the *no*. There's no overhead at all for the SPL. Either the platform was already enabling CONFIG_SPL_MTD_SUPPORT and the MTD code was already compiled in before Miquel's patch, or this option is disabled, and the SPL still does *not* embed the MTD layer.

So parallel NOR is still supported in the SPL _without_ MTD? Then why cannot we have the same support in U-Boot, too?

Quoted 10 lines
Quoted 6 lines

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data. Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

That's only partially true. Yes, you can read from a parallel NORs like if it was memory because memory controllers embedded in SoCs provide your a direct mmio mapping. That's not true for write accesses,

Right, but especially in the SPL read access is sufficient.

Quoted 4 lines

as NORs need to be erased before you can write on it. The MTD layer is here to abstract that, such that flash users only have to know how to manipulate an MTD device instead of having one backend per flash-type (actually it's even one per-flash-type+mem-bus).

I can't parse this. All we need is the ability to directly call the underlying flash driver. We don't need all the layers that MTD adds on top of that.

Quoted 9 lines

The overhead can be minimal if we want (we can have a tiny MTD layer)

current:
flash_read()

proposed:

	mtd_read()
		mtd_to_flash_read_wrapper()
			flash_read()

You write "can be minimal". Has this already been implemented, or is this just a promise for some (far) future add-on?

What is the (expected) size impact?

Quoted 1 line

The benefit, well, a single entry point for all kind of mtd accesses.

This is a benefit for MTD users, agreed. For the ENV_IS_IN_FLASH case, it replaces a simple call to memcpy(), at least for the boot time case (and for SPL). I don't see this as a benefit at all.

Quoted 6 lines

That means we can have an MTD backend for env retrieval instead of one per flash type. Same goes for DFU backends, and maybe even for SPL boots.
To sum-up: less code to maintain. And I wouldn't be surprized if we were actually reducing the image footprint in some cases (when support for several flash types is enabled).

Yes, I understand this argument.

Quoted 6 lines
Quoted 3 lines

Please do not understand me wrong: I fully agree with the MTD rework in general, and I'm happy to see it happen. But please do it in a way not to break existing basic use cases.

Okay, maybe we can put aside the parallel NOR case for now, but I do think even parallel NOR accesses would benefit from the MTD layer.

I agree that it benefits form an architectural and maintenance point of view. But it adds a new dependency with more than insignificant impact to systems where this has not been before, and where resources are tight.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A committee is a life form with six or more legs and no brain.
                              -- Lazarus Long, "Time Enough For Love"
author maintainer
#38 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Hi Wolfgang,

Wolfgang Denk <[email protected]> wrote on Thu, 06 Dec 2018 10:32:14 +0100:

Quoted 17 lines

Dear Boris,

Quoted 10 lines · In message <20181206100016.706330ba@bbrezillon> you wrote:
Quoted 7 lines
Quoted 5 lines

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

So it's a 5 k code increase for zero benefit.

There's no short term benefit, but the long term benefit is ease better maintainability.

For MTD, yes. But a user of environment in NOR flash does not necessarily want MTD,

Quoted 8 lines

Parallel NOR flash is a traditional memory device - you find it frequently on older, resource-restricted systems. It is not so polular any more today - SPI NOR is much cheaper, comea with a smaller footprint of thr PCB and is much easier to route.

And on these older systems a 5 k code increase is often critical.

Especially if this should also affect the SPL.

Please, stop repeating the SPL is a problem. I am not forcing MTD to be compiled in the SPL. You overlooked that point in our last three e-mails: MTD is *not* built in the SPL unless specifically requested. CONFIG_MTD has absolutely no impact on the SPL.

Now, let's talk about U-Boot size. I went through U-Boot MTD implementation to see where this 5k overhead was coming from. The explanation is short: nothing. My observation was wrong because of commands being automatically compiled ("default y"). By the way this is the kind of approach I want to get rid of because it is fundamentally wrong.

Here is a brief summary, still with stm32f429-discovery_defconfig:
* before my series (MTD_NOR_FLASH + CMD_FLASH)
* after my series without MTD (CONFIG_MTD_NOR_FLASH + CMD_FLASH)
* after my series with MTD (MTD_NOR_FLASH + CMD_FLASH + MTD)

In all cases, u-boot.bin is 214540 bytes. I suppose if you don't use anything from MTD, there is no additional symbol, the binary will not be enlarged. And when you use it, it is hard to tell how much bytes were added by MTD and how much bytes have been added by the feature using MTD.

Quoted 8 lines
Quoted 5 lines

I think you missed the *no*. There's no overhead at all for the SPL. Either the platform was already enabling CONFIG_SPL_MTD_SUPPORT and the MTD code was already compiled in before Miquel's patch, or this option is disabled, and the SPL still does *not* embed the MTD layer.

So parallel NOR is still supported in the SPL _without_ MTD? Then why cannot we have the same support in U-Boot, too?

Code duplication, maintainability, single interface, (hopefully) single command, etc

Quoted 8 lines
Quoted 8 lines
Quoted 7 lines

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data. Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

Quoted 5 lines
Quoted 3 lines

That's only partially true. Yes, you can read from a parallel NORs like if it was memory because memory controllers embedded in SoCs provide your a direct mmio mapping. That's not true for write accesses,

Right, but especially in the SPL read access is sufficient.

100% agreed, the SPL just needs read access. But we are talking about U-Boot itself here.

[...]

Quoted 11 lines
Quoted 6 lines
Quoted 3 lines

Please do not understand me wrong: I fully agree with the MTD rework in general, and I'm happy to see it happen. But please do it in a way not to break existing basic use cases.

Okay, maybe we can put aside the parallel NOR case for now, but I do think even parallel NOR accesses would benefit from the MTD layer.

I agree that it benefits form an architectural and maintenance point of view. But it adds a new dependency with more than insignificant impact to systems where this has not been before, and where resources are tight.

Do you see another significant impact that must prevent NOR flashes to depend on MTD?

Thanks,
Miquèl

#39 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Quoted 26 lines · Miquel Raynal

Hi Wolfgang,

Wolfgang Denk <[email protected]> wrote on Thu, 06 Dec 2018 10:32:14 +0100:

Quoted 22 lines

Dear Boris,

Quoted 10 lines · In message <20181206100016.706330ba@bbrezillon> you wrote:
Quoted 7 lines
Quoted 5 lines

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

So it's a 5 k code increase for zero benefit.

There's no short term benefit, but the long term benefit is ease better maintainability.

For MTD, yes. But a user of environment in NOR flash does not necessarily want MTD,

Parallel NOR flash is a traditional memory device - you find it frequently on older, resource-restricted systems. It is not so polular any more today - SPI NOR is much cheaper, comea with a smaller footprint of thr PCB and is much easier to route.

Quoted 8 lines
Quoted 3 lines

And on these older systems a 5 k code increase is often critical.

Especially if this should also affect the SPL.

Please, stop repeating the SPL is a problem. I am not forcing MTD to be compiled in the SPL. You overlooked that point in our last three e-mails: MTD is *not* built in the SPL unless specifically requested. CONFIG_MTD has absolutely no impact on the SPL.

Right, and this is the important part that you are indeed getting right. We must be careful about the SPL case. You are, so good, lets move on.

Quoted 12 lines

Now, let's talk about U-Boot size. I went through U-Boot MTD implementation to see where this 5k overhead was coming from. The explanation is short: nothing. My observation was wrong because of commands being automatically compiled ("default y"). By the way this is the kind of approach I want to get rid of because it is fundamentally wrong.

Here is a brief summary, still with stm32f429-discovery_defconfig:
* before my series (MTD_NOR_FLASH + CMD_FLASH)
* after my series without MTD (CONFIG_MTD_NOR_FLASH + CMD_FLASH)
* after my series with MTD (MTD_NOR_FLASH + CMD_FLASH + MTD)

Quoted 5 lines

In all cases, u-boot.bin is 214540 bytes. I suppose if you don't use anything from MTD, there is no additional symbol, the binary will not be enlarged. And when you use it, it is hard to tell how much bytes were added by MTD and how much bytes have been added by the feature using MTD.

So when you aren't calling into the new code it gets discarded as expected, good. Thanks for digging.

Quoted 10 lines
Quoted 7 lines
Quoted 4 lines

I think you missed the *no*. There's no overhead at all for the SPL. Either the platform was already enabling CONFIG_SPL_MTD_SUPPORT and the MTD code was already compiled in before Miquel's patch, or this option is disabled, and the SPL still does *not* embed the MTD layer.

So parallel NOR is still supported in the SPL _without_ MTD? Then why cannot we have the same support in U-Boot, too?

Code duplication, maintainability, single interface, (hopefully) single command, etc

Right. And to be clear, in the main U-Boot case while we don't grow the binary for fun, we do grow the overall binary (for some board or another) with nearly every push because we're quite often doing "lets fix $X" or "let's add $Y" and rarely "Drop $X as it's linked but unused". Just like DM is resulting in an overall larger binary that's a more consistent and maintainable codebase, this too will result in some things growing in binary size. And we should review the framework with an eye towards "can we do this in a more simple or size-courteous way?" size growth in and of itself isn't a fatal problem.

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data. Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines

That's only partially true. Yes, you can read from a parallel NORs like if it was memory because memory controllers embedded in SoCs provide your a direct mmio mapping. That's not true for write accesses,

Right, but especially in the SPL read access is sufficient.

100% agreed, the SPL just needs read access. But we are talking about U-Boot itself here.

So, new but related question. Are we dropping the write path in the case of SPL? The only case I can think of where SPL might be doing an MTD write would be bootcount stored in env, so we should be able to drop those paths in the normal case.

Quoted 6 lines

[...]

Quoted 4 lines
Quoted 4 lines
Quoted 3 lines

Please do not understand me wrong: I fully agree with the MTD rework in general, and I'm happy to see it happen. But please do it in a way not to break existing basic use cases.

Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

Okay, maybe we can put aside the parallel NOR case for now, but I do think even parallel NOR accesses would benefit from the MTD layer.

I agree that it benefits form an architectural and maintenance point of view. But it adds a new dependency with more than insignificant impact to systems where this has not been before, and where resources are tight.

Frankly I'm concerned that we must have a lot of these boards that aren't actually functional today, or are overwriting something else in memory. Using buildman and the stm32f429-discovery with buildman, I see our growth from v2018.01 to v2018.11 is:
all +48781 bss -628 data +5592 rodata +3079 text +40738

Of course, that's not all inertia growth, there's lots of intentional new board-specific code. So lets try taurus (slightly reformatted output):
all +42136 bss +13344 data +4512 rodata +936 text +23344 spl/u-boot-spl:all +126 spl/u-boot-spl:bss +24 spl/u-boot-spl:rodata +38 spl/u-boot-spl:text +64

Here the board hasn't opted out of the EFI subsystem which has seen a good deal of desired growth (fixes and features).

So, if we're going to start actively worrying about resource constrained boards not fitting within resource _now_ step 1 is to identify them and step 2 is to make sure they're making use of the hooks we have to make exceeding a specific size a link time error. Step 3 will be dealing with however many boards we have that are failing today.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181206/9daef51c/attachment.sig>
#40 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Am 06.12.2018 um 16:59 schrieb Tom Rini:

Quoted 94 lines · Miquel Raynal
Quoted 26 lines

Hi Wolfgang,

Wolfgang Denk <[email protected]> wrote on Thu, 06 Dec 2018 10:32:14 +0100:

Quoted 22 lines

Dear Boris,

Quoted 10 lines · In message <20181206100016.706330ba@bbrezillon> you wrote:
Quoted 7 lines
Quoted 5 lines

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

So it's a 5 k code increase for zero benefit.

There's no short term benefit, but the long term benefit is ease better maintainability.

For MTD, yes. But a user of environment in NOR flash does not necessarily want MTD,

Parallel NOR flash is a traditional memory device - you find it frequently on older, resource-restricted systems. It is not so polular any more today - SPI NOR is much cheaper, comea with a smaller footprint of thr PCB and is much easier to route.

Quoted 8 lines
Quoted 3 lines

And on these older systems a 5 k code increase is often critical.

Especially if this should also affect the SPL.

Please, stop repeating the SPL is a problem. I am not forcing MTD to be compiled in the SPL. You overlooked that point in our last three e-mails: MTD is *not* built in the SPL unless specifically requested. CONFIG_MTD has absolutely no impact on the SPL.

Right, and this is the important part that you are indeed getting right. We must be careful about the SPL case. You are, so good, lets move on.

Quoted 12 lines

Now, let's talk about U-Boot size. I went through U-Boot MTD implementation to see where this 5k overhead was coming from. The explanation is short: nothing. My observation was wrong because of commands being automatically compiled ("default y"). By the way this is the kind of approach I want to get rid of because it is fundamentally wrong.

Here is a brief summary, still with stm32f429-discovery_defconfig:
* before my series (MTD_NOR_FLASH + CMD_FLASH)
* after my series without MTD (CONFIG_MTD_NOR_FLASH + CMD_FLASH)
* after my series with MTD (MTD_NOR_FLASH + CMD_FLASH + MTD)

Quoted 5 lines

In all cases, u-boot.bin is 214540 bytes. I suppose if you don't use anything from MTD, there is no additional symbol, the binary will not be enlarged. And when you use it, it is hard to tell how much bytes were added by MTD and how much bytes have been added by the feature using MTD.

So when you aren't calling into the new code it gets discarded as expected, good. Thanks for digging.

Quoted 10 lines
Quoted 7 lines
Quoted 4 lines

I think you missed the *no*. There's no overhead at all for the SPL. Either the platform was already enabling CONFIG_SPL_MTD_SUPPORT and the MTD code was already compiled in before Miquel's patch, or this option is disabled, and the SPL still does *not* embed the MTD layer.

So parallel NOR is still supported in the SPL _without_ MTD? Then why cannot we have the same support in U-Boot, too?

Code duplication, maintainability, single interface, (hopefully) single command, etc

Right. And to be clear, in the main U-Boot case while we don't grow the binary for fun, we do grow the overall binary (for some board or another) with nearly every push because we're quite often doing "lets fix $X" or "let's add $Y" and rarely "Drop $X as it's linked but unused". Just like DM is resulting in an overall larger binary that's a more consistent and maintainable codebase, this too will result in some things growing in binary size. And we should review the framework with an eye towards "can we do this in a more simple or size-courteous way?" size growth in and of itself isn't a fatal problem.

Quoted 13 lines
Quoted 12 lines
Quoted 10 lines
Quoted 6 lines

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data. Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

That's only partially true. Yes, you can read from a parallel NORs like if it was memory because memory controllers embedded in SoCs provide your a direct mmio mapping. That's not true for write accesses,

Right, but especially in the SPL read access is sufficient.

Quoted 7 lines
Quoted 2 lines

100% agreed, the SPL just needs read access. But we are talking about U-Boot itself here.

So, new but related question. Are we dropping the write path in the case of SPL? The only case I can think of where SPL might be doing an MTD write would be bootcount stored in env, so we should be able to drop those paths in the normal case.

Based on my tests with Vignesh's series to port SF to MTD, I don't think we drop the write part in SPL. I also brought that up in that thread.

However, my (preliminary) test results of his work showed that SPL size is actually reduced when using his new 'spi-nor-tiny' code. And that's without trying to reduce MTD code size.

Regards,
Simon

Quoted 43 lines
Quoted 7 lines

[...]

Quoted 4 lines
Quoted 4 lines
Quoted 3 lines

Please do not understand me wrong: I fully agree with the MTD rework in general, and I'm happy to see it happen. But please do it in a way not to break existing basic use cases.

Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

Okay, maybe we can put aside the parallel NOR case for now, but I do think even parallel NOR accesses would benefit from the MTD layer.

I agree that it benefits form an architectural and maintenance point of view. But it adds a new dependency with more than insignificant impact to systems where this has not been before, and where resources are tight.

Frankly I'm concerned that we must have a lot of these boards that aren't actually functional today, or are overwriting something else in memory. Using buildman and the stm32f429-discovery with buildman, I see our growth from v2018.01 to v2018.11 is:
all +48781 bss -628 data +5592 rodata +3079 text +40738

Of course, that's not all inertia growth, there's lots of intentional new board-specific code. So lets try taurus (slightly reformatted output):
all +42136 bss +13344 data +4512 rodata +936 text +23344 spl/u-boot-spl:all +126 spl/u-boot-spl:bss +24 spl/u-boot-spl:rodata +38 spl/u-boot-spl:text +64

Here the board hasn't opted out of the EFI subsystem which has seen a good deal of desired growth (fixes and features).

So, if we're going to start actively worrying about resource constrained boards not fitting within resource _now_ step 1 is to identify them and step 2 is to make sure they're making use of the hooks we have to make exceeding a specific size a link time error. Step 3 will be dealing with however many boards we have that are failing today.

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot

maintainer
#41 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Quoted 6 lines · Simon Goldschmidt

Am 06.12.2018 um 16:59 schrieb Tom Rini:

Quoted 5 lines · Miquel Raynal
Quoted 4 lines

Hi Wolfgang,

Wolfgang Denk <[email protected]> wrote on Thu, 06 Dec 2018 10:32:14 +0100:

[...]

Quoted 22 lines
Quoted 14 lines
Quoted 14 lines
Quoted 13 lines
Quoted 11 lines
Quoted 6 lines

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data.  Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

That's only partially true. Yes, you can read from a parallel NORs like
if it was memory because memory controllers embedded in SoCs provide your a direct mmio mapping. That's not true for write accesses,

Right, but especially in the SPL read access is sufficient.

Quoted 7 lines
Quoted 2 lines

100% agreed, the SPL just needs read access. But we are talking about U-Boot itself here.

So, new but related question.  Are we dropping the write path in the case of SPL?  The only case I can think of where SPL might be doing an MTD write would be bootcount stored in env, so we should be able to drop those paths in the normal case.

Quoted 7 lines

Based on my tests with Vignesh's series to port SF to MTD, I don't think we drop the write part in SPL. I also brought that up in that thread.

However, my (preliminary) test results of his work showed that SPL size is actually reduced when using his new 'spi-nor-tiny' code. And that's without trying to reduce MTD code size.

To add, 'spi-nor-tiny' has only read path (write/erase returns -ENOTSUPP). There is an option to either use full stack(read+write+erase support) in SPL or use spi-nor-tiny. Boards with SPL size constraints can use spi-nor-tiny to reduces overall code size.

Signature · 2 lines
Regards
Vignesh
author maintainer
#42 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

In reply to Tom Rini

Hi Tom, Wolfgang,

Tom Rini <[email protected]> wrote on Thu, 6 Dec 2018 10:59:25 -0500:

Quoted 129 lines · Miquel Raynal
Quoted 26 lines

Hi Wolfgang,

Wolfgang Denk <[email protected]> wrote on Thu, 06 Dec 2018 10:32:14 +0100:

Quoted 22 lines

Dear Boris,

Quoted 10 lines · In message <20181206100016.706330ba@bbrezillon> you wrote:
Quoted 7 lines
Quoted 5 lines

I took a rather small configuration: stm32f429-discovery_defconfig which uses CONFIG_MTD_NOR_FLASH. Without CONFIG_MTD, u-boot.bin is 209416 bytes. With CONFIG_MTD, u-boot.bin is 214540 bytes. This is an additional 5124 bytes which represent about 2% of the entire size.

So it's a 5 k code increase for zero benefit.

There's no short term benefit, but the long term benefit is ease better maintainability.

For MTD, yes. But a user of environment in NOR flash does not necessarily want MTD,

Parallel NOR flash is a traditional memory device - you find it frequently on older, resource-restricted systems. It is not so polular any more today - SPI NOR is much cheaper, comea with a smaller footprint of thr PCB and is much easier to route.

Quoted 8 lines
Quoted 3 lines

And on these older systems a 5 k code increase is often critical.

Especially if this should also affect the SPL.

Please, stop repeating the SPL is a problem. I am not forcing MTD to be compiled in the SPL. You overlooked that point in our last three e-mails: MTD is *not* built in the SPL unless specifically requested. CONFIG_MTD has absolutely no impact on the SPL.

Right, and this is the important part that you are indeed getting right. We must be careful about the SPL case. You are, so good, lets move on.

Quoted 12 lines

Now, let's talk about U-Boot size. I went through U-Boot MTD implementation to see where this 5k overhead was coming from. The explanation is short: nothing. My observation was wrong because of commands being automatically compiled ("default y"). By the way this is the kind of approach I want to get rid of because it is fundamentally wrong.

Here is a brief summary, still with stm32f429-discovery_defconfig:
* before my series (MTD_NOR_FLASH + CMD_FLASH)
* after my series without MTD (CONFIG_MTD_NOR_FLASH + CMD_FLASH)
* after my series with MTD (MTD_NOR_FLASH + CMD_FLASH + MTD)

Quoted 5 lines

In all cases, u-boot.bin is 214540 bytes. I suppose if you don't use anything from MTD, there is no additional symbol, the binary will not be enlarged. And when you use it, it is hard to tell how much bytes were added by MTD and how much bytes have been added by the feature using MTD.

So when you aren't calling into the new code it gets discarded as expected, good. Thanks for digging.

Quoted 10 lines
Quoted 7 lines
Quoted 4 lines

I think you missed the *no*. There's no overhead at all for the SPL. Either the platform was already enabling CONFIG_SPL_MTD_SUPPORT and the MTD code was already compiled in before Miquel's patch, or this option is disabled, and the SPL still does *not* embed the MTD layer.

So parallel NOR is still supported in the SPL _without_ MTD? Then why cannot we have the same support in U-Boot, too?

Code duplication, maintainability, single interface, (hopefully) single command, etc

Right. And to be clear, in the main U-Boot case while we don't grow the binary for fun, we do grow the overall binary (for some board or another) with nearly every push because we're quite often doing "lets fix $X" or "let's add $Y" and rarely "Drop $X as it's linked but unused". Just like DM is resulting in an overall larger binary that's a more consistent and maintainable codebase, this too will result in some things growing in binary size. And we should review the framework with an eye towards "can we do this in a more simple or size-courteous way?" size growth in and of itself isn't a fatal problem.

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines

Please understand that there is a fundamental difference between parallel NOR flash and things like NAND, SPI NOR etc. - the latter are storage devices, which are usually handled as block device or similar, i. e. you always need a driver to read data. Parallel NOR is not storage, it is _memory_, which is directly mapped int o memory. You can execute code from it.

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines

That's only partially true. Yes, you can read from a parallel NORs like if it was memory because memory controllers embedded in SoCs provide your a direct mmio mapping. That's not true for write accesses,

Right, but especially in the SPL read access is sufficient.

100% agreed, the SPL just needs read access. But we are talking about U-Boot itself here.

So, new but related question. Are we dropping the write path in the case of SPL? The only case I can think of where SPL might be doing an MTD write would be bootcount stored in env, so we should be able to drop those paths in the normal case.

Quoted 6 lines

[...]

Quoted 4 lines
Quoted 4 lines
Quoted 3 lines

Please do not understand me wrong: I fully agree with the MTD rework in general, and I'm happy to see it happen. But please do it in a way not to break existing basic use cases.

Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

Okay, maybe we can put aside the parallel NOR case for now, but I do think even parallel NOR accesses would benefit from the MTD layer.

I agree that it benefits form an architectural and maintenance point of view. But it adds a new dependency with more than insignificant impact to systems where this has not been before, and where resources are tight.

Frankly I'm concerned that we must have a lot of these boards that aren't actually functional today, or are overwriting something else in memory. Using buildman and the stm32f429-discovery with buildman, I see our growth from v2018.01 to v2018.11 is:
all +48781 bss -628 data +5592 rodata +3079 text +40738

Of course, that's not all inertia growth, there's lots of intentional new board-specific code. So lets try taurus (slightly reformatted output):
all +42136 bss +13344 data +4512 rodata +936 text +23344 spl/u-boot-spl:all +126 spl/u-boot-spl:bss +24 spl/u-boot-spl:rodata +38 spl/u-boot-spl:text +64

Quoted 9 lines

Here the board hasn't opted out of the EFI subsystem which has seen a good deal of desired growth (fixes and features).

So, if we're going to start actively worrying about resource constrained boards not fitting within resource _now_ step 1 is to identify them and step 2 is to make sure they're making use of the hooks we have to make exceeding a specific size a link time error. Step 3 will be dealing with however many boards we have that are failing today.

So what's our next move? I think Wolfgang had two points:
* NOR (and everything related to NOR) should not depend on MTD.
* Same for NAND.

For NAND this is already too late, NAND code already relies on MTD so I am just cleaning Makefiles/Kconfig/defconfigs to avoid the "xxx:
missing symbol" error. Now, what about NOR? We know that the overhead, today, is null, so do you allow me to make NOR depend on MTD or are you still opposed to that? I think U-Boot maintenance and future changes would be really eased.

Thanks,
Miquèl

#43 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

Quoted 1 line · Miquel Raynal

Hi Tom, Wolfgang,

[snip]

Quoted 10 lines

So what's our next move? I think Wolfgang had two points:
* NOR (and everything related to NOR) should not depend on MTD.
* Same for NAND.

For NAND this is already too late, NAND code already relies on MTD so I am just cleaning Makefiles/Kconfig/defconfigs to avoid the "xxx:
missing symbol" error. Now, what about NOR? We know that the overhead, today, is null, so do you allow me to make NOR depend on MTD or are you still opposed to that? I think U-Boot maintenance and future changes would be really eased.

Right, so moving forward, I think the plan is:
- For SPL, we acknowledge and continue to allow for one-off drivers that don't depend on MTD for NOR/NAND for read-only case.
- For full U-Boot, we continue with the path you're talking about that gives us the most long term benefits and where yes, NOR and NAND depend on MTD. We will do this in a way that doesn't grow the binary size needlessly but by the same token we aren't going to restrict NOR/NAND drivers more harshly than we do the entire rest of the project.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181207/b5aebf49/attachment.sig>
#44 lore raw

PATCH v3 13/28 mtd: ensure MTD is compiled when ENV_IS_IN_FLASH is selected

In reply to Miquel Raynal

Dear Miquel,

Quoted 3 lines · In message <20181206162300.7ccfddda@xps13> you wrote:

Do you see another significant impact that must prevent NOR flashes to depend on MTD?

My concern here is only resources. If the memory footprint really does not grow, I'm fine with that. But I somwhow doubt this is possible.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The aim of science is not to open the door to everlasting wisdom  but
to set a limit on everlasting error.                 - Bertolt Brecht
author maintainer
#45 lore raw

PATCH v3 14/28 mtd: ensure CMD_NAND is compiled when its options are selected

In reply to Miquel Raynal

In some files, options of CMD_NAND are selected but not the command itself. Fix this inconsistency.

---
 configs/apf27_defconfig                          | 1 +
 configs/aristainetos2_defconfig                  | 1 +
 configs/aristainetos2b_defconfig                 | 1 +
 configs/aristainetos_defconfig                   | 1 +
 configs/bg0900_defconfig                         | 1 +
 configs/bitmain_antminer_s9_defconfig            | 1 +
 configs/bk4r1_defconfig                          | 1 +
 configs/colibri-imx6ull_defconfig                | 1 +
 configs/colibri_imx7_defconfig                   | 1 +
 configs/gwventana_nand_defconfig                 | 1 +
 configs/imx6q_logic_defconfig                    | 1 +
 configs/m53menlo_defconfig                       | 1 +
 configs/mx28evk_auart_console_defconfig          | 1 +
 configs/mx28evk_defconfig                        | 1 +
 configs/mx28evk_nand_defconfig                   | 1 +
 configs/mx28evk_spi_defconfig                    | 1 +
 configs/mx6sabreauto_defconfig                   | 1 +
 configs/mx6sxsabreauto_defconfig                 | 1 +
 configs/pcm052_defconfig                         | 1 +
 configs/pcm058_defconfig                         | 1 +
 configs/platinum_picon_defconfig                 | 1 +
 configs/platinum_titanium_defconfig              | 1 +
 configs/titanium_defconfig                       | 1 +
 configs/vf610twr_defconfig                       | 1 +
 configs/vf610twr_nand_defconfig                  | 1 +
 configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig | 1 +
 configs/zynq_zc770_xm011_defconfig               | 1 +
 configs/zynq_zc770_xm011_x16_defconfig           | 1 +
 28 files changed, 28 insertions(+)
configs/apf27_defconfig +1 -0
index 34e368efa7..0625110b79 100644
@@ -20,6 +20,7 @@ CONFIG_CMD_EEPROM=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 CONFIG_CMD_DHCP=y
configs/aristainetos2_defconfig +1 -0
index 2b5e7a8b30..3aa6b45f3b 100644
@@ -17,6 +17,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_USB=y
configs/aristainetos2b_defconfig +1 -0
index 04eb2e336c..a6d0c962da 100644
@@ -17,6 +17,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_USB=y
configs/aristainetos_defconfig +1 -0
index 6d2ce2c03b..5ebad9770f 100644
@@ -17,6 +17,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_USB=y
configs/bg0900_defconfig +1 -0
index 91cf7cf829..6d518cacb7 100644
@@ -20,6 +20,7 @@ CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
configs/bitmain_antminer_s9_defconfig +1 -0
index 5774ad7173..3ed7e6303a 100644
@@ -28,6 +28,7 @@ CONFIG_CMD_FPGA_LOADMK=y
 CONFIG_CMD_FPGA_LOADP=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 CONFIG_CMD_PART=y
 # CONFIG_CMD_SETEXPR is not set
configs/bk4r1_defconfig +1 -0
index 1df498bff1..6bfff0ae50 100644
@@ -14,6 +14,7 @@ CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_DHCP=y
configs/colibri-imx6ull_defconfig +1 -0
index e16bb5c425..9c718e64af 100644
@@ -27,6 +27,7 @@ CONFIG_CMD_GPT=y
 # CONFIG_RANDOM_UUID is not set
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_NAND_TORTURE=y
 CONFIG_CMD_USB=y
configs/colibri_imx7_defconfig +1 -0
index 59afc811d8..456bc5097b 100644
@@ -25,6 +25,7 @@ CONFIG_CMD_DFU=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_NAND_TORTURE=y
 CONFIG_CMD_USB=y
configs/gwventana_nand_defconfig +1 -0
index 5c581daa8e..c2034b6929 100644
@@ -40,6 +40,7 @@ CONFIG_CMD_SPL_WRITE_SIZE=0x20000
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_PCI=y
 CONFIG_CMD_USB=y
configs/imx6q_logic_defconfig +1 -0
index 78b466fd6d..d40eeef33a 100644
@@ -35,6 +35,7 @@ CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_SDP=y
configs/m53menlo_defconfig +1 -0
index c8c5db6756..65fa77130c 100644
@@ -27,6 +27,7 @@ CONFIG_CMD_GREPENV=y
 CONFIG_CMD_FUSE=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
configs/mx28evk_auart_console_defconfig +1 -0
index d313507d8f..f2b711c951 100644
@@ -20,6 +20,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
configs/mx28evk_defconfig +1 -0
index 2b4c6568fe..bef6b83479 100644
@@ -20,6 +20,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
configs/mx28evk_nand_defconfig +1 -0
index ea506054a1..bad2466785 100644
@@ -19,6 +19,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
configs/mx28evk_spi_defconfig +1 -0
index 137e1c8243..8a185a69ef 100644
@@ -19,6 +19,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
configs/mx6sabreauto_defconfig +1 -0
index ea176c7e6c..d305fd1043 100644
@@ -26,6 +26,7 @@ CONFIG_CMD_DFU=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_PART=y
 CONFIG_CMD_SF=y
configs/mx6sxsabreauto_defconfig +1 -0
index 3d1aa643db..1680da57b2 100644
@@ -12,6 +12,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_USB=y
configs/pcm052_defconfig +1 -0
index 64b748b53d..d13582e963 100644
@@ -14,6 +14,7 @@ CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
configs/pcm058_defconfig +1 -0
index fb450052ad..1f92dce4b7 100644
@@ -30,6 +30,7 @@ CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_CACHE=y
configs/platinum_picon_defconfig +1 -0
index 540233c748..62d8b47a65 100644
@@ -27,6 +27,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
configs/platinum_titanium_defconfig +1 -0
index d46cfcd347..6f11cc60a6 100644
@@ -27,6 +27,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
configs/titanium_defconfig +1 -0
index cc38efe1ca..3dc9cdc2c4 100644
@@ -15,6 +15,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
configs/vf610twr_defconfig +1 -0
index fd3d59c492..92bd2a1e06 100644
@@ -17,6 +17,7 @@ CONFIG_CMD_FUSE=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
configs/vf610twr_nand_defconfig +1 -0
index 42b246d617..9f35712914 100644
@@ -17,6 +17,7 @@ CONFIG_CMD_FUSE=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_TRIMFFS=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig +1 -0
index ebbda31f2e..e110ca41f7 100644
@@ -31,6 +31,7 @@ CONFIG_CMD_FPGA_LOADP=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_GPT=y
 CONFIG_CMD_I2C=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_TFTPPUT=y
configs/zynq_zc770_xm011_defconfig +1 -0
index 373725baa0..4042ce0f7c 100644
@@ -23,6 +23,7 @@ CONFIG_CMD_FPGA_LOADFS=y
 CONFIG_CMD_FPGA_LOADMK=y
 CONFIG_CMD_FPGA_LOADP=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
configs/zynq_zc770_xm011_x16_defconfig +1 -0
index f7d68e9bef..145841c492 100644
@@ -23,6 +23,7 @@ CONFIG_CMD_FPGA_LOADFS=y
 CONFIG_CMD_FPGA_LOADMK=y
 CONFIG_CMD_FPGA_LOADP=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
Signature · 1 line
2.19.1
author maintainer
#47 lore raw

PATCH v3 15/28 mtd: ensure MTD is compiled when CMD_MTDPARTS is selected

In reply to Miquel Raynal

MTD support must be enabled when using mtdparts. Indeed, functions like get_mtd_info(), get_mtd_device() and put_mtd_device() are in drivers/mtd/mtd_uboot.c and are built only with CONFIG_MTD.

---
 configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig | 1 +
 configs/BSC9131RDB_SPIFLASH_defconfig           | 1 +
 configs/lion-rk3368_defconfig                   | 1 +
 configs/sandbox64_defconfig                     | 1 +
 configs/sandbox_defconfig                       | 1 +
 5 files changed, 5 insertions(+)
configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig +1 -0
index 2d3c3d6128..6fad3e0936 100644
@@ -26,6 +26,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=ff800000.flash:1m(uboot),8m(kernel),512k(dtb),
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_PHY_MARVELL=y
configs/BSC9131RDB_SPIFLASH_defconfig +1 -0
index 5a9f10d6c7..390eaa14d9 100644
@@ -26,6 +26,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=ff800000.flash:1m(uboot),8m(kernel),512k(dtb),
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_PHY_MARVELL=y
configs/lion-rk3368_defconfig +1 -0
index 2b61922ff5..9b2e951fbe 100644
@@ -68,6 +68,7 @@ CONFIG_TPL_CLK=y
 CONFIG_ROCKCHIP_GPIO=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
configs/sandbox64_defconfig +1 -0
index e6680d9a59..b7e789e04d 100644
@@ -115,6 +115,7 @@ CONFIG_PWRSEQ=y
 CONFIG_SPL_PWRSEQ=y
 CONFIG_I2C_EEPROM=y
 CONFIG_MMC_SANDBOX=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH_SANDBOX=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
configs/sandbox_defconfig +1 -0
index 5a744f4791..8b023321b9 100644
@@ -120,6 +120,7 @@ CONFIG_PWRSEQ=y
 CONFIG_SPL_PWRSEQ=y
 CONFIG_I2C_EEPROM=y
 CONFIG_MMC_SANDBOX=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH_SANDBOX=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
Signature · 1 line
2.19.1
#48 lore raw

PATCH v3 15/28 mtd: ensure MTD is compiled when CMD_MTDPARTS is selected

Quoted 5 lines · On Wed, 5 Dec 2018 00:57:01 +0100 Miquel Raynal <[email protected]>…

MTD support must be enabled when using mtdparts. Indeed, functions like get_mtd_info(), get_mtd_device() and put_mtd_device() are in drivers/mtd/mtd_uboot.c and are built only with CONFIG_MTD.

author maintainer
#49 lore raw

PATCH v3 16/28 configs: move CONFIG_MTD in defconfigs when set in arch includes

In reply to Miquel Raynal

Let's be consistent and always declare CONFIG_MTD from the defconfig file when needed.

---
 configs/socfpga_stratix10_defconfig       | 1 +
 configs/turris_mox_defconfig              | 1 +
 include/configs/mvebu_armada-37xx.h       | 1 -
 include/configs/socfpga_stratix10_socdk.h | 1 -
 4 files changed, 2 insertions(+), 2 deletions(-)
configs/socfpga_stratix10_defconfig +1 -0
index 5f3d733a8b..292dbd6973 100644
@@ -38,6 +38,7 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
configs/turris_mox_defconfig +1 -0
index 749ed31acd..13e2af7e1b 100644
@@ -42,6 +42,7 @@ CONFIG_DM_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_XENON=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
include/configs/mvebu_armada-37xx.h +0 -1
index f93ab0f830..640267c9c2 100644
@@ -64,7 +64,6 @@
 #define CONFIG_SF_DEFAULT_SPEED		1000000
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
 #define CONFIG_ENV_SPI_MODE		CONFIG_SF_DEFAULT_MODE
-#define CONFIG_MTD			/* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS		/* required for UBI partition support */
 
 /* Environment in SPI NOR flash */
include/configs/socfpga_stratix10_socdk.h +0 -1
index 22e1dc84a1..967784e379 100644
@@ -76,7 +76,6 @@
 #endif /* CONFIG_ENV_IS_IN_SPI_FLASH */
 
 #ifndef CONFIG_SPL_BUILD
-#define CONFIG_MTD
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT			"nor0=ff705000.spi.0"
 #endif /* CONFIG_SPL_BUILD */
Signature · 1 line
2.19.1
#50 lore raw

PATCH v3 16/28 configs: move CONFIG_MTD in defconfigs when set in arch includes

Quoted 4 lines · On Wed, 5 Dec 2018 00:57:02 +0100 Miquel Raynal <[email protected]>…

Let's be consistent and always declare CONFIG_MTD from the defconfig file when needed.

One comment below.

Quoted 48 lines
---
 configs/socfpga_stratix10_defconfig       | 1 +
 configs/turris_mox_defconfig              | 1 +
 include/configs/mvebu_armada-37xx.h       | 1 -
 include/configs/socfpga_stratix10_socdk.h | 1 -
 4 files changed, 2 insertions(+), 2 deletions(-)
configs/socfpga_stratix10_defconfig +1 -0
index 5f3d733a8b..292dbd6973 100644
@@ -38,6 +38,7 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
configs/turris_mox_defconfig +1 -0
index 749ed31acd..13e2af7e1b 100644
@@ -42,6 +42,7 @@ CONFIG_DM_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_XENON=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
include/configs/mvebu_armada-37xx.h +0 -1
index f93ab0f830..640267c9c2 100644
@@ -64,7 +64,6 @@
 #define CONFIG_SF_DEFAULT_SPEED		1000000
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
 #define CONFIG_ENV_SPI_MODE		CONFIG_SF_DEFAULT_MODE
-#define CONFIG_MTD			/* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS		/* required for UBI partition support */
 
 /* Environment in SPI NOR flash */
include/configs/socfpga_stratix10_socdk.h +0 -0
index 22e1dc84a1..967784e379 100644

include/configs/socfpga_stratix10_socdk.h line 79

Quoted 5 lines
include/configs/socfpga_stratix10_socdk.h +0 -1
@@ -76,7 +76,6 @@
 #endif /* CONFIG_ENV_IS_IN_SPI_FLASH */
 
 #ifndef CONFIG_SPL_BUILD
-#define CONFIG_MTD
 #define CONFIG_MTD_PARTITIONS

Do you get rid of CONFIG_MTD_PARTITIONS at some point?

Quoted 2 lines
include/configs/socfpga_stratix10_socdk.h +0 -0
 #define MTDIDS_DEFAULT			"nor0=ff705000.spi.0"
 #endif /* CONFIG_SPL_BUILD */
author maintainer
#51 lore raw

PATCH v3 16/28 configs: move CONFIG_MTD in defconfigs when set in arch includes

Hi Boris,

Boris Brezillon <[email protected]> wrote on Wed, 5 Dec 2018 11:17:28 +0100:

Quoted 62 lines
Quoted 4 lines · On Wed, 5 Dec 2018 00:57:02 +0100 Miquel Raynal <[email protected]>…

Let's be consistent and always declare CONFIG_MTD from the defconfig file when needed.

One comment below.

Quoted 50 lines
---
 configs/socfpga_stratix10_defconfig       | 1 +
 configs/turris_mox_defconfig              | 1 +
 include/configs/mvebu_armada-37xx.h       | 1 -
 include/configs/socfpga_stratix10_socdk.h | 1 -
 4 files changed, 2 insertions(+), 2 deletions(-)
configs/socfpga_stratix10_defconfig +1 -0
index 5f3d733a8b..292dbd6973 100644
@@ -38,6 +38,7 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
configs/turris_mox_defconfig +1 -0
index 749ed31acd..13e2af7e1b 100644
@@ -42,6 +42,7 @@ CONFIG_DM_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_XENON=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
include/configs/mvebu_armada-37xx.h +0 -1
index f93ab0f830..640267c9c2 100644
@@ -64,7 +64,6 @@
 #define CONFIG_SF_DEFAULT_SPEED		1000000
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
 #define CONFIG_ENV_SPI_MODE		CONFIG_SF_DEFAULT_MODE
-#define CONFIG_MTD			/* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS		/* required for UBI partition support */
 
 /* Environment in SPI NOR flash */
include/configs/socfpga_stratix10_socdk.h +0 -0
index 22e1dc84a1..967784e379 100644
@@ -76,7 +76,6 @@
 #endif /* CONFIG_ENV_IS_IN_SPI_FLASH */
 
Quoted 5 lines

include/configs/socfpga_stratix10_socdk.h line 79

Quoted 3 lines
include/configs/socfpga_stratix10_socdk.h +0 -1
 #ifndef CONFIG_SPL_BUILD
-#define CONFIG_MTD
 #define CONFIG_MTD_PARTITIONS  

Do you get rid of CONFIG_MTD_PARTITIONS at some point?

Not anymore, but I could probably add a patch for that.

Quoted 4 lines

include/configs/socfpga_stratix10_socdk.h line 81

Quoted 3 lines
include/configs/socfpga_stratix10_socdk.h +0 -0
 #define MTDIDS_DEFAULT			"nor0=ff705000.spi.0"
 #endif /* CONFIG_SPL_BUILD */  

Thanks,
Miquèl

author maintainer
#52 lore raw

PATCH v3 16/28 configs: move CONFIG_MTD in defconfigs when set in arch includes

In reply to Boris Brezillon

Hi Boris,

Boris Brezillon <[email protected]> wrote on Wed, 5 Dec 2018 11:17:28 +0100:

Quoted 62 lines
Quoted 4 lines · On Wed, 5 Dec 2018 00:57:02 +0100 Miquel Raynal <[email protected]>…

Let's be consistent and always declare CONFIG_MTD from the defconfig file when needed.

One comment below.

Quoted 50 lines
---
 configs/socfpga_stratix10_defconfig       | 1 +
 configs/turris_mox_defconfig              | 1 +
 include/configs/mvebu_armada-37xx.h       | 1 -
 include/configs/socfpga_stratix10_socdk.h | 1 -
 4 files changed, 2 insertions(+), 2 deletions(-)
configs/socfpga_stratix10_defconfig +1 -0
index 5f3d733a8b..292dbd6973 100644
@@ -38,6 +38,7 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
configs/turris_mox_defconfig +1 -0
index 749ed31acd..13e2af7e1b 100644
@@ -42,6 +42,7 @@ CONFIG_DM_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_XENON=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
include/configs/mvebu_armada-37xx.h +0 -1
index f93ab0f830..640267c9c2 100644
@@ -64,7 +64,6 @@
 #define CONFIG_SF_DEFAULT_SPEED		1000000
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
 #define CONFIG_ENV_SPI_MODE		CONFIG_SF_DEFAULT_MODE
-#define CONFIG_MTD			/* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS		/* required for UBI partition support */
 
 /* Environment in SPI NOR flash */
include/configs/socfpga_stratix10_socdk.h +0 -0
index 22e1dc84a1..967784e379 100644
@@ -76,7 +76,6 @@
 #endif /* CONFIG_ENV_IS_IN_SPI_FLASH */
 
Quoted 5 lines

include/configs/socfpga_stratix10_socdk.h line 79

Quoted 3 lines
include/configs/socfpga_stratix10_socdk.h +0 -1
 #ifndef CONFIG_SPL_BUILD
-#define CONFIG_MTD
 #define CONFIG_MTD_PARTITIONS  

Do you get rid of CONFIG_MTD_PARTITIONS at some point?

Not anymore. I know it would be preferable to push all MTD configurations in defconfigs but precisely in this case the definition is enclosed in a "#ifndef CONFIG_SPL_BUILD" condition, which makes the move to defconfig inconsistent. This is the reason why I decided to keep this definition in header files for now (another one in Armada 37xx header).

Quoted 4 lines

include/configs/socfpga_stratix10_socdk.h line 81

Quoted 3 lines
include/configs/socfpga_stratix10_socdk.h +0 -0
 #define MTDIDS_DEFAULT			"nor0=ff705000.spi.0"
 #endif /* CONFIG_SPL_BUILD */  

Thanks,
Miquèl

author maintainer
#53 lore raw

PATCH v3 17/28 configs: remove raw NAND core from k2g defconfigs

In reply to Miquel Raynal

Due to previous Makefile organization, the raw NAND subdirectory was not compiled in if CMD_NAND was not enabled. Because the Denali driver does not compile with these boards (undefined environment offset), remove the dependency within the defconfig over the controller driver (was ignored anyway in the past).

---
 configs/k2g_evm_defconfig    | 1 -
 configs/k2g_hs_evm_defconfig | 1 -
 2 files changed, 2 deletions(-)
configs/k2g_evm_defconfig +0 -1
index dee00ec8d4..b474781ccb 100644
@@ -41,7 +41,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
-CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
configs/k2g_hs_evm_defconfig +0 -1
index b8c395d78d..a50a7abf30 100644
@@ -34,7 +34,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
-CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
Signature · 1 line
2.19.1
#54 lore raw

PATCH v3 17/28 configs: remove raw NAND core from k2g defconfigs

Quoted 5 lines · On Wed, 5 Dec 2018 00:57:03 +0100 Miquel Raynal <[email protected]>…

Due to previous Makefile organization, the raw NAND subdirectory was not compiled in if CMD_NAND was not enabled. Because the Denali driver does not compile with these boards (undefined environment offset), remove the dependency within the defconfig over the controller driver (was ignored anyway in the past).

Maybe this should be moved before the Makefile re-organization if this the build of those defconfigs.

Quoted 31 lines
---
 configs/k2g_evm_defconfig    | 1 -
 configs/k2g_hs_evm_defconfig | 1 -
 2 files changed, 2 deletions(-)
configs/k2g_evm_defconfig +0 -1
index dee00ec8d4..b474781ccb 100644
@@ -41,7 +41,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
-CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
configs/k2g_hs_evm_defconfig +0 -1
index b8c395d78d..a50a7abf30 100644
@@ -34,7 +34,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_RAW_NAND=y
-CONFIG_NAND_DAVINCI=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
author maintainer
#55 lore raw

PATCH v3 17/28 configs: remove raw NAND core from k2g defconfigs

Hi Boris,

Boris Brezillon <[email protected]> wrote on Wed, 5 Dec 2018 11:19:49 +0100:

Quoted 11 lines
Quoted 5 lines · On Wed, 5 Dec 2018 00:57:03 +0100 Miquel Raynal <[email protected]>…

Due to previous Makefile organization, the raw NAND subdirectory was not compiled in if CMD_NAND was not enabled. Because the Denali driver does not compile with these boards (undefined environment offset), remove the dependency within the defconfig over the controller driver (was ignored anyway in the past).

Maybe this should be moved before the Makefile re-organization if this the build of those defconfigs.

I will move the first Makefile change at the end and probably squash it with the two others, so this will happen before any Makefile change.

Thanks,
Miquèl

author maintainer
#56 lore raw

PATCH v3 18/28 configs: remove MTD support from bcm11130 and M54418TWR defconfigs

In reply to Miquel Raynal

While the right Kconfig entries were selected, because of the missing CMD_NAND symbol the raw NAND core was never compiled. Remove it from the defconfigs otherwise the build will fail.

---
 configs/M54418TWR_nand_mii_defconfig          | 1 -
 configs/M54418TWR_nand_rmii_defconfig         | 1 -
 configs/M54418TWR_nand_rmii_lowfreq_defconfig | 1 -
 configs/bcm11130_nand_defconfig               | 2 --
 4 files changed, 5 deletions(-)
configs/M54418TWR_nand_mii_defconfig +0 -1
index f05e340543..7ed71936fa 100644
@@ -20,7 +20,6 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_MTD=y
-CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_MII=y
configs/M54418TWR_nand_rmii_defconfig +0 -1
index 5f958e0333..1aed7bec95 100644
@@ -20,7 +20,6 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_MTD=y
-CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_MII=y
configs/M54418TWR_nand_rmii_lowfreq_defconfig +0 -1
index 8889e7cd4d..36e145ad0e 100644
@@ -20,7 +20,6 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_MTD=y
-CONFIG_MTD_RAW_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_MII=y
configs/bcm11130_nand_defconfig +0 -2
index 7dc8057670..2914b6a710 100644
@@ -24,8 +24,6 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_KONA=y
-CONFIG_MTD=y
-CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_GADGET=y
Signature · 1 line
2.19.1
#57 lore raw

PATCH v3 18/28 configs: remove MTD support from bcm11130 and M54418TWR defconfigs

Quoted 3 lines · On Wed, 5 Dec 2018 00:57:04 +0100 Miquel Raynal <[email protected]>…

While the right Kconfig entries were selected, because of the missing CMD_NAND symbol the raw NAND core was never compiled. Remove it from the defconfigs otherwise the build will fail.

See my comment on patch 17.

author maintainer
#58 lore raw

PATCH v3 19/28 mtd: nand: add includes in NAND core to avoid warnings

In reply to Miquel Raynal

Because of the include's game, when some files are compiled for a SPI NAND device, no warning appears. But when it is for a raw NAND device, GCC complains. Fix these warning by including <common.h>.

---
 drivers/mtd/nand/bbt.c  | 1 +
 drivers/mtd/nand/core.c | 1 +
 2 files changed, 2 insertions(+)
drivers/mtd/nand/bbt.c +1 -0
index 7e0ad3190c..f3d05e6757 100644
@@ -9,6 +9,7 @@
 
 #define pr_fmt(fmt)	"nand-bbt: " fmt
 
+#include <common.h>
 #include <linux/mtd/nand.h>
 #ifndef __UBOOT__
 #include <linux/slab.h>
drivers/mtd/nand/core.c +1 -0
index 0b793695cc..3abaef23c5 100644
@@ -9,6 +9,7 @@
 
 #define pr_fmt(fmt)	"nand: " fmt
 
+#include <common.h>
 #ifndef __UBOOT__
 #include <linux/module.h>
 #endif
Signature · 1 line
2.19.1
#59 lore raw

PATCH v3 19/28 mtd: nand: add includes in NAND core to avoid warnings

Quoted 5 lines · On Wed, 5 Dec 2018 00:57:05 +0100 Miquel Raynal <[email protected]>…

Because of the include's game, when some files are compiled for a SPI NAND device, no warning appears. But when it is for a raw NAND device, GCC complains. Fix these warning by including <common.h>.

Quoted 29 lines
---
 drivers/mtd/nand/bbt.c  | 1 +
 drivers/mtd/nand/core.c | 1 +
 2 files changed, 2 insertions(+)
drivers/mtd/nand/bbt.c +1 -0
index 7e0ad3190c..f3d05e6757 100644
@@ -9,6 +9,7 @@
 
 #define pr_fmt(fmt)	"nand-bbt: " fmt
 
+#include <common.h>
 #include <linux/mtd/nand.h>
 #ifndef __UBOOT__
 #include <linux/slab.h>
drivers/mtd/nand/core.c +1 -0
index 0b793695cc..3abaef23c5 100644
@@ -9,6 +9,7 @@
 
 #define pr_fmt(fmt)	"nand: " fmt
 
+#include <common.h>
 #ifndef __UBOOT__
 #include <linux/module.h>
 #endif
author maintainer
#60 lore raw

PATCH v3 20/28 dfu: add dependency on the NAND core

In reply to Miquel Raynal

CONFIG_DFU_NAND needs the NAND core being compiled.

Also fix the colibri_vf defconfig to reflect this dependency.

---
 configs/colibri_vf_defconfig | 1 +
 drivers/dfu/Kconfig          | 1 +
 2 files changed, 2 insertions(+)
configs/colibri_vf_defconfig +1 -0
index 305dfcccb5..73b7055de1 100644
@@ -50,6 +50,7 @@ CONFIG_FSL_ESDHC=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_VF610_NFC_60_ECC_BYTES=y
 CONFIG_MTD=y
+CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHYLIB=y
drivers/dfu/Kconfig +1 -0
index 4692736c9d..5ee260913c 100644
@@ -31,6 +31,7 @@ config DFU_MMC
 config DFU_NAND
 	bool "NAND back end for DFU"
 	depends on CMD_MTDPARTS
+	depends on MTD_RAW_NAND
 	help
 	  This option enables using DFU to read and write to NAND based
 	  storage.
Signature · 1 line
2.19.1
#61 lore raw

PATCH v3 20/28 dfu: add dependency on the NAND core

Quoted 5 lines · On Wed, 5 Dec 2018 00:57:06 +0100 Miquel Raynal <[email protected]>…

CONFIG_DFU_NAND needs the NAND core being compiled.

Also fix the colibri_vf defconfig to reflect this dependency.

BTW, it would be great to have an MTD backend instead of having one per type of flash ;-).

Quoted 29 lines
---
 configs/colibri_vf_defconfig | 1 +
 drivers/dfu/Kconfig          | 1 +
 2 files changed, 2 insertions(+)
configs/colibri_vf_defconfig +1 -0
index 305dfcccb5..73b7055de1 100644
@@ -50,6 +50,7 @@ CONFIG_FSL_ESDHC=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_VF610_NFC_60_ECC_BYTES=y
 CONFIG_MTD=y
+CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHYLIB=y
drivers/dfu/Kconfig +1 -0
index 4692736c9d..5ee260913c 100644
@@ -31,6 +31,7 @@ config DFU_MMC
 config DFU_NAND
 	bool "NAND back end for DFU"
 	depends on CMD_MTDPARTS
+	depends on MTD_RAW_NAND
 	help
 	  This option enables using DFU to read and write to NAND based
 	  storage.
author maintainer
#62 lore raw

PATCH v3 21/28 mtd: nor: NOR flashes depend on MTD

In reply to Miquel Raynal

A NOR flash needs the MTD core, ensure this dependency is met by adding a "depends on" in Kconfig. This is fine since defconfigs have been fixed.

---
 drivers/mtd/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/mtd/Kconfig +1 -0
index 345046c2a6..0832f5b411 100644
@@ -19,6 +19,7 @@ config DM_MTD
 
 config MTD_NOR_FLASH
 	bool "Enable parallel NOR flash support"
+	depends on MTD
 	help
 	  Enable support for parallel NOR flash.
 
Signature · 1 line
2.19.1
#63 lore raw

PATCH v3 21/28 mtd: nor: NOR flashes depend on MTD

Quoted 14 lines · On Wed, 5 Dec 2018 00:57:07 +0100 Miquel Raynal <[email protected]>…

A NOR flash needs the MTD core, ensure this dependency is met by adding a "depends on" in Kconfig. This is fine since defconfigs have been fixed.

---
 drivers/mtd/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/mtd/Kconfig +0 -0
index 345046c2a6..0832f5b411 100644

drivers/mtd/Kconfig config DM_MTD · line 25

Quoted 7 lines
drivers/mtd/Kconfig +1 -0
@@ -19,6 +19,7 @@ config DM_MTD
 
 config MTD_NOR_FLASH
 	bool "Enable parallel NOR flash support"
+	depends on MTD
 	help
 	  Enable support for parallel NOR flash.
 

Don't know if this applies here, but if you have almost all options in Kconfig that depend on MTD, you can add an

if MTD
endif

section.

author maintainer
#64 lore raw

PATCH v3 21/28 mtd: nor: NOR flashes depend on MTD

Hi Boris,

Boris Brezillon <[email protected]> wrote on Wed, 5 Dec 2018 11:31:44 +0100:

Quoted 28 lines
Quoted 14 lines · On Wed, 5 Dec 2018 00:57:07 +0100 Miquel Raynal <[email protected]>…

A NOR flash needs the MTD core, ensure this dependency is met by adding a "depends on" in Kconfig. This is fine since defconfigs have been fixed.

---
 drivers/mtd/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/mtd/Kconfig +0 -0
index 345046c2a6..0832f5b411 100644

drivers/mtd/Kconfig config DM_MTD · line 25

Quoted 7 lines
drivers/mtd/Kconfig +1 -0
@@ -19,6 +19,7 @@ config DM_MTD
 
 config MTD_NOR_FLASH
 	bool "Enable parallel NOR flash support"
+	depends on MTD
 	help
 	  Enable support for parallel NOR flash.
 

Don't know if this applies here, but if you have almost all options in Kconfig that depend on MTD, you can add an

Quoted 4 lines

if MTD
endif

section.

Unfortunately, not yet. There are still a lot of MTD drivers that do not rely (at least in Kconfig) on CONFIG_MTD. This is inconsistent and should be fixed. I don't think I will do it in this series though.

Thanks,
Miquèl

#65 lore raw

PATCH v3 21/28 mtd: nor: NOR flashes depend on MTD

In reply to Miquel Raynal

Dear Miquel Raynal,

Quoted 3 lines · In message <[email protected]> you wrote:

A NOR flash needs the MTD core, ensure this dependency is met by adding a "depends on" in Kconfig. This is fine since defconfigs have been fixed.

If such a dependeny exists, it must be fixed. This is not acceptable.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A fail-safe circuit will destroy others.                 -- Klipstein
author maintainer
#66 lore raw

PATCH v3 22/28 mtd: nand: remove dependency on commands in Kconfig

In reply to Miquel Raynal

Now that the defconfigs have been fixed, remove the dependencies on commands in Kconfig. The necessary symbols are enabled so this will not break anything.

---
 drivers/mtd/nand/Makefile | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/mtd/nand/Makefile +1 -3
index 99ca69ef95..e5849dc02a 100644
@@ -2,7 +2,5 @@
 
 nandcore-objs := core.o bbt.o
 obj-$(CONFIG_MTD_NAND_CORE) += nandcore.o
-ifneq (,$(findstring y,$(CONFIG_CMD_NAND)$(CONFIG_CMD_MTD)))
-obj-y += raw/
-endif
+obj-$(CONFIG_MTD_RAW_NAND) += raw/
 obj-$(CONFIG_MTD_SPI_NAND) += spi/
Signature · 1 line
2.19.1
#67 lore raw

PATCH v3 22/28 mtd: nand: remove dependency on commands in Kconfig

Quoted 2 lines · On Wed, 5 Dec 2018 00:57:08 +0100 Miquel Raynal <[email protected]>…

Now that the defconfigs have been fixed, remove the dependencies on commands in Kconfig.

That's not what I'm seeing in this diff ;-).

Quoted 21 lines

The necessary symbols are enabled so this will
not break anything.

---
 drivers/mtd/nand/Makefile | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/mtd/nand/Makefile +1 -3
index 99ca69ef95..e5849dc02a 100644
@@ -2,7 +2,5 @@
 
 nandcore-objs := core.o bbt.o
 obj-$(CONFIG_MTD_NAND_CORE) += nandcore.o
-ifneq (,$(findstring y,$(CONFIG_CMD_NAND)$(CONFIG_CMD_MTD)))
-obj-y += raw/
-endif
+obj-$(CONFIG_MTD_RAW_NAND) += raw/
 obj-$(CONFIG_MTD_SPI_NAND) += spi/
author maintainer
#68 lore raw

PATCH v3 23/28 mtd: ubi: remove dependency on command in Kconfig

In reply to Miquel Raynal

Now that the defconfigs have been fixed, remove the dependencies on commands in Kconfig. The necessary symbols are enabled so this will not break anything.

---
 drivers/mtd/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mtd/Makefile +1 -1
index 486634b562..68b1029734 100644
@@ -24,5 +24,5 @@ ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
 obj-y += nand/
 obj-y += onenand/
 obj-y += spi/
-obj-$(CONFIG_CMD_UBI) += ubi/
+obj-$(CONFIG_MTD_UBI) += ubi/
 endif
Signature · 1 line
2.19.1
#69 lore raw

PATCH v3 23/28 mtd: ubi: remove dependency on command in Kconfig

Quoted 2 lines · On Wed, 5 Dec 2018 00:57:09 +0100 Miquel Raynal <[email protected]>…

Now that the defconfigs have been fixed, remove the dependencies on commands in Kconfig.

No changes in Kconfig in this patch.

Quoted 19 lines

The necessary symbols are enabled so this will
not break anything.

---
 drivers/mtd/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mtd/Makefile +1 -1
index 486634b562..68b1029734 100644
@@ -24,5 +24,5 @@ ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
 obj-y += nand/
 obj-y += onenand/
 obj-y += spi/
-obj-$(CONFIG_CMD_UBI) += ubi/
+obj-$(CONFIG_MTD_UBI) += ubi/
 endif
author maintainer
#70 lore raw

PATCH v3 24/28 cmd: mtdparts: show Kconfig options only if the command is selected

In reply to Miquel Raynal

Guard mtdparts options with an if/endif statement in Kconfig. Also move the Kconfig entry of the option right after the entry of the command.

---
 cmd/Kconfig | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)
cmd/Kconfig +11 -10
index bf9cc0c52d..cf58174013 100644
@@ -1741,6 +1741,17 @@ config CMD_MTDPARTS
 	  declare the partitions in the mtdparts environment variable
 	  but better use the MTD stack and the 'mtd' command instead.
 
+if CMD_MTDPARTS
+config CMD_MTDPARTS_SPREAD
+	bool "Padd partition size to take account of bad blocks"
+	help
+	  This enables the 'spread' sub-command of the mtdparts command.
+	  This command will modify the existing mtdparts variable by increasing
+	  the size of the partitions such that 1) each partition's net size is
+	  at least as large as the size specified in the mtdparts variable and
+	  2) each partition starts on a good block.
+endif
+
 config MTDIDS_DEFAULT
 	string "Default MTD IDs"
 	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
@@ -1755,16 +1766,6 @@ config MTDPARTS_DEFAULT
 	  Defines a default MTD partitioning scheme in the Linux MTD command
 	  line partitions format
 
-config CMD_MTDPARTS_SPREAD
-	bool "Padd partition size to take account of bad blocks"
-	depends on CMD_MTDPARTS
-	help
-	  This enables the 'spread' sub-command of the mtdparts command.
-	  This command will modify the existing mtdparts variable by increasing
-	  the size of the partitions such that 1) each partition's net size is
-	  at least as large as the size specified in the mtdparts variable and
-	  2) each partition starts on a good block.
-
 config CMD_REISER
 	bool "reiser - Access to reiserfs filesystems"
 	help
Signature · 1 line
2.19.1
#71 lore raw

PATCH v3 24/28 cmd: mtdparts: show Kconfig options only if the command is selected

Quoted 14 lines · On Wed, 5 Dec 2018 00:57:10 +0100 Miquel Raynal <[email protected]>…

Guard mtdparts options with an if/endif statement in Kconfig. Also move the Kconfig entry of the option right after the entry of the command.

---
 cmd/Kconfig | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)
cmd/Kconfig +0 -0
index bf9cc0c52d..cf58174013 100644

cmd/Kconfig config CMD_MTDPARTS · line 1746

Quoted 6 lines
cmd/Kconfig +3 -0
@@ -1741,6 +1741,17 @@ config CMD_MTDPARTS
 	  declare the partitions in the mtdparts environment variable
 	  but better use the MTD stack and the 'mtd' command instead.
 
+if CMD_MTDPARTS
+config CMD_MTDPARTS_SPREAD
+	bool "Padd partition size to take account of bad blocks"

We usually use "depends on" in such cases

depends on CMD_MTDPARTS

Quoted 28 lines
cmd/Kconfig +8 -10
+	help
+	  This enables the 'spread' sub-command of the mtdparts command.
+	  This command will modify the existing mtdparts variable by increasing
+	  the size of the partitions such that 1) each partition's net size is
+	  at least as large as the size specified in the mtdparts variable and
+	  2) each partition starts on a good block.
+endif
+
 config MTDIDS_DEFAULT
 	string "Default MTD IDs"
 	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
@@ -1755,16 +1766,6 @@ config MTDPARTS_DEFAULT
 	  Defines a default MTD partitioning scheme in the Linux MTD command
 	  line partitions format
 
-config CMD_MTDPARTS_SPREAD
-	bool "Padd partition size to take account of bad blocks"
-	depends on CMD_MTDPARTS
-	help
-	  This enables the 'spread' sub-command of the mtdparts command.
-	  This command will modify the existing mtdparts variable by increasing
-	  the size of the partitions such that 1) each partition's net size is
-	  at least as large as the size specified in the mtdparts variable and
-	  2) each partition starts on a good block.
-
 config CMD_REISER
 	bool "reiser - Access to reiserfs filesystems"
 	help
author maintainer
#72 lore raw

PATCH v3 25/28 cmd: nand/sf: isolate legacy code

In reply to Miquel Raynal

The 'sf' command is not supposed to rely on the MTD stack, but both 'sf' and 'nand' commands use helpers located in mtd_uboot.c. Despite their location, these functions do not depend at all on the MTD stack.

This file (drivers/mtd/mtd_uboot.c) is only compiled if CONFIG_MTD is selected, which is incoherent with the current situation. Solve this by mobing these three functions (which are only used by the above two commands) out of mtd_uboot.c and put them in a C file only compiled with cmd/sf.c and cmd/nand.c.

---
 cmd/Makefile            |  4 +-
 cmd/legacy-mtd-utils.c  | 99 +++++++++++++++++++++++++++++++++++++++++
 cmd/legacy-mtd-utils.h  | 14 ++++++
 cmd/nand.c              |  2 +
 cmd/sf.c                |  2 +
 drivers/mtd/mtd_uboot.c | 94 --------------------------------------
 include/linux/mtd/mtd.h |  6 ---
 7 files changed, 119 insertions(+), 102 deletions(-)
 create mode 100644 cmd/legacy-mtd-utils.c
 create mode 100644 cmd/legacy-mtd-utils.h
cmd/Makefile +2 -2
index 0534ddc679..54c54c062d 100644
@@ -94,7 +94,7 @@ obj-$(CONFIG_CMD_MMC_SPI) += mmc_spi.o
 obj-$(CONFIG_MP) += mp.o
 obj-$(CONFIG_CMD_MTD) += mtd.o
 obj-$(CONFIG_CMD_MTDPARTS) += mtdparts.o
-obj-$(CONFIG_CMD_NAND) += nand.o
+obj-$(CONFIG_CMD_NAND) += nand.o legacy-mtd-utils.o
 obj-$(CONFIG_CMD_NET) += net.o
 obj-$(CONFIG_CMD_ONENAND) += onenand.o
 obj-$(CONFIG_CMD_OSD) += osd.o
@@ -115,7 +115,7 @@ obj-$(CONFIG_CMD_ROCKUSB) += rockusb.o
 obj-$(CONFIG_SANDBOX) += host.o
 obj-$(CONFIG_CMD_SATA) += sata.o
 obj-$(CONFIG_CMD_NVME) += nvme.o
-obj-$(CONFIG_CMD_SF) += sf.o
+obj-$(CONFIG_CMD_SF) += sf.o legacy-mtd-utils.o
 obj-$(CONFIG_CMD_SCSI) += scsi.o disk.o
 obj-$(CONFIG_CMD_SHA1SUM) += sha1sum.o
 obj-$(CONFIG_CMD_SETEXPR) += setexpr.o
cmd/legacy-mtd-utils.c new file +99 -0

99 lines not on this page · raw message

cmd/legacy-mtd-utils.h new file +14 -0
new file mode 100644
index 0000000000..b31342bcb7
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+
+#ifndef __LEGACY_MTD_UTILS_H
+#define __LEGACY_MTD_UTILS_H
+
+int get_part(const char *partname, int *idx, loff_t *off, loff_t *size,
+	     loff_t *maxsize, int devtype);
+int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size,
+		loff_t *maxsize, int devtype, uint64_t chipsize);
+int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off,
+		     loff_t *size, loff_t *maxsize, int devtype,
+		     uint64_t chipsize);
+
+#endif /* LEGACY_MTD_UTILS_H */
cmd/nand.c +2 -0
index a22945d144..018c8a7758 100644
@@ -29,6 +29,8 @@
 #include <jffs2/jffs2.h>
 #include <nand.h>
 
+#include "legacy-mtd-utils.h"
+
 #if defined(CONFIG_CMD_MTDPARTS)
 
 /* partition handling routines */
cmd/sf.c +2 -0
index 84bb0575f2..3fe906fa3b 100644
@@ -18,6 +18,8 @@
 #include <asm/io.h>
 #include <dm/device-internal.h>
 
+#include "legacy-mtd-utils.h"
+
 static struct spi_flash *flash;
 
 /*
drivers/mtd/mtd_uboot.c +0 -94

103 lines not on this page · raw message

include/linux/mtd/mtd.h +0 -6
index 68e5915324..e844ce4cb6 100644
@@ -571,12 +571,6 @@ struct mtd_info *__mtd_next_device(int i);
 	     (mtd) != NULL;				\
 	     (mtd) = __mtd_next_device(mtd->index + 1))
 
-int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size,
-		loff_t *maxsize, int devtype, uint64_t chipsize);
-int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off,
-		     loff_t *size, loff_t *maxsize, int devtype,
-		     uint64_t chipsize);
-
 /* drivers/mtd/mtdcore.c */
 void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,
 			  const uint64_t length, uint64_t *len_incl_bad,
Signature · 1 line
2.19.1
#73 lore raw

PATCH v3 25/28 cmd: nand/sf: isolate legacy code

Quoted 7 lines · On Wed, 5 Dec 2018 00:57:11 +0100 Miquel Raynal <[email protected]>…

The 'sf' command is not supposed to rely on the MTD stack, but both 'sf' and 'nand' commands use helpers located in mtd_uboot.c. Despite their location, these functions do not depend at all on the MTD stack.

This file (drivers/mtd/mtd_uboot.c) is only compiled if CONFIG_MTD is selected, which is incoherent with the current situation. Solve this

^inconsistent

Quoted 1 line

by mobing these three functions (which are only used by the above two

^ moving

Quoted 30 lines

commands) out of mtd_uboot.c and put them in a C file only compiled with cmd/sf.c and cmd/nand.c.

---
 cmd/Makefile            |  4 +-
 cmd/legacy-mtd-utils.c  | 99 +++++++++++++++++++++++++++++++++++++++++
 cmd/legacy-mtd-utils.h  | 14 ++++++
 cmd/nand.c              |  2 +
 cmd/sf.c                |  2 +
 drivers/mtd/mtd_uboot.c | 94 --------------------------------------
 include/linux/mtd/mtd.h |  6 ---
 7 files changed, 119 insertions(+), 102 deletions(-)
 create mode 100644 cmd/legacy-mtd-utils.c
 create mode 100644 cmd/legacy-mtd-utils.h
cmd/Makefile +1 -1
index 0534ddc679..54c54c062d 100644
@@ -94,7 +94,7 @@ obj-$(CONFIG_CMD_MMC_SPI) += mmc_spi.o
 obj-$(CONFIG_MP) += mp.o
 obj-$(CONFIG_CMD_MTD) += mtd.o
 obj-$(CONFIG_CMD_MTDPARTS) += mtdparts.o
-obj-$(CONFIG_CMD_NAND) += nand.o
+obj-$(CONFIG_CMD_NAND) += nand.o legacy-mtd-utils.o
 obj-$(CONFIG_CMD_NET) += net.o
 obj-$(CONFIG_CMD_ONENAND) += onenand.o
 obj-$(CONFIG_CMD_OSD) += osd.o

cmd/Makefile obj-$(CONFIG_CMD_ROCKUSB) += rockusb.o · line 118

Quoted 5 lines
cmd/Makefile +1 -1
@@ -115,7 +115,7 @@ obj-$(CONFIG_CMD_ROCKUSB) += rockusb.o
 obj-$(CONFIG_SANDBOX) += host.o
 obj-$(CONFIG_CMD_SATA) += sata.o
 obj-$(CONFIG_CMD_NVME) += nvme.o
-obj-$(CONFIG_CMD_SF) += sf.o
+obj-$(CONFIG_CMD_SF) += sf.o legacy-mtd-utils.o

That won't work if you enable both CMD_SF and CMD_NAND. The linker will complain that some symbols are duplicated.

Either you add a new hidden Kconfig option that is selected by CMD_NAND and CMD_SF, or you use the ifeq trick:

ifeq (,$(findstring y,$(CONFIG_CMD_NAND)$(CONFIG_CMD_SF))) obj-y += legacy-mtd-utils.o
endif

#74 lore raw

PATCH v3 25/28 cmd: nand/sf: isolate legacy code

Hello,

Quoted 1 line · Boris Brezillon

ifeq (,$(findstring y,$(CONFIG_CMD_NAND)$(CONFIG_CMD_SF)))

This could be "simplified" as:

ifneq ($(CONFIG_CMD_NAND)$(CONFIG_CMD_SF),)

if either of the options is 'y', the string is non-empty, so the condition will be true.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
author maintainer
#75 lore raw

PATCH v3 25/28 cmd: nand/sf: isolate legacy code

Hello,

Thomas Petazzoni <[email protected]> wrote on Wed, 5 Dec 2018 11:53:52 +0100:

Quoted 4 lines

Hello,

On Wed, 5 Dec 2018 11:37:54 +0100, Boris Brezillon wrote:

Quoted 8 lines
Quoted 1 line

ifeq (,$(findstring y,$(CONFIG_CMD_NAND)$(CONFIG_CMD_SF)))

This could be "simplified" as:

ifneq ($(CONFIG_CMD_NAND)$(CONFIG_CMD_SF),)

if either of the options is 'y', the string is non-empty, so the condition will be true.

Thank you both of you, I will use this trick to avoid build failures with the situation raised by Boris.

Thanks,
Miquèl

author maintainer
#76 lore raw

PATCH v3 26/28 cmd: make MTD commands depend on MTD

In reply to Miquel Raynal

Defconfigs have been fixed, now we can add proper dependencies in Kconfig. SPI FLASH is still not dependent on MTD (deeper rework needed).

---
 cmd/Kconfig | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
cmd/Kconfig +7 -3
index cf58174013..7c166a07e6 100644
@@ -679,6 +679,7 @@ config CMD_FDC
 config CMD_FLASH
 	bool "flinfo, erase, protect"
 	default y
+	depends on MTD
 	help
 	  NOR flash support.
 	    flinfo - print FLASH memory information
@@ -868,6 +869,7 @@ config CMD_MMC_SWRITE
 
 config CMD_MTD
 	bool "mtd"
+	depends on MTD
 	select MTD_PARTITIONS
 	help
 	  MTD commands support.
@@ -875,6 +877,7 @@ config CMD_MTD
 config CMD_NAND
 	bool "nand"
 	default y if NAND_SUNXI
+	depends on MTD_RAW_NAND
 	help
 	  NAND support.
 
@@ -915,6 +918,7 @@ config CMD_MMC_SPI
 
 config CMD_ONENAND
 	bool "onenand - access to onenand device"
+	depends on MTD
 	help
 	  OneNAND is a brand of NAND ('Not AND' gate) flash which provides
 	  various useful features. This command allows reading, writing,
@@ -1733,7 +1737,7 @@ config CMD_JFFS2
 
 config CMD_MTDPARTS
 	bool "MTD partition support"
-	select MTD if (CMD_NAND || NAND)
+	depends on MTD
 	help
 	  MTD partitioning tool support.
 	  It is strongly encouraged to avoid using this command
@@ -1754,14 +1758,14 @@ endif
 
 config MTDIDS_DEFAULT
 	string "Default MTD IDs"
-	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+	depends on MTD || SPI_FLASH
 	help
 	  Defines a default MTD IDs list for use with MTD partitions in the
 	  Linux MTD command line partitions format.
 
 config MTDPARTS_DEFAULT
 	string "Default MTD partition scheme"
-	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+	depends on MTD || SPI_FLASH
 	help
 	  Defines a default MTD partitioning scheme in the Linux MTD command
 	  line partitions format
Signature · 1 line
2.19.1
#77 lore raw

PATCH v3 26/28 cmd: make MTD commands depend on MTD

Quoted 54 lines · On Wed, 5 Dec 2018 00:57:12 +0100 Miquel Raynal <[email protected]>…

Defconfigs have been fixed, now we can add proper dependencies in Kconfig. SPI FLASH is still not dependent on MTD (deeper rework needed).

---
 cmd/Kconfig | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
cmd/Kconfig +5 -1
index cf58174013..7c166a07e6 100644
@@ -679,6 +679,7 @@ config CMD_FDC
 config CMD_FLASH
 	bool "flinfo, erase, protect"
 	default y
+	depends on MTD
 	help
 	  NOR flash support.
 	    flinfo - print FLASH memory information
@@ -868,6 +869,7 @@ config CMD_MMC_SWRITE
 
 config CMD_MTD
 	bool "mtd"
+	depends on MTD
 	select MTD_PARTITIONS
 	help
 	  MTD commands support.
@@ -875,6 +877,7 @@ config CMD_MTD
 config CMD_NAND
 	bool "nand"
 	default y if NAND_SUNXI
+	depends on MTD_RAW_NAND
 	help
 	  NAND support.
 
@@ -915,6 +918,7 @@ config CMD_MMC_SPI
 
 config CMD_ONENAND
 	bool "onenand - access to onenand device"
+	depends on MTD
 	help
 	  OneNAND is a brand of NAND ('Not AND' gate) flash which provides
 	  various useful features. This command allows reading, writing,
@@ -1733,7 +1737,7 @@ config CMD_JFFS2
 
 config CMD_MTDPARTS
 	bool "MTD partition support"
-	select MTD if (CMD_NAND || NAND)
+	depends on MTD
 	help
 	  MTD partitioning tool support.
 	  It is strongly encouraged to avoid using this command

cmd/Kconfig endif · line 1761

Quoted 5 lines
cmd/Kconfig +1 -1
@@ -1754,14 +1758,14 @@ endif
 
 config MTDIDS_DEFAULT
 	string "Default MTD IDs"
-	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+	depends on MTD || SPI_FLASH

Can't we have MTD enabled without MTD_PARTITIONS? I guess we don't need to expose these options if MTD_PARTITIONS is disabled.

Quoted 11 lines
cmd/Kconfig +1 -1
 	help
 	  Defines a default MTD IDs list for use with MTD partitions in the
 	  Linux MTD command line partitions format.
 
 config MTDPARTS_DEFAULT
 	string "Default MTD partition scheme"
-	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+	depends on MTD || SPI_FLASH
 	help
 	  Defines a default MTD partitioning scheme in the Linux MTD command
 	  line partitions format
author maintainer
#78 lore raw

PATCH v3 26/28 cmd: make MTD commands depend on MTD

Hi Boris,

Boris Brezillon <[email protected]> wrote on Wed, 5 Dec 2018 11:42:08 +0100:

Quoted 58 lines
Quoted 55 lines · On Wed, 5 Dec 2018 00:57:12 +0100 Miquel Raynal <[email protected]>…

Defconfigs have been fixed, now we can add proper dependencies in Kconfig. SPI FLASH is still not dependent on MTD (deeper rework needed).

---
 cmd/Kconfig | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
cmd/Kconfig +5 -1
index cf58174013..7c166a07e6 100644
@@ -679,6 +679,7 @@ config CMD_FDC
 config CMD_FLASH
 	bool "flinfo, erase, protect"
 	default y
+	depends on MTD
 	help
 	  NOR flash support.
 	    flinfo - print FLASH memory information
@@ -868,6 +869,7 @@ config CMD_MMC_SWRITE
 
 config CMD_MTD
 	bool "mtd"
+	depends on MTD
 	select MTD_PARTITIONS
 	help
 	  MTD commands support.
@@ -875,6 +877,7 @@ config CMD_MTD
 config CMD_NAND
 	bool "nand"
 	default y if NAND_SUNXI
+	depends on MTD_RAW_NAND
 	help
 	  NAND support.
 
@@ -915,6 +918,7 @@ config CMD_MMC_SPI
 
 config CMD_ONENAND
 	bool "onenand - access to onenand device"
+	depends on MTD
 	help
 	  OneNAND is a brand of NAND ('Not AND' gate) flash which provides
 	  various useful features. This command allows reading, writing,
@@ -1733,7 +1737,7 @@ config CMD_JFFS2
 
 config CMD_MTDPARTS
 	bool "MTD partition support"
-	select MTD if (CMD_NAND || NAND)
+	depends on MTD
 	help
 	  MTD partitioning tool support.
 	  It is strongly encouraged to avoid using this command
@@ -1754,14 +1758,14 @@ endif
 
Quoted 7 lines

cmd/Kconfig endif · line 1761

Quoted 4 lines
cmd/Kconfig +1 -1
 config MTDIDS_DEFAULT
 	string "Default MTD IDs"
-	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+	depends on MTD || SPI_FLASH  

Can't we have MTD enabled without MTD_PARTITIONS? I guess we don't need to expose these options if MTD_PARTITIONS is disabled.

That's the theory. (Travis) Experience shows that adding a dependency on MTD_PARTITIONS when removing the dependency on the above commands is too restrictive and some header files using MTDIDS/MTDPARTS_DEFAULT will produce build issues. This is insane but I did not want to debug this issue and, anyway, it is harmless to have these strings defined.

Quoted 5 lines
Quoted 5 lines
cmd/Kconfig +0 -0
 	help
 	  Defines a default MTD IDs list for use with MTD partitions in the
 	  Linux MTD command line partitions format.
 
Quoted 8 lines

cmd/Kconfig endif · line 1771

Quoted 7 lines
cmd/Kconfig +1 -1
 config MTDPARTS_DEFAULT
 	string "Default MTD partition scheme"
-	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+	depends on MTD || SPI_FLASH
 	help
 	  Defines a default MTD partitioning scheme in the Linux MTD command
 	  line partitions format  

Thanks,
Miquèl

#79 lore raw

PATCH v3 26/28 cmd: make MTD commands depend on MTD

Quoted 71 lines · On Wed, 5 Dec 2018 11:48:32 +0100 Miquel Raynal <[email protected]>…

Hi Boris,

Boris Brezillon <[email protected]> wrote on Wed, 5 Dec 2018 11:42:08 +0100:

Quoted 58 lines
Quoted 55 lines · On Wed, 5 Dec 2018 00:57:12 +0100 Miquel Raynal <[email protected]>…

Defconfigs have been fixed, now we can add proper dependencies in Kconfig. SPI FLASH is still not dependent on MTD (deeper rework needed).

---
 cmd/Kconfig | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
cmd/Kconfig +5 -1
index cf58174013..7c166a07e6 100644
@@ -679,6 +679,7 @@ config CMD_FDC
 config CMD_FLASH
 	bool "flinfo, erase, protect"
 	default y
+	depends on MTD
 	help
 	  NOR flash support.
 	    flinfo - print FLASH memory information
@@ -868,6 +869,7 @@ config CMD_MMC_SWRITE
 
 config CMD_MTD
 	bool "mtd"
+	depends on MTD
 	select MTD_PARTITIONS
 	help
 	  MTD commands support.
@@ -875,6 +877,7 @@ config CMD_MTD
 config CMD_NAND
 	bool "nand"
 	default y if NAND_SUNXI
+	depends on MTD_RAW_NAND
 	help
 	  NAND support.
 
@@ -915,6 +918,7 @@ config CMD_MMC_SPI
 
 config CMD_ONENAND
 	bool "onenand - access to onenand device"
+	depends on MTD
 	help
 	  OneNAND is a brand of NAND ('Not AND' gate) flash which provides
 	  various useful features. This command allows reading, writing,
@@ -1733,7 +1737,7 @@ config CMD_JFFS2
 
 config CMD_MTDPARTS
 	bool "MTD partition support"
-	select MTD if (CMD_NAND || NAND)
+	depends on MTD
 	help
 	  MTD partitioning tool support.
 	  It is strongly encouraged to avoid using this command
@@ -1754,14 +1758,14 @@ endif
 
Quoted 7 lines

cmd/Kconfig endif · line 1761

Quoted 4 lines
cmd/Kconfig +1 -1
 config MTDIDS_DEFAULT
 	string "Default MTD IDs"
-	depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+	depends on MTD || SPI_FLASH    

Can't we have MTD enabled without MTD_PARTITIONS? I guess we don't need to expose these options if MTD_PARTITIONS is disabled.

Quoted 6 lines

That's the theory. (Travis) Experience shows that adding a dependency on MTD_PARTITIONS when removing the dependency on the above commands is too restrictive and some header files using MTDIDS/MTDPARTS_DEFAULT will produce build issues. This is insane but I did not want to debug this issue and, anyway, it is harmless to have these strings defined.

Fair enough.

author maintainer
#80 lore raw

PATCH v3 27/28 mtd: simplify Makefile

In reply to Miquel Raynal

Now that we do not rely on the command enabled to compile core files, let's simplify the MTD root Makefile.

---
 drivers/mtd/Makefile | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/mtd/Makefile +1 -3
index 68b1029734..fc4c7e0d1f 100644
@@ -3,9 +3,7 @@
 # (C) Copyright 2000-2007
 # Wolfgang Denk, DENX Software Engineering, wd at denx.de.
 
-ifneq (,$(findstring y,$(CONFIG_MTD)$(CONFIG_CMD_NAND)$(CONFIG_CMD_ONENAND)$(CONFIG_CMD_SF)$(CONFIG_CMD_MTD)))
-obj-y += mtdcore.o mtd_uboot.o
-endif
+obj-$(CONFIG_MTD) += mtdcore.o mtd_uboot.o
 obj-$(CONFIG_DM_MTD) += mtd-uclass.o
 obj-$(CONFIG_MTD_PARTITIONS) += mtdpart.o
 obj-$(CONFIG_MTD_CONCAT) += mtdconcat.o
Signature · 1 line
2.19.1
author maintainer
#81 lore raw

PATCH v3 28/28 mtd: properly handle SPL kbuild lines

In reply to Miquel Raynal

Instead of compiling just a few files from the root Makefile, rework the MTD Makefile tree to take into account SPL's needs.

---
 drivers/Makefile          |  6 +-----
 drivers/mtd/Makefile      | 44 ++++++++++++++++++++++++++-------------
 drivers/mtd/nand/Makefile |  4 ++++
 3 files changed, 35 insertions(+), 19 deletions(-)
drivers/Makefile +1 -5
index e7c93875bb..03aa26535c 100644
@@ -6,12 +6,11 @@ obj-$(CONFIG_$(SPL_TPL_)DRIVERS_MISC_SUPPORT) += misc/ sysreset/ firmware/
 obj-$(CONFIG_$(SPL_TPL_)I2C_SUPPORT) += i2c/
 obj-$(CONFIG_$(SPL_TPL_)LED) += led/
 obj-$(CONFIG_$(SPL_TPL_)MMC_SUPPORT) += mmc/
-obj-$(CONFIG_$(SPL_TPL_)NAND_SUPPORT) += mtd/nand/
+obj-y += mtd/
 obj-$(CONFIG_$(SPL_TPL_)PHY) += phy/
 obj-$(CONFIG_$(SPL_TPL_)PINCTRL) += pinctrl/
 obj-$(CONFIG_$(SPL_TPL_)RAM) += ram/
 obj-$(CONFIG_$(SPL_TPL_)SERIAL_SUPPORT) += serial/
-obj-$(CONFIG_$(SPL_TPL_)SPI_FLASH_SUPPORT) += mtd/spi/
 obj-$(CONFIG_$(SPL_TPL_)SPI_SUPPORT) += spi/
 obj-$(CONFIG_$(SPL_TPL_)TIMER) += timer/
 obj-$(CONFIG_$(SPL_TPL_)VIRTIO) += virtio/
@@ -33,9 +32,6 @@ obj-$(CONFIG_SPL_POWER_SUPPORT) += power/ power/pmic/
 obj-$(CONFIG_SPL_POWER_SUPPORT) += power/regulator/
 obj-$(CONFIG_SPL_POWER_DOMAIN) += power/domain/
 obj-$(CONFIG_SPL_DM_RESET) += reset/
-obj-$(CONFIG_SPL_MTD_SUPPORT) += mtd/
-obj-$(CONFIG_SPL_ONENAND_SUPPORT) += mtd/onenand/
-obj-$(CONFIG_SPL_UBI) += mtd/ubispl/
 obj-$(CONFIG_SPL_DMA_SUPPORT) += dma/
 obj-$(CONFIG_SPL_ETH_SUPPORT) += net/
 obj-$(CONFIG_SPL_ETH_SUPPORT) += net/phy/
drivers/mtd/Makefile +30 -14

54 lines not on this page · raw message

drivers/mtd/nand/Makefile +4 -0
index e5849dc02a..96e186600a 100644
@@ -1,6 +1,10 @@
 # SPDX-License-Identifier: GPL-2.0+
 
+ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
 nandcore-objs := core.o bbt.o
 obj-$(CONFIG_MTD_NAND_CORE) += nandcore.o
 obj-$(CONFIG_MTD_RAW_NAND) += raw/
 obj-$(CONFIG_MTD_SPI_NAND) += spi/
+else
+obj-$(CONFIG_$(SPL_TPL_)NAND_SUPPORT) += raw/
+endif
Signature · 1 line
2.19.1
#82 lore raw

PATCH v3 28/28 mtd: properly handle SPL kbuild lines

Hi Miquel,

Quoted 3 lines · On Wed, 5 Dec 2018 00:57:14 +0100 Miquel Raynal <[email protected]>…

Instead of compiling just a few files from the root Makefile, rework the MTD Makefile tree to take into account SPL's needs.

As mentioned in my review of patch 1, I think patch 1, 27 and 28 could be merged in a single patch that would be placed at the end of this series as the final (real) Makefile cleanup.

BTW, good job! I can only imagine how painful it was to do this without breaking builds.

Regards,

Boris