mbox series

[U-Boot,v5,00/26] MTD defconfigs/Kconfigs/Makefiles heavy cleanup

Message ID 20191003175028.17015-1-miquel.raynal@bootlin.com
Headers show
Series MTD defconfigs/Kconfigs/Makefiles heavy cleanup | expand

Message

Miquel Raynal Oct. 3, 2019, 5:50 p.m. UTC
Hello,

A year ago, while working on SPI-NAND support in U-Boot, I discovered
when modifying Makefiles a confusing organization where:
* Sub-directories/files are compiled from the root Makefile
* Commands are at the root of everything

First I sent a series to move Makefile entries in their respective
directories. Then, I decided to continue working on the clarification
of the Makefile hierarchy in MTD and I sent four iterations of this
series which did not got merge at that time. Anyway, I revived this
series by rebasing all my work and updating everything that needed an
update.

Here are the main points of the re-organization:
* Rename CONFIG_MTD into CONFIG_DM_MTD to reserve CONFIG_MTD to what
  is called today CONFIG_MTD_DEVICE.
* Fix build dependencies in defconfigs, like: "UBI and NAND depend on MTD".
* Fix the Kconfig files to reflect these dependencies (as defconfigs
  have been updated, nothing should break).
* Simplify the Makefiles: compiling the drivers/mtd/nand/raw/
  sub-directory should just depend on MTD being compiled and the NAND
  core as well, there is absolutely no logic to make it depend on
  CMD_NAND.

The New green Travis CI build for the fifth version of this series is
there (yes, 53 iterations):

Please note that the only red test fails because of timeout, not an
actual error (at least I could not spot it). It is possible that this
series will produce noticeable changes for the users. The only reason
for that is because their configuration file was wrong. I have done my
best to fix them one by one, but I am not omniscient.

Thanks,
Miquèl


Note: as the number of Cc:'ed people reached 184 with
get_maintainers.pl I decided to trim the list to:
* People interested by the MTD subsystem.
* A few maintainers: I had to tweak some defconfigs after more digging
  than with other boards (k2g, bcm11130, M54418TWR,
  ls104/108/208). Maintainers of these platforms are Cc:'ed.


Changes since v4:
=================
* Rebased on top of v2019.10-rc4.
* Fixed tens of configurations that got broken since the last version
  of this series several months ago.
* Added a specific commit for ls104/108/208 configurations.

Changes since v3:
=================
* As suggested by Vignesh, SPI_FLASH_MTD depends on MTD. Enforce this
  in Kconfig with a new patch. There is no defconfig to fix, all
  defconfigs with SPI_FLASH_MTD already use MTD.
* s/coherent Makefile/appropriate Makefile/ in commit title of patch 1.
* s/Kconfig/Makefile in commit message of "mtd: nand: remove
  dependency on commands in Kconfig" and "mtd: ubi: remove dependency
  on command in Kconfig".
* Add Boris R-b tags.
* Correct typos pointed by Boris.
* Remove the if/endif in cmd/Kconfig about mtdparts, let the "depends
  on" that was already present.
* Use an if/endif block to compile legacy-mtd-utils.c (to avoid
  failures when both 'sf' and 'nand' commands are compiled-in).
* Merge all Makefile changes in one consistent commit as suggested by
  Boris.

Changes since v2:
=================
* Cleanup also applied to the SPL in an additional patch.
* NOR dependency on MTD extracted from the patch adding MTD
  dependencies on commands only to do it in a separate change.
* Typo s/copile/compile/ in "rename CONFIG_MTD_DEVICE..." commit log.
* No more MTD depencency on SPI_FLASH, only kept on SPI_FLASH_MTD.
* Same applies to the sf command.
* Avoid compiling the NAND core while it is not needed (not speaking
  about the raw NAND core, really what is in drivers/mtd/nand:).
* Last patch dropping CONFIG_MTD_PARTITIONS forgotten. We need them in
  order to reduce the final binary size.
* Additional fixes in cmd/Kconfig.

Changes since v1:
=================
* Squashed both patches from the first series and included them in
  "mtd: simplify Makefiles".
* Added all other patches.
* Renamed CONFIG_NAND into CONFIG_MTD_RAW_NAND as suggested.


Miquel Raynal (26):
  mtd: rename CONFIG_NAND -> CONFIG_MTD_RAW_NAND
  mtd: rename CONFIG_MTD -> CONFIG_DM_MTD
  mtd: rename CONFIG_MTD_DEVICE -> CONFIG_MTD
  mtd: ensure MTD is compiled when there is a NOR flash
  mtd: ensure MTD/the raw NAND core are compiled when there is a NAND
    flash
  mtd: ensure MTD is compiled when there is a SPI NOR flash using MTD
  mtd: ensure UBI is compiled when using fastmap
  mtd: ensure MTD is compiled when UBI is used
  mtd: ensure UBI is compiled when CMD_UBI is selected
  mtd: ensure UBI is compiled when ENV_IS_IN_UBI is selected
  mtd: ensure MTD_RAW_NAND is compiled when ENV_IS_IN_NAND is selected
  mtd: ensure CMD_NAND is compiled when its options are selected
  mtd: ensure MTD is compiled when CMD_MTDPARTS is selected
  configs: move CONFIG_MTD in defconfigs when set in arch includes
  configs: remove raw NAND core from k2g defconfigs
  configs: remove MTD support from bcm11130 and M54418TWR defconfigs
  configs: socfpga: mcvevk: Remove useless UBI infos
  configs: ls104x/ls108x/ls208x: Build the raw NAND core with TFABOOT
  mtd: nand: add includes in NAND core to avoid warnings
  dfu: add dependency on the raw NAND core
  mtd: nor: NOR flashes depend on MTD
  mtd: spi: SPI_FLASH_MTD depends on MTD
  cmd: mtdparts: Kconfig: join mtdparts command entry with its options
  cmd: nand/sf: isolate legacy code
  cmd: make MTD commands depend on MTD
  mtd: Makefile: deep cleanup

 Makefile                                      |  5 -
 arch/arm/mach-omap2/mem-common.c              |  6 +-
 board/BuR/brppt1/board.c                      |  2 +-
 board/BuR/brppt1/mux.c                        |  6 +-
 board/birdland/bav335x/board.c                |  2 +-
 board/bosch/shc/board.c                       |  2 +-
 board/freescale/ls2080aqds/ls2080aqds.c       |  2 +-
 board/freescale/t102xrdb/t102xrdb.c           |  2 +-
 board/phytec/pcm051/mux.c                     |  4 +-
 board/siemens/pxm2/mux.c                      |  4 +-
 board/sunxi/README.nand                       |  2 +-
 board/ti/am335x/board.c                       |  2 +-
 board/ti/am335x/mux.c                         |  8 +-
 board/ti/am43xx/mux.c                         |  8 +-
 board/ti/ti816x/evm.c                         |  2 +-
 board/vscom/baltos/board.c                    |  2 +-
 board/vscom/baltos/mux.c                      |  2 +-
 cmd/Kconfig                                   | 34 ++++---
 cmd/Makefile                                  |  3 +
 cmd/legacy-mtd-utils.c                        | 99 +++++++++++++++++++
 cmd/legacy-mtd-utils.h                        | 14 +++
 cmd/nand.c                                    |  2 +
 cmd/sf.c                                      |  2 +
 configs/10m50_defconfig                       |  2 +-
 configs/3c120_defconfig                       |  1 +
 configs/B4420QDS_NAND_defconfig               |  3 +-
 configs/B4420QDS_SPIFLASH_defconfig           |  1 +
 configs/B4420QDS_defconfig                    |  1 +
 configs/B4860QDS_NAND_defconfig               |  3 +-
 configs/B4860QDS_SECURE_BOOT_defconfig        |  1 +
 configs/B4860QDS_SPIFLASH_defconfig           |  1 +
 configs/B4860QDS_defconfig                    |  1 +
 configs/BSC9131RDB_NAND_SYSCLK100_defconfig   |  3 +-
 configs/BSC9131RDB_NAND_defconfig             |  3 +-
 .../BSC9131RDB_SPIFLASH_SYSCLK100_defconfig   |  1 +
 configs/BSC9131RDB_SPIFLASH_defconfig         |  1 +
 ...BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig |  2 +
 configs/BSC9132QDS_NAND_DDRCLK100_defconfig   |  3 +-
 ...BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig |  2 +
 configs/BSC9132QDS_NAND_DDRCLK133_defconfig   |  3 +-
 .../BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig |  1 +
 configs/BSC9132QDS_NOR_DDRCLK100_defconfig    |  1 +
 .../BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig |  1 +
 configs/BSC9132QDS_NOR_DDRCLK133_defconfig    |  1 +
 ...C9132QDS_SDCARD_DDRCLK100_SECURE_defconfig |  1 +
 configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig |  1 +
 ...C9132QDS_SDCARD_DDRCLK133_SECURE_defconfig |  1 +
 configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig |  1 +
 ...132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig |  1 +
 .../BSC9132QDS_SPIFLASH_DDRCLK100_defconfig   |  1 +
 ...132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig |  1 +
 .../BSC9132QDS_SPIFLASH_DDRCLK133_defconfig   |  1 +
 configs/C29XPCIE_NAND_defconfig               |  3 +-
 configs/C29XPCIE_NOR_SECBOOT_defconfig        |  1 +
 configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig   |  1 +
 configs/C29XPCIE_SPIFLASH_defconfig           |  1 +
 configs/C29XPCIE_defconfig                    |  1 +
 configs/CHIP_pro_defconfig                    |  5 +-
 configs/M5208EVBE_defconfig                   |  1 +
 configs/M52277EVB_defconfig                   |  1 +
 configs/M52277EVB_stmicro_defconfig           |  1 +
 configs/M5235EVB_Flash32_defconfig            |  1 +
 configs/M5235EVB_defconfig                    |  1 +
 configs/M5249EVB_defconfig                    |  1 +
 configs/M5253DEMO_defconfig                   |  1 +
 configs/M5272C3_defconfig                     |  1 +
 configs/M5275EVB_defconfig                    |  1 +
 configs/M5282EVB_defconfig                    |  1 +
 configs/M53017EVB_defconfig                   |  1 +
 configs/M5329AFEE_defconfig                   |  1 +
 configs/M5329BFEE_defconfig                   |  1 +
 configs/M5373EVB_defconfig                    |  1 +
 configs/M54418TWR_nand_mii_defconfig          |  1 +
 configs/M54418TWR_nand_rmii_defconfig         |  1 +
 configs/M54418TWR_nand_rmii_lowfreq_defconfig |  1 +
 configs/M54451EVB_defconfig                   |  1 +
 configs/M54451EVB_stmicro_defconfig           |  1 +
 configs/M54455EVB_a66_defconfig               |  1 +
 configs/M54455EVB_defconfig                   |  1 +
 configs/M54455EVB_i66_defconfig               |  1 +
 configs/M54455EVB_intel_defconfig             |  1 +
 configs/M54455EVB_stm33_defconfig             |  1 +
 configs/M5475AFE_defconfig                    |  1 +
 configs/M5475BFE_defconfig                    |  1 +
 configs/M5475CFE_defconfig                    |  1 +
 configs/M5475DFE_defconfig                    |  1 +
 configs/M5475EFE_defconfig                    |  1 +
 configs/M5475FFE_defconfig                    |  1 +
 configs/M5475GFE_defconfig                    |  1 +
 configs/M5485AFE_defconfig                    |  1 +
 configs/M5485BFE_defconfig                    |  1 +
 configs/M5485CFE_defconfig                    |  1 +
 configs/M5485DFE_defconfig                    |  1 +
 configs/M5485EFE_defconfig                    |  1 +
 configs/M5485FFE_defconfig                    |  1 +
 configs/M5485GFE_defconfig                    |  1 +
 configs/M5485HFE_defconfig                    |  1 +
 configs/MCR3000_defconfig                     |  1 +
 configs/MPC8308RDB_defconfig                  |  1 +
 configs/MPC8313ERDB_33_defconfig              |  1 +
 configs/MPC8313ERDB_66_defconfig              |  1 +
 configs/MPC8313ERDB_NAND_33_defconfig         |  3 +-
 configs/MPC8313ERDB_NAND_66_defconfig         |  3 +-
 configs/MPC8315ERDB_defconfig                 |  1 +
 configs/MPC8323ERDB_defconfig                 |  1 +
 configs/MPC832XEMDS_ATM_defconfig             |  1 +
 configs/MPC832XEMDS_HOST_33_defconfig         |  1 +
 configs/MPC832XEMDS_HOST_66_defconfig         |  1 +
 configs/MPC832XEMDS_SLAVE_defconfig           |  1 +
 configs/MPC832XEMDS_defconfig                 |  1 +
 configs/MPC8349EMDS_PCI64_defconfig           |  1 +
 configs/MPC8349EMDS_SDRAM_defconfig           |  1 +
 configs/MPC8349EMDS_SLAVE_defconfig           |  1 +
 configs/MPC8349EMDS_defconfig                 |  1 +
 configs/MPC8349ITXGP_defconfig                |  1 +
 configs/MPC8349ITX_LOWBOOT_defconfig          |  1 +
 configs/MPC8349ITX_defconfig                  |  1 +
 configs/MPC837XEMDS_HOST_defconfig            |  1 +
 configs/MPC837XEMDS_defconfig                 |  1 +
 configs/MPC837XERDB_defconfig                 |  1 +
 configs/MPC8536DS_36BIT_defconfig             |  1 +
 configs/MPC8536DS_SDCARD_defconfig            |  1 +
 configs/MPC8536DS_SPIFLASH_defconfig          |  1 +
 configs/MPC8536DS_defconfig                   |  1 +
 configs/MPC8541CDS_defconfig                  |  1 +
 configs/MPC8541CDS_legacy_defconfig           |  1 +
 configs/MPC8544DS_defconfig                   |  1 +
 configs/MPC8548CDS_36BIT_defconfig            |  1 +
 configs/MPC8548CDS_defconfig                  |  1 +
 configs/MPC8548CDS_legacy_defconfig           |  1 +
 configs/MPC8555CDS_defconfig                  |  1 +
 configs/MPC8555CDS_legacy_defconfig           |  1 +
 configs/MPC8568MDS_defconfig                  |  1 +
 configs/MPC8569MDS_ATM_defconfig              |  1 +
 configs/MPC8569MDS_defconfig                  |  1 +
 configs/MPC8572DS_36BIT_defconfig             |  1 +
 configs/MPC8572DS_defconfig                   |  1 +
 configs/MPC8610HPCD_defconfig                 |  1 +
 configs/MPC8641HPCN_36BIT_defconfig           |  1 +
 configs/MPC8641HPCN_defconfig                 |  1 +
 configs/MigoR_defconfig                       |  1 +
 .../Nintendo_NES_Classic_Edition_defconfig    |  3 +-
 .../P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig  |  2 +
 configs/P1010RDB-PA_36BIT_NAND_defconfig      |  3 +-
 .../P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig   |  1 +
 configs/P1010RDB-PA_36BIT_NOR_defconfig       |  1 +
 configs/P1010RDB-PA_36BIT_SDCARD_defconfig    |  1 +
 ...010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig |  1 +
 configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig  |  1 +
 configs/P1010RDB-PA_NAND_SECBOOT_defconfig    |  2 +
 configs/P1010RDB-PA_NAND_defconfig            |  3 +-
 configs/P1010RDB-PA_NOR_SECBOOT_defconfig     |  1 +
 configs/P1010RDB-PA_NOR_defconfig             |  1 +
 configs/P1010RDB-PA_SDCARD_defconfig          |  1 +
 .../P1010RDB-PA_SPIFLASH_SECBOOT_defconfig    |  1 +
 configs/P1010RDB-PA_SPIFLASH_defconfig        |  1 +
 .../P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig  |  2 +
 configs/P1010RDB-PB_36BIT_NAND_defconfig      |  3 +-
 .../P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig   |  1 +
 configs/P1010RDB-PB_36BIT_NOR_defconfig       |  1 +
 configs/P1010RDB-PB_36BIT_SDCARD_defconfig    |  1 +
 ...010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig |  1 +
 configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig  |  1 +
 configs/P1010RDB-PB_NAND_SECBOOT_defconfig    |  2 +
 configs/P1010RDB-PB_NAND_defconfig            |  3 +-
 configs/P1010RDB-PB_NOR_SECBOOT_defconfig     |  1 +
 configs/P1010RDB-PB_NOR_defconfig             |  1 +
 configs/P1010RDB-PB_SDCARD_defconfig          |  1 +
 .../P1010RDB-PB_SPIFLASH_SECBOOT_defconfig    |  1 +
 configs/P1010RDB-PB_SPIFLASH_defconfig        |  1 +
 configs/P1020MBG-PC_36BIT_SDCARD_defconfig    |  1 +
 configs/P1020MBG-PC_36BIT_defconfig           |  1 +
 configs/P1020MBG-PC_SDCARD_defconfig          |  1 +
 configs/P1020MBG-PC_defconfig                 |  1 +
 configs/P1020RDB-PC_36BIT_NAND_defconfig      |  3 +-
 configs/P1020RDB-PC_36BIT_SDCARD_defconfig    |  1 +
 configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig  |  1 +
 configs/P1020RDB-PC_36BIT_defconfig           |  1 +
 configs/P1020RDB-PC_NAND_defconfig            |  3 +-
 configs/P1020RDB-PC_SDCARD_defconfig          |  1 +
 configs/P1020RDB-PC_SPIFLASH_defconfig        |  1 +
 configs/P1020RDB-PC_defconfig                 |  1 +
 configs/P1020RDB-PD_NAND_defconfig            |  3 +-
 configs/P1020RDB-PD_SDCARD_defconfig          |  1 +
 configs/P1020RDB-PD_SPIFLASH_defconfig        |  1 +
 configs/P1020RDB-PD_defconfig                 |  1 +
 configs/P1020UTM-PC_36BIT_SDCARD_defconfig    |  1 +
 configs/P1020UTM-PC_36BIT_defconfig           |  1 +
 configs/P1020UTM-PC_SDCARD_defconfig          |  1 +
 configs/P1020UTM-PC_defconfig                 |  1 +
 configs/P1021RDB-PC_36BIT_NAND_defconfig      |  3 +-
 configs/P1021RDB-PC_36BIT_SDCARD_defconfig    |  1 +
 configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig  |  1 +
 configs/P1021RDB-PC_36BIT_defconfig           |  1 +
 configs/P1021RDB-PC_NAND_defconfig            |  3 +-
 configs/P1021RDB-PC_SDCARD_defconfig          |  1 +
 configs/P1021RDB-PC_SPIFLASH_defconfig        |  1 +
 configs/P1021RDB-PC_defconfig                 |  1 +
 configs/P1022DS_36BIT_NAND_defconfig          |  3 +-
 configs/P1022DS_36BIT_SDCARD_defconfig        |  1 +
 configs/P1022DS_36BIT_SPIFLASH_defconfig      |  1 +
 configs/P1022DS_36BIT_defconfig               |  1 +
 configs/P1022DS_NAND_defconfig                |  3 +-
 configs/P1022DS_SDCARD_defconfig              |  1 +
 configs/P1022DS_SPIFLASH_defconfig            |  1 +
 configs/P1022DS_defconfig                     |  1 +
 configs/P1023RDB_defconfig                    |  1 +
 configs/P1024RDB_36BIT_defconfig              |  1 +
 configs/P1024RDB_NAND_defconfig               |  3 +-
 configs/P1024RDB_SDCARD_defconfig             |  1 +
 configs/P1024RDB_SPIFLASH_defconfig           |  1 +
 configs/P1024RDB_defconfig                    |  1 +
 configs/P1025RDB_36BIT_defconfig              |  1 +
 configs/P1025RDB_NAND_defconfig               |  3 +-
 configs/P1025RDB_SDCARD_defconfig             |  1 +
 configs/P1025RDB_SPIFLASH_defconfig           |  1 +
 configs/P1025RDB_defconfig                    |  1 +
 configs/P2020RDB-PC_36BIT_NAND_defconfig      |  3 +-
 configs/P2020RDB-PC_36BIT_SDCARD_defconfig    |  1 +
 configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig  |  1 +
 configs/P2020RDB-PC_36BIT_defconfig           |  1 +
 configs/P2020RDB-PC_NAND_defconfig            |  3 +-
 configs/P2020RDB-PC_SDCARD_defconfig          |  1 +
 configs/P2020RDB-PC_SPIFLASH_defconfig        |  1 +
 configs/P2020RDB-PC_defconfig                 |  1 +
 configs/P2041RDB_NAND_defconfig               |  3 +-
 configs/P2041RDB_SDCARD_defconfig             |  1 +
 configs/P2041RDB_SECURE_BOOT_defconfig        |  1 +
 configs/P2041RDB_SPIFLASH_defconfig           |  1 +
 configs/P2041RDB_defconfig                    |  1 +
 configs/P3041DS_NAND_SECURE_BOOT_defconfig    |  3 +-
 configs/P3041DS_NAND_defconfig                |  3 +-
 configs/P3041DS_SDCARD_defconfig              |  1 +
 configs/P3041DS_SECURE_BOOT_defconfig         |  1 +
 configs/P3041DS_SPIFLASH_defconfig            |  1 +
 configs/P3041DS_defconfig                     |  1 +
 configs/P4080DS_SDCARD_defconfig              |  1 +
 configs/P4080DS_SECURE_BOOT_defconfig         |  1 +
 configs/P4080DS_SPIFLASH_defconfig            |  1 +
 configs/P4080DS_defconfig                     |  1 +
 configs/P5020DS_NAND_SECURE_BOOT_defconfig    |  3 +-
 configs/P5020DS_NAND_defconfig                |  3 +-
 configs/P5020DS_SDCARD_defconfig              |  1 +
 configs/P5020DS_SECURE_BOOT_defconfig         |  1 +
 configs/P5020DS_SPIFLASH_defconfig            |  1 +
 configs/P5020DS_defconfig                     |  1 +
 configs/P5040DS_NAND_SECURE_BOOT_defconfig    |  3 +-
 configs/P5040DS_NAND_defconfig                |  3 +-
 configs/P5040DS_SDCARD_defconfig              |  1 +
 configs/P5040DS_SECURE_BOOT_defconfig         |  1 +
 configs/P5040DS_SPIFLASH_defconfig            |  1 +
 configs/P5040DS_defconfig                     |  1 +
 configs/T1023RDB_NAND_defconfig               |  3 +-
 configs/T1023RDB_SDCARD_defconfig             |  1 +
 configs/T1023RDB_SECURE_BOOT_defconfig        |  1 +
 configs/T1023RDB_SPIFLASH_defconfig           |  1 +
 configs/T1023RDB_defconfig                    |  1 +
 configs/T1024QDS_DDR4_SECURE_BOOT_defconfig   |  1 +
 configs/T1024QDS_DDR4_defconfig               |  1 +
 configs/T1024QDS_NAND_defconfig               |  3 +-
 configs/T1024QDS_SDCARD_defconfig             |  1 +
 configs/T1024QDS_SECURE_BOOT_defconfig        |  1 +
 configs/T1024QDS_SPIFLASH_defconfig           |  1 +
 configs/T1024QDS_defconfig                    |  1 +
 configs/T1024RDB_NAND_defconfig               |  3 +-
 configs/T1024RDB_SDCARD_defconfig             |  1 +
 configs/T1024RDB_SECURE_BOOT_defconfig        |  1 +
 configs/T1024RDB_SPIFLASH_defconfig           |  1 +
 configs/T1024RDB_defconfig                    |  1 +
 configs/T1040D4RDB_NAND_defconfig             |  3 +-
 configs/T1040D4RDB_SDCARD_defconfig           |  1 +
 configs/T1040D4RDB_SECURE_BOOT_defconfig      |  1 +
 configs/T1040D4RDB_SPIFLASH_defconfig         |  1 +
 configs/T1040D4RDB_defconfig                  |  1 +
 configs/T1040QDS_DDR4_defconfig               |  1 +
 configs/T1040QDS_SECURE_BOOT_defconfig        |  1 +
 configs/T1040QDS_defconfig                    |  1 +
 configs/T1040RDB_NAND_defconfig               |  3 +-
 configs/T1040RDB_SDCARD_defconfig             |  1 +
 configs/T1040RDB_SECURE_BOOT_defconfig        |  1 +
 configs/T1040RDB_SPIFLASH_defconfig           |  1 +
 configs/T1040RDB_defconfig                    |  1 +
 configs/T1042D4RDB_NAND_defconfig             |  3 +-
 configs/T1042D4RDB_SDCARD_defconfig           |  1 +
 configs/T1042D4RDB_SECURE_BOOT_defconfig      |  1 +
 configs/T1042D4RDB_SPIFLASH_defconfig         |  1 +
 configs/T1042D4RDB_defconfig                  |  1 +
 .../T1042RDB_PI_NAND_SECURE_BOOT_defconfig    |  3 +-
 configs/T1042RDB_PI_NAND_defconfig            |  3 +-
 configs/T1042RDB_PI_SDCARD_defconfig          |  1 +
 configs/T1042RDB_PI_SPIFLASH_defconfig        |  1 +
 configs/T1042RDB_PI_defconfig                 |  1 +
 configs/T1042RDB_SECURE_BOOT_defconfig        |  1 +
 configs/T1042RDB_defconfig                    |  1 +
 configs/T2080QDS_NAND_defconfig               |  3 +-
 configs/T2080QDS_SDCARD_defconfig             |  1 +
 configs/T2080QDS_SECURE_BOOT_defconfig        |  1 +
 configs/T2080QDS_SPIFLASH_defconfig           |  1 +
 configs/T2080QDS_defconfig                    |  1 +
 configs/T2080RDB_NAND_defconfig               |  3 +-
 configs/T2080RDB_SDCARD_defconfig             |  1 +
 configs/T2080RDB_SECURE_BOOT_defconfig        |  1 +
 configs/T2080RDB_SPIFLASH_defconfig           |  1 +
 configs/T2080RDB_defconfig                    |  1 +
 configs/T2081QDS_NAND_defconfig               |  3 +-
 configs/T2081QDS_SDCARD_defconfig             |  1 +
 configs/T2081QDS_SPIFLASH_defconfig           |  1 +
 configs/T2081QDS_defconfig                    |  1 +
 configs/T4160QDS_NAND_defconfig               |  3 +-
 configs/T4160QDS_SDCARD_defconfig             |  1 +
 configs/T4160QDS_SECURE_BOOT_defconfig        |  1 +
 configs/T4160QDS_defconfig                    |  1 +
 configs/T4160RDB_defconfig                    |  1 +
 configs/T4240QDS_NAND_defconfig               |  3 +-
 configs/T4240QDS_SDCARD_defconfig             |  1 +
 configs/T4240QDS_SECURE_BOOT_defconfig        |  1 +
 configs/T4240QDS_defconfig                    |  1 +
 configs/T4240RDB_SDCARD_defconfig             |  1 +
 configs/T4240RDB_defconfig                    |  1 +
 configs/TQM834x_defconfig                     |  2 +-
 configs/TWR-P1025_defconfig                   |  2 +-
 configs/UCP1020_defconfig                     |  1 +
 configs/adp-ae3xx_defconfig                   |  3 +-
 configs/adp-ag101p_defconfig                  |  1 +
 configs/ae350_rv32_defconfig                  |  1 +
 configs/alt_defconfig                         |  2 +-
 configs/am335x_baltos_defconfig               |  4 +-
 configs/am335x_evm_defconfig                  |  3 +-
 configs/am335x_guardian_defconfig             |  3 +-
 configs/am335x_hs_evm_defconfig               |  3 +-
 configs/am335x_hs_evm_uart_defconfig          |  3 +-
 configs/am335x_igep003x_defconfig             |  4 +-
 configs/am3517_crane_defconfig                |  3 +-
 configs/am3517_evm_defconfig                  |  4 +-
 configs/am43xx_evm_defconfig                  |  3 +-
 configs/am43xx_evm_rtconly_defconfig          |  3 +-
 configs/am43xx_evm_usbhost_boot_defconfig     |  3 +-
 configs/am43xx_hs_evm_defconfig               |  3 +-
 configs/amcore_defconfig                      |  1 +
 configs/ap121_defconfig                       |  1 +
 configs/ap143_defconfig                       |  1 +
 configs/apf27_defconfig                       |  5 +-
 configs/apx4devkit_defconfig                  |  4 +-
 configs/aristainetos2_defconfig               |  5 +-
 configs/aristainetos2b_defconfig              |  5 +-
 configs/aristainetos_defconfig                |  5 +-
 configs/astro_mcf5373l_defconfig              |  1 +
 configs/at91rm9200ek_defconfig                |  1 +
 configs/at91rm9200ek_ram_defconfig            |  1 +
 configs/at91sam9260ek_dataflash_cs0_defconfig |  3 +-
 configs/at91sam9260ek_dataflash_cs1_defconfig |  3 +-
 configs/at91sam9260ek_nandflash_defconfig     |  3 +-
 configs/at91sam9261ek_dataflash_cs0_defconfig |  3 +-
 configs/at91sam9261ek_dataflash_cs3_defconfig |  3 +-
 configs/at91sam9261ek_nandflash_defconfig     |  3 +-
 configs/at91sam9263ek_dataflash_cs0_defconfig |  3 +-
 configs/at91sam9263ek_dataflash_defconfig     |  3 +-
 configs/at91sam9263ek_nandflash_defconfig     |  3 +-
 configs/at91sam9263ek_norflash_boot_defconfig |  3 +-
 configs/at91sam9263ek_norflash_defconfig      |  3 +-
 configs/at91sam9g10ek_dataflash_cs0_defconfig |  3 +-
 configs/at91sam9g10ek_dataflash_cs3_defconfig |  3 +-
 configs/at91sam9g10ek_nandflash_defconfig     |  3 +-
 configs/at91sam9g20ek_2mmc_defconfig          |  3 +-
 .../at91sam9g20ek_2mmc_nandflash_defconfig    |  3 +-
 configs/at91sam9g20ek_dataflash_cs0_defconfig |  3 +-
 configs/at91sam9g20ek_dataflash_cs1_defconfig |  3 +-
 configs/at91sam9g20ek_nandflash_defconfig     |  3 +-
 configs/at91sam9m10g45ek_mmc_defconfig        |  3 +-
 configs/at91sam9m10g45ek_nandflash_defconfig  |  2 +
 configs/at91sam9n12ek_mmc_defconfig           |  3 +-
 configs/at91sam9n12ek_nandflash_defconfig     |  2 +
 configs/at91sam9n12ek_spiflash_defconfig      |  3 +-
 configs/at91sam9rlek_dataflash_defconfig      |  3 +-
 configs/at91sam9rlek_mmc_defconfig            |  3 +-
 configs/at91sam9rlek_nandflash_defconfig      |  3 +-
 configs/at91sam9x5ek_dataflash_defconfig      |  4 +-
 configs/at91sam9x5ek_mmc_defconfig            |  4 +-
 configs/at91sam9x5ek_nandflash_defconfig      |  3 +
 configs/at91sam9x5ek_spiflash_defconfig       |  4 +-
 configs/at91sam9xeek_dataflash_cs0_defconfig  |  3 +-
 configs/at91sam9xeek_dataflash_cs1_defconfig  |  3 +-
 configs/at91sam9xeek_nandflash_defconfig      |  3 +-
 configs/axm_defconfig                         |  3 +-
 configs/bcm11130_nand_defconfig               |  1 -
 configs/bcm963158_ram_defconfig               |  3 +-
 configs/bcm968380gerg_ram_defconfig           |  3 +-
 configs/bcm968580xref_ram_defconfig           |  3 +-
 configs/bg0900_defconfig                      |  4 +-
 configs/bitmain_antminer_s9_defconfig         |  7 +-
 configs/bk4r1_defconfig                       |  6 +-
 configs/blanche_defconfig                     |  1 +
 configs/boston32r2_defconfig                  |  1 +
 configs/boston32r2el_defconfig                |  1 +
 configs/boston32r6_defconfig                  |  1 +
 configs/boston32r6el_defconfig                |  1 +
 configs/boston64r2_defconfig                  |  1 +
 configs/boston64r2el_defconfig                |  1 +
 configs/boston64r6_defconfig                  |  1 +
 configs/boston64r6el_defconfig                |  1 +
 configs/brppt1_nand_defconfig                 |  3 +-
 configs/brppt1_spi_defconfig                  |  2 +-
 configs/caddy2_defconfig                      |  1 +
 configs/cairo_defconfig                       |  3 +-
 configs/chiliboard_defconfig                  |  3 +-
 configs/clearfog_defconfig                    |  1 +
 configs/cm_fx6_defconfig                      |  3 +-
 configs/cm_t335_defconfig                     |  3 +-
 configs/cm_t35_defconfig                      |  3 +-
 configs/cm_t43_defconfig                      |  3 +-
 configs/cobra5272_defconfig                   |  1 +
 configs/colibri-imx6ull_defconfig             |  7 +-
 configs/colibri_imx7_defconfig                |  5 +-
 configs/colibri_pxa270_defconfig              |  1 +
 configs/colibri_t20_defconfig                 |  3 +
 configs/colibri_vf_defconfig                  |  5 +-
 configs/comtrend_ar5315u_ram_defconfig        |  1 +
 configs/comtrend_ar5387un_ram_defconfig       |  1 +
 configs/comtrend_ct5361_ram_defconfig         |  1 +
 configs/comtrend_wap5813n_ram_defconfig       |  1 +
 configs/corvus_defconfig                      |  3 +-
 configs/crs305-1g-4s_defconfig                |  2 +-
 configs/da850evm_defconfig                    |  1 -
 configs/da850evm_nand_defconfig               |  2 +-
 configs/db-88f6820-amc_defconfig              |  3 +-
 configs/db-mv784mp-gp_defconfig               |  3 +-
 configs/db-xc3-24g4xg_defconfig               |  4 +-
 configs/devkit3250_defconfig                  |  3 +-
 configs/devkit8000_defconfig                  |  3 +-
 configs/display5_defconfig                    |  2 +-
 configs/display5_factory_defconfig            |  2 +-
 configs/dns325_defconfig                      |  3 +
 configs/dockstar_defconfig                    |  3 +
 configs/dra7xx_evm_defconfig                  |  3 +-
 configs/dra7xx_hs_evm_defconfig               |  3 +-
 configs/draco_defconfig                       |  4 +-
 configs/ds414_defconfig                       |  3 +-
 configs/eb_cpu5282_defconfig                  |  1 +
 configs/eb_cpu5282_internal_defconfig         |  1 +
 configs/edb9315a_defconfig                    |  1 +
 configs/edminiv2_defconfig                    |  1 +
 configs/etamin_defconfig                      |  4 +-
 configs/ethernut5_defconfig                   |  4 +-
 configs/evb-rv1108_defconfig                  |  1 +
 configs/flea3_defconfig                       |  3 +-
 .../gardena-smart-gateway-at91sam_defconfig   |  2 +
 ...gardena-smart-gateway-mt7688-ram_defconfig |  2 +
 .../gardena-smart-gateway-mt7688_defconfig    |  2 +
 configs/gazerbeam_defconfig                   |  1 +
 configs/goflexhome_defconfig                  |  3 +
 configs/gose_defconfig                        |  2 +-
 configs/gurnard_defconfig                     |  3 +-
 configs/guruplug_defconfig                    |  3 +
 configs/gwventana_emmc_defconfig              |  3 +-
 configs/gwventana_gw5904_defconfig            |  3 +-
 configs/gwventana_nand_defconfig              |  5 +-
 configs/harmony_defconfig                     |  3 +
 configs/helios4_defconfig                     |  1 +
 configs/hrcon_defconfig                       |  1 +
 configs/hrcon_dh_defconfig                    |  1 +
 configs/huawei_hg556a_ram_defconfig           |  1 +
 configs/ib62x0_defconfig                      |  3 +
 configs/iconnect_defconfig                    |  3 +
 configs/ids8313_defconfig                     |  3 +
 configs/igep00x0_defconfig                    |  4 +-
 configs/imx6dl_icore_nand_defconfig           |  4 +-
 configs/imx6q_icore_nand_defconfig            |  4 +-
 configs/imx6q_logic_defconfig                 |  5 +-
 configs/imx6qdl_icore_mmc_defconfig           |  4 +-
 configs/imx6qdl_icore_nand_defconfig          |  4 +-
 configs/imx6ul_geam_nand_defconfig            |  4 +-
 configs/imx6ul_isiot_nand_defconfig           |  4 +-
 configs/integratorap_cm720t_defconfig         |  1 +
 configs/integratorap_cm920t_defconfig         |  1 +
 configs/integratorap_cm926ejs_defconfig       |  1 +
 configs/integratorap_cm946es_defconfig        |  1 +
 configs/integratorcp_cm1136_defconfig         |  1 +
 configs/integratorcp_cm920t_defconfig         |  1 +
 configs/integratorcp_cm926ejs_defconfig       |  1 +
 configs/integratorcp_cm946es_defconfig        |  1 +
 configs/k2e_evm_defconfig                     |  4 +-
 configs/k2e_hs_evm_defconfig                  |  4 +-
 configs/k2g_evm_defconfig                     |  5 +-
 configs/k2g_hs_evm_defconfig                  |  5 +-
 configs/k2hk_evm_defconfig                    |  4 +-
 configs/k2hk_hs_evm_defconfig                 |  4 +-
 configs/k2l_evm_defconfig                     |  4 +-
 configs/k2l_hs_evm_defconfig                  |  4 +-
 configs/khadas-vim2_defconfig                 |  2 +-
 configs/km_kirkwood_128m16_defconfig          |  3 +
 configs/km_kirkwood_defconfig                 |  3 +
 configs/km_kirkwood_pci_defconfig             |  3 +
 configs/kmcoge4_defconfig                     |  2 +
 configs/kmcoge5ne_defconfig                   |  2 +
 configs/kmcoge5un_defconfig                   |  3 +
 configs/kmeter1_defconfig                     |  3 +-
 configs/kmnusa_defconfig                      |  3 +
 configs/kmopti2_defconfig                     |  3 +-
 configs/kmsugp1_defconfig                     |  3 +
 configs/kmsupx5_defconfig                     |  3 +-
 configs/kmsuv31_defconfig                     |  3 +
 configs/kmtegr1_defconfig                     |  2 +
 configs/kmtepr2_defconfig                     |  3 +-
 configs/koelsch_defconfig                     |  2 +-
 configs/kzm9g_defconfig                       |  1 +
 configs/lager_defconfig                       |  2 +-
 configs/libretech-ac_defconfig                |  2 +-
 configs/linkit-smart-7688-ram_defconfig       |  1 +
 configs/linkit-smart-7688_defconfig           |  1 +
 configs/lion-rk3368_defconfig                 |  1 +
 configs/ls1021aqds_ddr4_nor_defconfig         |  1 +
 configs/ls1021aqds_ddr4_nor_lpuart_defconfig  |  1 +
 configs/ls1021aqds_nand_defconfig             |  2 +
 configs/ls1021aqds_nor_SECURE_BOOT_defconfig  |  1 +
 configs/ls1021aqds_nor_defconfig              |  1 +
 configs/ls1021aqds_nor_lpuart_defconfig       |  1 +
 configs/ls1021aqds_sdcard_ifc_defconfig       |  1 +
 configs/ls1021atwr_nor_SECURE_BOOT_defconfig  |  1 +
 configs/ls1021atwr_nor_defconfig              |  1 +
 configs/ls1021atwr_nor_lpuart_defconfig       |  1 +
 ...s1021atwr_sdcard_ifc_SECURE_BOOT_defconfig |  1 +
 configs/ls1021atwr_sdcard_ifc_defconfig       |  1 +
 configs/ls1043aqds_defconfig                  |  1 +
 configs/ls1043aqds_lpuart_defconfig           |  1 +
 configs/ls1043aqds_nand_defconfig             |  2 +
 configs/ls1043aqds_nor_ddr3_defconfig         |  1 +
 configs/ls1043aqds_sdcard_ifc_defconfig       |  1 +
 configs/ls1043aqds_tfa_SECURE_BOOT_defconfig  |  2 +
 configs/ls1043aqds_tfa_defconfig              |  2 +
 configs/ls1043ardb_SECURE_BOOT_defconfig      |  1 +
 configs/ls1043ardb_defconfig                  |  1 +
 configs/ls1043ardb_nand_SECURE_BOOT_defconfig |  2 +
 configs/ls1043ardb_nand_defconfig             |  2 +
 .../ls1043ardb_sdcard_SECURE_BOOT_defconfig   |  1 +
 configs/ls1043ardb_sdcard_defconfig           |  1 +
 configs/ls1043ardb_tfa_SECURE_BOOT_defconfig  |  2 +
 configs/ls1043ardb_tfa_defconfig              |  2 +
 configs/ls1046afrwy_tfa_defconfig             |  2 +
 configs/ls1046aqds_SECURE_BOOT_defconfig      |  1 +
 configs/ls1046aqds_defconfig                  |  2 +
 configs/ls1046aqds_lpuart_defconfig           |  1 +
 configs/ls1046aqds_nand_defconfig             |  2 +
 configs/ls1046aqds_sdcard_ifc_defconfig       |  1 +
 configs/ls1046aqds_tfa_SECURE_BOOT_defconfig  |  2 +
 configs/ls1046aqds_tfa_defconfig              |  2 +
 configs/ls1046ardb_emmc_defconfig             |  2 +
 configs/ls1046ardb_qspi_SECURE_BOOT_defconfig |  2 +
 configs/ls1046ardb_qspi_defconfig             |  2 +
 configs/ls1046ardb_qspi_spl_defconfig         |  2 +
 .../ls1046ardb_sdcard_SECURE_BOOT_defconfig   |  2 +
 configs/ls1046ardb_sdcard_defconfig           |  2 +
 configs/ls1046ardb_tfa_SECURE_BOOT_defconfig  |  2 +
 configs/ls1046ardb_tfa_defconfig              |  2 +
 configs/ls1088aqds_defconfig                  |  2 +
 configs/ls1088aqds_qspi_SECURE_BOOT_defconfig |  2 +
 configs/ls1088aqds_qspi_defconfig             |  2 +
 configs/ls1088aqds_sdcard_ifc_defconfig       |  2 +
 configs/ls1088aqds_sdcard_qspi_defconfig      |  2 +
 configs/ls1088aqds_tfa_defconfig              |  2 +
 configs/ls1088ardb_qspi_SECURE_BOOT_defconfig |  2 +
 configs/ls1088ardb_qspi_defconfig             |  2 +
 ...1088ardb_sdcard_qspi_SECURE_BOOT_defconfig |  2 +
 configs/ls1088ardb_sdcard_qspi_defconfig      |  2 +
 configs/ls1088ardb_tfa_SECURE_BOOT_defconfig  |  2 +
 configs/ls1088ardb_tfa_defconfig              |  2 +
 configs/ls2080a_simu_defconfig                |  1 +
 configs/ls2080aqds_SECURE_BOOT_defconfig      |  1 +
 configs/ls2080aqds_defconfig                  |  1 +
 configs/ls2080aqds_nand_defconfig             |  2 +
 configs/ls2080aqds_qspi_defconfig             |  2 +
 configs/ls2080aqds_sdcard_defconfig           |  2 +
 configs/ls2080ardb_SECURE_BOOT_defconfig      |  1 +
 configs/ls2080ardb_defconfig                  |  1 +
 configs/ls2080ardb_nand_defconfig             |  2 +
 configs/ls2088aqds_tfa_defconfig              |  1 +
 configs/ls2088ardb_tfa_SECURE_BOOT_defconfig  |  1 +
 configs/ls2088ardb_tfa_defconfig              |  1 +
 configs/m53menlo_defconfig                    |  5 +-
 configs/malta64_defconfig                     |  1 +
 configs/malta64el_defconfig                   |  1 +
 configs/malta_defconfig                       |  1 +
 configs/maltael_defconfig                     |  1 +
 configs/mccmon6_nor_defconfig                 |  4 +-
 configs/mccmon6_sd_defconfig                  |  4 +-
 configs/medcom-wide_defconfig                 |  2 +
 configs/meesc_defconfig                       |  3 +-
 configs/mgcoge3un_defconfig                   |  3 +
 configs/microblaze-generic_defconfig          |  2 +-
 configs/mpc8308_p1m_defconfig                 |  1 +
 configs/mscc_ocelot_defconfig                 |  1 +
 configs/mx28evk_auart_console_defconfig       |  5 +-
 configs/mx28evk_defconfig                     |  5 +-
 configs/mx28evk_nand_defconfig                |  5 +-
 configs/mx28evk_spi_defconfig                 |  5 +-
 configs/mx31pdk_defconfig                     |  3 +-
 configs/mx35pdk_defconfig                     |  3 +-
 configs/mx53ard_defconfig                     |  3 +-
 configs/mx6sabreauto_defconfig                |  4 +-
 configs/mx6sxsabreauto_defconfig              |  4 +-
 configs/nas220_defconfig                      |  3 +
 configs/netgear_cg3100d_ram_defconfig         |  1 +
 configs/nsa310s_defconfig                     |  3 +
 configs/omap35_logic_defconfig                |  4 +-
 configs/omap35_logic_somlv_defconfig          |  4 +-
 configs/omap3_beagle_defconfig                |  4 +-
 configs/omap3_evm_defconfig                   |  4 +-
 configs/omap3_ha_defconfig                    |  4 +-
 configs/omap3_logic_defconfig                 |  4 +-
 configs/omap3_logic_somlv_defconfig           |  4 +-
 configs/omap3_overo_defconfig                 |  4 +-
 configs/omap3_pandora_defconfig               |  4 +-
 configs/omap3_zoom1_defconfig                 |  3 +-
 configs/omapl138_lcdk_defconfig               |  3 +-
 configs/openrd_base_defconfig                 |  3 +
 configs/openrd_client_defconfig               |  3 +
 configs/openrd_ultimate_defconfig             |  3 +
 configs/pcm052_defconfig                      |  4 +
 configs/pcm058_defconfig                      |  5 +-
 configs/pengwyn_defconfig                     |  3 +-
 configs/pfla02_defconfig                      |  4 +-
 configs/phycore-am335x-r2-wega_defconfig      |  2 +-
 configs/phycore_pcl063_defconfig              |  3 +-
 configs/platinum_picon_defconfig              |  5 +-
 configs/platinum_titanium_defconfig           |  5 +-
 configs/plutux_defconfig                      |  2 +
 configs/pm9261_defconfig                      |  3 +-
 configs/pm9263_defconfig                      |  3 +-
 configs/pm9g45_defconfig                      |  2 +
 configs/pogo_e02_defconfig                    |  3 +
 configs/porter_defconfig                      |  2 +-
 configs/pxm2_defconfig                        |  4 +-
 configs/qemu_arm64_defconfig                  |  2 +-
 configs/qemu_arm_defconfig                    |  2 +-
 configs/qemu_mips64_defconfig                 |  1 +
 configs/qemu_mips64el_defconfig               |  1 +
 configs/qemu_mips_defconfig                   |  1 +
 configs/qemu_mipsel_defconfig                 |  1 +
 configs/r2dplus_defconfig                     |  1 +
 configs/r7780mp_defconfig                     |  1 +
 configs/r8a77995_draak_defconfig              |  2 +-
 configs/rastaban_defconfig                    |  4 +-
 configs/rut_defconfig                         |  4 +-
 configs/s5pc210_universal_defconfig           |  2 +-
 configs/sagem_f@st1704_ram_defconfig          |  1 +
 configs/sama5d2_ptc_ek_mmc_defconfig          |  3 +-
 configs/sama5d2_ptc_ek_nandflash_defconfig    |  2 +
 configs/sama5d36ek_cmp_mmc_defconfig          |  3 +-
 configs/sama5d36ek_cmp_nandflash_defconfig    |  2 +
 configs/sama5d36ek_cmp_spiflash_defconfig     |  3 +-
 configs/sama5d3_xplained_mmc_defconfig        |  4 +-
 configs/sama5d3_xplained_nandflash_defconfig  |  3 +
 configs/sama5d3xek_mmc_defconfig              |  3 +-
 configs/sama5d3xek_nandflash_defconfig        |  2 +
 configs/sama5d3xek_spiflash_defconfig         |  3 +-
 configs/sama5d4_xplained_mmc_defconfig        |  3 +-
 configs/sama5d4_xplained_nandflash_defconfig  |  2 +
 configs/sama5d4_xplained_spiflash_defconfig   |  3 +-
 configs/sama5d4ek_mmc_defconfig               |  3 +-
 configs/sama5d4ek_nandflash_defconfig         |  2 +
 configs/sama5d4ek_spiflash_defconfig          |  3 +-
 configs/sandbox64_defconfig                   |  1 +
 configs/sandbox_defconfig                     |  1 +
 configs/sbc8349_PCI_33_defconfig              |  1 +
 configs/sbc8349_PCI_66_defconfig              |  1 +
 configs/sbc8349_defconfig                     |  1 +
 configs/sbc8548_PCI_33_PCIE_defconfig         |  1 +
 configs/sbc8548_PCI_33_defconfig              |  1 +
 configs/sbc8548_PCI_66_PCIE_defconfig         |  1 +
 configs/sbc8548_PCI_66_defconfig              |  1 +
 configs/sbc8548_defconfig                     |  1 +
 configs/sbc8641d_defconfig                    |  1 +
 configs/seaboard_defconfig                    |  2 +
 configs/sfr_nb4-ser_ram_defconfig             |  1 +
 configs/sh7763rdp_defconfig                   |  1 +
 configs/sheevaplug_defconfig                  |  3 +
 configs/silk_defconfig                        |  2 +-
 configs/smartweb_defconfig                    |  3 +-
 configs/smdkc100_defconfig                    |  2 +-
 configs/snapper9260_defconfig                 |  3 +-
 configs/snapper9g20_defconfig                 |  3 +-
 configs/socfpga_arria10_defconfig             |  2 +-
 configs/socfpga_arria5_defconfig              |  3 +-
 configs/socfpga_cyclone5_defconfig            |  3 +-
 configs/socfpga_dbm_soc1_defconfig            |  2 +-
 configs/socfpga_de0_nano_soc_defconfig        |  3 +-
 configs/socfpga_de10_nano_defconfig           |  2 +-
 configs/socfpga_de1_soc_defconfig             |  2 +-
 configs/socfpga_is1_defconfig                 |  3 +-
 configs/socfpga_mcvevk_defconfig              |  3 -
 configs/socfpga_sockit_defconfig              |  3 +-
 configs/socfpga_socrates_defconfig            |  3 +-
 configs/socfpga_sr1500_defconfig              |  3 +-
 configs/socfpga_stratix10_defconfig           |  1 +
 configs/socfpga_vining_fpga_defconfig         |  3 +-
 configs/socrates_defconfig                    |  1 +
 configs/spear300_defconfig                    |  2 +-
 configs/spear300_nand_defconfig               |  4 +-
 configs/spear300_usbtty_defconfig             |  2 +-
 configs/spear300_usbtty_nand_defconfig        |  4 +-
 configs/spear310_defconfig                    |  2 +-
 configs/spear310_nand_defconfig               |  4 +-
 configs/spear310_pnor_defconfig               |  2 +-
 configs/spear310_usbtty_defconfig             |  2 +-
 configs/spear310_usbtty_nand_defconfig        |  4 +-
 configs/spear310_usbtty_pnor_defconfig        |  2 +-
 configs/spear320_defconfig                    |  2 +-
 configs/spear320_nand_defconfig               |  4 +-
 configs/spear320_pnor_defconfig               |  2 +-
 configs/spear320_usbtty_defconfig             |  2 +-
 configs/spear320_usbtty_nand_defconfig        |  4 +-
 configs/spear320_usbtty_pnor_defconfig        |  2 +-
 configs/spear600_defconfig                    |  2 +-
 configs/spear600_nand_defconfig               |  4 +-
 configs/spear600_usbtty_defconfig             |  2 +-
 configs/spear600_usbtty_nand_defconfig        |  4 +-
 configs/stm32f429-discovery_defconfig         |  1 +
 configs/stm32f429-evaluation_defconfig        |  1 +
 configs/stm32f469-discovery_defconfig         |  2 +-
 configs/stm32f746-disco_defconfig             |  3 +-
 configs/stm32mp15_basic_defconfig             |  3 +-
 configs/stm32mp15_trusted_defconfig           |  3 +-
 configs/stmark2_defconfig                     |  2 +-
 configs/stout_defconfig                       |  2 +-
 configs/strider_con_defconfig                 |  1 +
 configs/strider_con_dp_defconfig              |  1 +
 configs/strider_cpu_defconfig                 |  1 +
 configs/strider_cpu_dp_defconfig              |  1 +
 configs/suvd3_defconfig                       |  3 +-
 configs/tao3530_defconfig                     |  4 +-
 configs/taurus_defconfig                      |  3 +-
 configs/tec_defconfig                         |  2 +
 configs/thuban_defconfig                      |  4 +-
 configs/ti816x_evm_defconfig                  |  3 +-
 configs/titanium_defconfig                    |  5 +-
 configs/tplink_wdr4300_defconfig              |  1 +
 configs/tricorder_defconfig                   |  4 +-
 configs/tricorder_flash_defconfig             |  4 +-
 configs/tuge1_defconfig                       |  3 +-
 configs/turris_mox_defconfig                  |  1 +
 configs/tuxx1_defconfig                       |  3 +-
 configs/uDPU_defconfig                        |  2 +-
 configs/uniphier_ld4_sld8_defconfig           |  4 +-
 configs/uniphier_v7_defconfig                 |  4 +-
 configs/uniphier_v8_defconfig                 |  4 +-
 configs/usb_a9263_dataflash_defconfig         |  3 +-
 configs/vct_platinum_defconfig                |  1 +
 configs/vct_platinum_onenand_defconfig        |  3 +-
 configs/vct_platinum_onenand_small_defconfig  |  3 +-
 configs/vct_platinum_small_defconfig          |  1 +
 configs/vct_platinumavc_defconfig             |  1 +
 configs/vct_platinumavc_onenand_defconfig     |  3 +-
 .../vct_platinumavc_onenand_small_defconfig   |  3 +-
 configs/vct_platinumavc_small_defconfig       |  1 +
 configs/vct_premium_defconfig                 |  1 +
 configs/vct_premium_onenand_defconfig         |  3 +-
 configs/vct_premium_onenand_small_defconfig   |  3 +-
 configs/vct_premium_small_defconfig           |  1 +
 configs/ve8313_defconfig                      |  1 +
 configs/vexpress_aemv8a_juno_defconfig        |  2 +-
 configs/vexpress_aemv8a_semi_defconfig        |  2 +-
 configs/vexpress_ca15_tc2_defconfig           |  2 +-
 configs/vexpress_ca5x2_defconfig              |  2 +-
 configs/vexpress_ca9x4_defconfig              |  2 +-
 configs/vf610twr_defconfig                    |  4 +
 configs/vf610twr_nand_defconfig               |  4 +
 configs/vme8349_defconfig                     |  1 +
 configs/wb45n_defconfig                       |  3 +-
 configs/wb50n_defconfig                       |  3 +-
 configs/woodburn_defconfig                    |  3 +-
 configs/woodburn_sd_defconfig                 |  4 +-
 configs/work_92105_defconfig                  |  2 +
 configs/x530_defconfig                        |  3 +-
 configs/x600_defconfig                        |  3 +
 configs/xilinx_zynqmp_mini_nand_defconfig     |  3 +-
 .../xilinx_zynqmp_zc1751_xm016_dc2_defconfig  |  5 +-
 .../xilinx_zynqmp_zc1751_xm017_dc3_defconfig  |  4 +-
 configs/xpedite517x_defconfig                 |  1 +
 configs/xpedite520x_defconfig                 |  1 +
 configs/xpedite537x_defconfig                 |  1 +
 configs/xpedite550x_defconfig                 |  1 +
 configs/xtfpga_defconfig                      |  1 +
 configs/zmx25_defconfig                       |  1 +
 configs/zynq_cse_nand_defconfig               |  4 +-
 configs/zynq_cse_nor_defconfig                |  1 +
 configs/zynq_zc770_xm011_defconfig            |  5 +-
 configs/zynq_zc770_xm011_x16_defconfig        |  5 +-
 configs/zynq_zc770_xm012_defconfig            |  1 +
 drivers/Makefile                              |  7 +-
 drivers/dfu/Kconfig                           |  1 +
 drivers/mtd/Kconfig                           | 13 +--
 drivers/mtd/Makefile                          | 50 +++++++---
 drivers/mtd/mtd_uboot.c                       | 96 +-----------------
 drivers/mtd/nand/Makefile                     |  5 +
 drivers/mtd/nand/bbt.c                        |  1 +
 drivers/mtd/nand/core.c                       |  1 +
 drivers/mtd/nand/raw/Kconfig                  |  4 +-
 drivers/mtd/nand/raw/nand.c                   |  2 +-
 drivers/mtd/onenand/onenand_uboot.c           |  2 +-
 drivers/mtd/spi/Kconfig                       |  2 +-
 env/Kconfig                                   |  2 +
 include/configs/B4860QDS.h                    | 10 +-
 include/configs/BSC9131RDB.h                  |  4 +-
 include/configs/BSC9132QDS.h                  |  8 +-
 include/configs/C29XPCIE.h                    |  8 +-
 include/configs/P1010RDB.h                    | 12 +--
 include/configs/P1022DS.h                     | 10 +-
 include/configs/P2041RDB.h                    |  6 +-
 include/configs/T102xQDS.h                    |  8 +-
 include/configs/T102xRDB.h                    |  8 +-
 include/configs/T1040QDS.h                    |  6 +-
 include/configs/T104xRDB.h                    | 12 +--
 include/configs/T208xQDS.h                    |  8 +-
 include/configs/T208xRDB.h                    |  8 +-
 include/configs/T4240QDS.h                    | 10 +-
 include/configs/T4240RDB.h                    |  6 +-
 include/configs/am335x_evm.h                  |  6 +-
 include/configs/am335x_guardian.h             |  4 +-
 include/configs/am3517_evm.h                  |  6 +-
 include/configs/am43xx_evm.h                  |  6 +-
 include/configs/baltos.h                      |  6 +-
 include/configs/bav335x.h                     |  8 +-
 include/configs/broadcom_bcm963158.h          |  4 +-
 include/configs/broadcom_bcm968380gerg.h      |  4 +-
 include/configs/broadcom_bcm968580xref.h      |  4 +-
 include/configs/brppt1.h                      | 16 +--
 include/configs/corenet_ds.h                  |  8 +-
 include/configs/da850evm.h                    |  4 +-
 include/configs/dra7xx_evm.h                  |  4 +-
 include/configs/ls2080ardb.h                  |  2 +-
 include/configs/mvebu_armada-37xx.h           |  1 -
 include/configs/omap3_beagle.h                | 10 +-
 include/configs/omap3_evm.h                   | 10 +-
 include/configs/omap3_logic.h                 |  2 +-
 include/configs/omap3_overo.h                 |  6 +-
 include/configs/omap3_pandora.h               |  2 +-
 include/configs/omapl138_lcdk.h               |  2 +-
 include/configs/p1_p2_rdb_pc.h                |  8 +-
 include/configs/phycore_am335x_r2.h           |  6 +-
 include/configs/siemens-am33x-common.h        |  2 +-
 include/configs/socfpga_stratix10_socdk.h     |  1 -
 include/configs/ti_armv7_common.h             |  2 +-
 include/configs/ti_armv7_omap.h               |  2 +-
 include/configs/ti_omap3_common.h             |  2 +-
 include/configs/x530.h                        |  1 -
 include/env_internal.h                        |  4 +-
 include/environment/ti/dfu.h                  |  2 +-
 include/environment/ti/nand.h                 |  2 +-
 include/flash.h                               |  2 +-
 include/linux/mtd/mtd.h                       |  6 --
 849 files changed, 1591 insertions(+), 640 deletions(-)
 create mode 100644 cmd/legacy-mtd-utils.c
 create mode 100644 cmd/legacy-mtd-utils.h

Comments

Miquel Raynal Oct. 3, 2019, 5:55 p.m. UTC | #1
Hi Miquel,

Miquel Raynal <miquel.raynal@bootlin.com> wrote on Thu,  3 Oct 2019
19:50:02 +0200:

> Hello,
> 
> A year ago, while working on SPI-NAND support in U-Boot, I discovered
> when modifying Makefiles a confusing organization where:
> * Sub-directories/files are compiled from the root Makefile
> * Commands are at the root of everything
> 
> First I sent a series to move Makefile entries in their respective
> directories. Then, I decided to continue working on the clarification
> of the Makefile hierarchy in MTD and I sent four iterations of this
> series which did not got merge at that time. Anyway, I revived this
> series by rebasing all my work and updating everything that needed an
> update.
> 
> Here are the main points of the re-organization:
> * Rename CONFIG_MTD into CONFIG_DM_MTD to reserve CONFIG_MTD to what
>   is called today CONFIG_MTD_DEVICE.
> * Fix build dependencies in defconfigs, like: "UBI and NAND depend on MTD".
> * Fix the Kconfig files to reflect these dependencies (as defconfigs
>   have been updated, nothing should break).
> * Simplify the Makefiles: compiling the drivers/mtd/nand/raw/
>   sub-directory should just depend on MTD being compiled and the NAND
>   core as well, there is absolutely no logic to make it depend on
>   CMD_NAND.
> 
> The New green Travis CI build for the fifth version of this series is
> there (yes, 53 iterations):

And here is the missing link:

https://travis-ci.org/miquelraynal/u-boot/builds/592943849


Cheers,
Miquèl
Miquel Raynal Oct. 21, 2019, 8:08 a.m. UTC | #2
Hi Jagan,

Gentle ping.

As discussed half a year ago, please do not trash this series :)

Miquel Raynal <miquel.raynal@bootlin.com> wrote on Thu, 3 Oct 2019
19:55:15 +0200:

> Hi Miquel,
> 
> Miquel Raynal <miquel.raynal@bootlin.com> wrote on Thu,  3 Oct 2019
> 19:50:02 +0200:
> 
> > Hello,
> > 
> > A year ago, while working on SPI-NAND support in U-Boot, I discovered
> > when modifying Makefiles a confusing organization where:
> > * Sub-directories/files are compiled from the root Makefile
> > * Commands are at the root of everything
> > 
> > First I sent a series to move Makefile entries in their respective
> > directories. Then, I decided to continue working on the clarification
> > of the Makefile hierarchy in MTD and I sent four iterations of this
> > series which did not got merge at that time. Anyway, I revived this
> > series by rebasing all my work and updating everything that needed an
> > update.
> > 
> > Here are the main points of the re-organization:
> > * Rename CONFIG_MTD into CONFIG_DM_MTD to reserve CONFIG_MTD to what
> >   is called today CONFIG_MTD_DEVICE.
> > * Fix build dependencies in defconfigs, like: "UBI and NAND depend on MTD".
> > * Fix the Kconfig files to reflect these dependencies (as defconfigs
> >   have been updated, nothing should break).
> > * Simplify the Makefiles: compiling the drivers/mtd/nand/raw/
> >   sub-directory should just depend on MTD being compiled and the NAND
> >   core as well, there is absolutely no logic to make it depend on
> >   CMD_NAND.
> > 
> > The New green Travis CI build for the fifth version of this series is
> > there (yes, 53 iterations):  
> 
> And here is the missing link:
> 
> https://travis-ci.org/miquelraynal/u-boot/builds/592943849
> 


Thanks,
Miquèl
Jagan Teki Oct. 21, 2019, 8:12 a.m. UTC | #3
Hi Miquel,

On Mon, Oct 21, 2019 at 1:38 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
>
> Hi Jagan,
>
> Gentle ping.
>
> As discussed half a year ago, please do not trash this series :)

Please give us sometime, will update accordingly.
Tom Rini Oct. 23, 2019, 11:58 a.m. UTC | #4
On Mon, Oct 21, 2019 at 01:42:08PM +0530, Jagan Teki wrote:
> Hi Miquel,
> 
> On Mon, Oct 21, 2019 at 1:38 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> >
> > Hi Jagan,
> >
> > Gentle ping.
> >
> > As discussed half a year ago, please do not trash this series :)
> 
> Please give us sometime, will update accordingly.

Would you object to me taking this and doing the size-check build and
pushing if it's no-change?  Thanks!
Jagan Teki Oct. 23, 2019, 7:09 p.m. UTC | #5
On Wed, Oct 23, 2019 at 5:28 PM Tom Rini <trini@konsulko.com> wrote:
>
> On Mon, Oct 21, 2019 at 01:42:08PM +0530, Jagan Teki wrote:
> > Hi Miquel,
> >
> > On Mon, Oct 21, 2019 at 1:38 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> > >
> > > Hi Jagan,
> > >
> > > Gentle ping.
> > >
> > > As discussed half a year ago, please do not trash this series :)
> >
> > Please give us sometime, will update accordingly.
>
> Would you object to me taking this and doing the size-check build and
> pushing if it's no-change?  Thanks!

Please wait till end of this weekend.
Jagan Teki Oct. 25, 2019, 9:21 a.m. UTC | #6
On Thu, Oct 3, 2019 at 11:20 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
>
> Hello,
>
> A year ago, while working on SPI-NAND support in U-Boot, I discovered
> when modifying Makefiles a confusing organization where:
> * Sub-directories/files are compiled from the root Makefile
> * Commands are at the root of everything
>
> First I sent a series to move Makefile entries in their respective
> directories. Then, I decided to continue working on the clarification
> of the Makefile hierarchy in MTD and I sent four iterations of this
> series which did not got merge at that time. Anyway, I revived this
> series by rebasing all my work and updating everything that needed an
> update.
>
> Here are the main points of the re-organization:
> * Rename CONFIG_MTD into CONFIG_DM_MTD to reserve CONFIG_MTD to what
>   is called today CONFIG_MTD_DEVICE.
> * Fix build dependencies in defconfigs, like: "UBI and NAND depend on MTD".
> * Fix the Kconfig files to reflect these dependencies (as defconfigs
>   have been updated, nothing should break).
> * Simplify the Makefiles: compiling the drivers/mtd/nand/raw/
>   sub-directory should just depend on MTD being compiled and the NAND
>   core as well, there is absolutely no logic to make it depend on
>   CMD_NAND.
>
> The New green Travis CI build for the fifth version of this series is
> there (yes, 53 iterations):
>
> Please note that the only red test fails because of timeout, not an
> actual error (at least I could not spot it). It is possible that this
> series will produce noticeable changes for the users. The only reason
> for that is because their configuration file was wrong. I have done my
> best to fix them one by one, but I am not omniscient.
>
> Thanks,
> Miquèl
>
>
> Note: as the number of Cc:'ed people reached 184 with
> get_maintainers.pl I decided to trim the list to:
> * People interested by the MTD subsystem.
> * A few maintainers: I had to tweak some defconfigs after more digging
>   than with other boards (k2g, bcm11130, M54418TWR,
>   ls104/108/208). Maintainers of these platforms are Cc:'ed.
>
>
> Changes since v4:
> =================
> * Rebased on top of v2019.10-rc4.
> * Fixed tens of configurations that got broken since the last version
>   of this series several months ago.
> * Added a specific commit for ls104/108/208 configurations.
>
> Changes since v3:
> =================
> * As suggested by Vignesh, SPI_FLASH_MTD depends on MTD. Enforce this
>   in Kconfig with a new patch. There is no defconfig to fix, all
>   defconfigs with SPI_FLASH_MTD already use MTD.
> * s/coherent Makefile/appropriate Makefile/ in commit title of patch 1.
> * s/Kconfig/Makefile in commit message of "mtd: nand: remove
>   dependency on commands in Kconfig" and "mtd: ubi: remove dependency
>   on command in Kconfig".
> * Add Boris R-b tags.
> * Correct typos pointed by Boris.
> * Remove the if/endif in cmd/Kconfig about mtdparts, let the "depends
>   on" that was already present.
> * Use an if/endif block to compile legacy-mtd-utils.c (to avoid
>   failures when both 'sf' and 'nand' commands are compiled-in).
> * Merge all Makefile changes in one consistent commit as suggested by
>   Boris.
>
> Changes since v2:
> =================
> * Cleanup also applied to the SPL in an additional patch.
> * NOR dependency on MTD extracted from the patch adding MTD
>   dependencies on commands only to do it in a separate change.
> * Typo s/copile/compile/ in "rename CONFIG_MTD_DEVICE..." commit log.
> * No more MTD depencency on SPI_FLASH, only kept on SPI_FLASH_MTD.
> * Same applies to the sf command.
> * Avoid compiling the NAND core while it is not needed (not speaking
>   about the raw NAND core, really what is in drivers/mtd/nand:).
> * Last patch dropping CONFIG_MTD_PARTITIONS forgotten. We need them in
>   order to reduce the final binary size.
> * Additional fixes in cmd/Kconfig.
>
> Changes since v1:
> =================
> * Squashed both patches from the first series and included them in
>   "mtd: simplify Makefiles".
> * Added all other patches.
> * Renamed CONFIG_NAND into CONFIG_MTD_RAW_NAND as suggested.
>
>
> Miquel Raynal (26):
>   mtd: rename CONFIG_NAND -> CONFIG_MTD_RAW_NAND
>   mtd: rename CONFIG_MTD -> CONFIG_DM_MTD
>   mtd: rename CONFIG_MTD_DEVICE -> CONFIG_MTD
>   mtd: ensure MTD is compiled when there is a NOR flash
>   mtd: ensure MTD/the raw NAND core are compiled when there is a NAND
>     flash
>   mtd: ensure MTD is compiled when there is a SPI NOR flash using MTD
>   mtd: ensure UBI is compiled when using fastmap
>   mtd: ensure MTD is compiled when UBI is used
>   mtd: ensure UBI is compiled when CMD_UBI is selected
>   mtd: ensure UBI is compiled when ENV_IS_IN_UBI is selected
>   mtd: ensure MTD_RAW_NAND is compiled when ENV_IS_IN_NAND is selected
>   mtd: ensure CMD_NAND is compiled when its options are selected
>   mtd: ensure MTD is compiled when CMD_MTDPARTS is selected
>   configs: move CONFIG_MTD in defconfigs when set in arch includes
>   configs: remove raw NAND core from k2g defconfigs
>   configs: remove MTD support from bcm11130 and M54418TWR defconfigs
>   configs: socfpga: mcvevk: Remove useless UBI infos
>   configs: ls104x/ls108x/ls208x: Build the raw NAND core with TFABOOT
>   mtd: nand: add includes in NAND core to avoid warnings
>   dfu: add dependency on the raw NAND core
>   mtd: nor: NOR flashes depend on MTD
>   mtd: spi: SPI_FLASH_MTD depends on MTD
>   cmd: mtdparts: Kconfig: join mtdparts command entry with its options
>   cmd: nand/sf: isolate legacy code
>   cmd: make MTD commands depend on MTD
>   mtd: Makefile: deep cleanup

Except 24/26 comments. all look fine to me.

Acked-by: Jagan Teki <jagan@amarulasolutions.com>
Tested-by: Jagan Teki <jagan@amarulasolutions.com> # SoPine, SiFive FU540
Tom Rini Oct. 30, 2019, 1:57 p.m. UTC | #7
On Thu, Oct 03, 2019 at 07:50:02PM +0200, Miquel Raynal wrote:

> Hello,
> 
> A year ago, while working on SPI-NAND support in U-Boot, I discovered
> when modifying Makefiles a confusing organization where:
> * Sub-directories/files are compiled from the root Makefile
> * Commands are at the root of everything
> 
> First I sent a series to move Makefile entries in their respective
> directories. Then, I decided to continue working on the clarification
> of the Makefile hierarchy in MTD and I sent four iterations of this
> series which did not got merge at that time. Anyway, I revived this
> series by rebasing all my work and updating everything that needed an
> update.
> 
> Here are the main points of the re-organization:
> * Rename CONFIG_MTD into CONFIG_DM_MTD to reserve CONFIG_MTD to what
>   is called today CONFIG_MTD_DEVICE.
> * Fix build dependencies in defconfigs, like: "UBI and NAND depend on MTD".
> * Fix the Kconfig files to reflect these dependencies (as defconfigs
>   have been updated, nothing should break).
> * Simplify the Makefiles: compiling the drivers/mtd/nand/raw/
>   sub-directory should just depend on MTD being compiled and the NAND
>   core as well, there is absolutely no logic to make it depend on
>   CMD_NAND.
> 
> The New green Travis CI build for the fifth version of this series is
> there (yes, 53 iterations):
> 
> Please note that the only red test fails because of timeout, not an
> actual error (at least I could not spot it). It is possible that this
> series will produce noticeable changes for the users. The only reason
> for that is because their configuration file was wrong. I have done my
> best to fix them one by one, but I am not omniscient.

OK, so I want to grab this series, and I intend to do my best to do so.
But the problem this exposes is just how complex the uses of CONFIG_NAND
got and in turn symbol re-use, on PowerPC.  This (+ v6) showed a few
minor migration problems when I size compared, and those are easily
fixed.  What isn't so easily fixed is that it was also changing
how/where the environment is found on some PowerPC boards.  Fixing that
in turn requires finally finishing off the migration of the main
CONFIG_ENV_xxx symbols to Kconfig.  I have this done outside of about 20
boards.  I'm going to get that finished up as soon as I can and posted,
then make this series depend on that.  Thanks again for doing the hard
work here, we really need this particular migration and clean up!
Miquel Raynal Oct. 31, 2019, 3:05 p.m. UTC | #8
Hi Tom,

Tom Rini <trini@konsulko.com> wrote on Wed, 30 Oct 2019 09:57:13 -0400:

> On Thu, Oct 03, 2019 at 07:50:02PM +0200, Miquel Raynal wrote:
> 
> > Hello,
> > 
> > A year ago, while working on SPI-NAND support in U-Boot, I discovered
> > when modifying Makefiles a confusing organization where:
> > * Sub-directories/files are compiled from the root Makefile
> > * Commands are at the root of everything
> > 
> > First I sent a series to move Makefile entries in their respective
> > directories. Then, I decided to continue working on the clarification
> > of the Makefile hierarchy in MTD and I sent four iterations of this
> > series which did not got merge at that time. Anyway, I revived this
> > series by rebasing all my work and updating everything that needed an
> > update.
> > 
> > Here are the main points of the re-organization:
> > * Rename CONFIG_MTD into CONFIG_DM_MTD to reserve CONFIG_MTD to what
> >   is called today CONFIG_MTD_DEVICE.
> > * Fix build dependencies in defconfigs, like: "UBI and NAND depend on MTD".
> > * Fix the Kconfig files to reflect these dependencies (as defconfigs
> >   have been updated, nothing should break).
> > * Simplify the Makefiles: compiling the drivers/mtd/nand/raw/
> >   sub-directory should just depend on MTD being compiled and the NAND
> >   core as well, there is absolutely no logic to make it depend on
> >   CMD_NAND.
> > 
> > The New green Travis CI build for the fifth version of this series is
> > there (yes, 53 iterations):
> > 
> > Please note that the only red test fails because of timeout, not an
> > actual error (at least I could not spot it). It is possible that this
> > series will produce noticeable changes for the users. The only reason
> > for that is because their configuration file was wrong. I have done my
> > best to fix them one by one, but I am not omniscient.  
> 
> OK, so I want to grab this series, and I intend to do my best to do so.
> But the problem this exposes is just how complex the uses of CONFIG_NAND
> got and in turn symbol re-use, on PowerPC.  This (+ v6) showed a few
> minor migration problems when I size compared, and those are easily
> fixed.  What isn't so easily fixed is that it was also changing
> how/where the environment is found on some PowerPC boards.  Fixing that
> in turn requires finally finishing off the migration of the main
> CONFIG_ENV_xxx symbols to Kconfig.  I have this done outside of about 20
> boards.  I'm going to get that finished up as soon as I can and posted,
> then make this series depend on that.  Thanks again for doing the hard
> work here, we really need this particular migration and clean up!
> 

I see the problem, well, thanks for grabbing it, please keep us
updated and do not hesitate if you need help.

Thanks,
Miquèl
Tom Rini Dec. 5, 2019, 2:50 a.m. UTC | #9
On Thu, Oct 03, 2019 at 07:50:02PM +0200, Miquel Raynal wrote:

> Hello,
> 
> A year ago, while working on SPI-NAND support in U-Boot, I discovered
> when modifying Makefiles a confusing organization where:
> * Sub-directories/files are compiled from the root Makefile
> * Commands are at the root of everything
> 
> First I sent a series to move Makefile entries in their respective
> directories. Then, I decided to continue working on the clarification
> of the Makefile hierarchy in MTD and I sent four iterations of this
> series which did not got merge at that time. Anyway, I revived this
> series by rebasing all my work and updating everything that needed an
> update.
> 
> Here are the main points of the re-organization:
> * Rename CONFIG_MTD into CONFIG_DM_MTD to reserve CONFIG_MTD to what
>   is called today CONFIG_MTD_DEVICE.
> * Fix build dependencies in defconfigs, like: "UBI and NAND depend on MTD".
> * Fix the Kconfig files to reflect these dependencies (as defconfigs
>   have been updated, nothing should break).
> * Simplify the Makefiles: compiling the drivers/mtd/nand/raw/
>   sub-directory should just depend on MTD being compiled and the NAND
>   core as well, there is absolutely no logic to make it depend on
>   CMD_NAND.
> 
> The New green Travis CI build for the fifth version of this series is
> there (yes, 53 iterations):
> 
> Please note that the only red test fails because of timeout, not an
> actual error (at least I could not spot it). It is possible that this
> series will produce noticeable changes for the users. The only reason
> for that is because their configuration file was wrong. I have done my
> best to fix them one by one, but I am not omniscient.
> 
> Thanks,
> Miquèl
> 
> 
> Note: as the number of Cc:'ed people reached 184 with
> get_maintainers.pl I decided to trim the list to:
> * People interested by the MTD subsystem.
> * A few maintainers: I had to tweak some defconfigs after more digging
>   than with other boards (k2g, bcm11130, M54418TWR,
>   ls104/108/208). Maintainers of these platforms are Cc:'ed.
> 
> 
> Changes since v4:
> =================
> * Rebased on top of v2019.10-rc4.
> * Fixed tens of configurations that got broken since the last version
>   of this series several months ago.
> * Added a specific commit for ls104/108/208 configurations.
> 
> Changes since v3:
> =================
> * As suggested by Vignesh, SPI_FLASH_MTD depends on MTD. Enforce this
>   in Kconfig with a new patch. There is no defconfig to fix, all
>   defconfigs with SPI_FLASH_MTD already use MTD.
> * s/coherent Makefile/appropriate Makefile/ in commit title of patch 1.
> * s/Kconfig/Makefile in commit message of "mtd: nand: remove
>   dependency on commands in Kconfig" and "mtd: ubi: remove dependency
>   on command in Kconfig".
> * Add Boris R-b tags.
> * Correct typos pointed by Boris.
> * Remove the if/endif in cmd/Kconfig about mtdparts, let the "depends
>   on" that was already present.
> * Use an if/endif block to compile legacy-mtd-utils.c (to avoid
>   failures when both 'sf' and 'nand' commands are compiled-in).
> * Merge all Makefile changes in one consistent commit as suggested by
>   Boris.
> 
> Changes since v2:
> =================
> * Cleanup also applied to the SPL in an additional patch.
> * NOR dependency on MTD extracted from the patch adding MTD
>   dependencies on commands only to do it in a separate change.
> * Typo s/copile/compile/ in "rename CONFIG_MTD_DEVICE..." commit log.
> * No more MTD depencency on SPI_FLASH, only kept on SPI_FLASH_MTD.
> * Same applies to the sf command.
> * Avoid compiling the NAND core while it is not needed (not speaking
>   about the raw NAND core, really what is in drivers/mtd/nand:).
> * Last patch dropping CONFIG_MTD_PARTITIONS forgotten. We need them in
>   order to reduce the final binary size.
> * Additional fixes in cmd/Kconfig.
> 
> Changes since v1:
> =================
> * Squashed both patches from the first series and included them in
>   "mtd: simplify Makefiles".
> * Added all other patches.
> * Renamed CONFIG_NAND into CONFIG_MTD_RAW_NAND as suggested.
> 
> 
> Miquel Raynal (26):
>   mtd: rename CONFIG_NAND -> CONFIG_MTD_RAW_NAND
>   mtd: rename CONFIG_MTD -> CONFIG_DM_MTD
>   mtd: rename CONFIG_MTD_DEVICE -> CONFIG_MTD
>   mtd: ensure MTD is compiled when there is a NOR flash
>   mtd: ensure MTD/the raw NAND core are compiled when there is a NAND
>     flash
>   mtd: ensure MTD is compiled when there is a SPI NOR flash using MTD
>   mtd: ensure UBI is compiled when using fastmap
>   mtd: ensure MTD is compiled when UBI is used
>   mtd: ensure UBI is compiled when CMD_UBI is selected
>   mtd: ensure UBI is compiled when ENV_IS_IN_UBI is selected
>   mtd: ensure MTD_RAW_NAND is compiled when ENV_IS_IN_NAND is selected
>   mtd: ensure CMD_NAND is compiled when its options are selected
>   mtd: ensure MTD is compiled when CMD_MTDPARTS is selected
>   configs: move CONFIG_MTD in defconfigs when set in arch includes
>   configs: remove raw NAND core from k2g defconfigs
>   configs: remove MTD support from bcm11130 and M54418TWR defconfigs
>   configs: socfpga: mcvevk: Remove useless UBI infos
>   configs: ls104x/ls108x/ls208x: Build the raw NAND core with TFABOOT
>   mtd: nand: add includes in NAND core to avoid warnings
>   dfu: add dependency on the raw NAND core
>   mtd: nor: NOR flashes depend on MTD
>   mtd: spi: SPI_FLASH_MTD depends on MTD
>   cmd: mtdparts: Kconfig: join mtdparts command entry with its options
>   cmd: nand/sf: isolate legacy code
>   cmd: make MTD commands depend on MTD
>   mtd: Makefile: deep cleanup

So, a feature of this series is that it exposes a problem of the
following PowerPC configurations:
P1022DS P1022DS_SDCARD P1022DS_SPIFLASH P1022DS_36BIT_SPIFLASH
P1022DS_36BIT P1022DS_36BIT_SDCARD T4240QDS_SRIO_PCIE_BOOT
T4240QDS_SDCARD T4160QDS_SECURE_BOOT T4160QDS T4240QDS T4160QDS_SDCARD
T4240QDS_SECURE_BOOT B4860QDS_SECURE_BOOT T4160RDB B4420QDS B4860QDS
B4860QDS_SRIO_PCIE_BOOT B4860QDS_SPIFLASH B4420QDS_SPIFLASH
T4240RDB_SDCARD T4240RDB P1025RDB_SPIFLASH P1025RDB_SDCARD
P1024RDB_SPIFLASH P1025RDB P1024RDB_SDCARD P1024RDB P1024RDB_36BIT
P1025RDB_36BIT P5020DS_SECURE_BOOT P3041DS_SRIO_PCIE_BOOT
P3041DS_SECURE_BOOT P5020DS_SDCARD P5020DS P5020DS_SRIO_PCIE_BOOT
P5020DS_SPIFLASH P5040DS_SECURE_BOOT P2041RDB_SECURE_BOOT
P2041RDB_SRIO_PCIE_BOOT P1021RDB-PC_SPIFLASH P1021RDB-PC
P1021RDB-PC_SDCARD P1021RDB-PC_36BIT_SPIFLASH P1021RDB-PC_36BIT_SDCARD
P1021RDB-PC_36BIT P1020RDB-PC_SDCARD P1020RDB-PC_SPIFLASH P1020RDB-PC
P1020RDB-PC_36BIT_SPIFLASH P1020RDB-PC_36BIT_SDCARD P1020RDB-PC_36BIT
P5040DS_SDCARD P3041DS_SPIFLASH P3041DS_SDCARD P5040DS P5040DS_SPIFLASH
P2041RDB P2041RDB_SDCARD P2041RDB_SPIFLASH P3041DS P1020RDB-PD_SDCARD
P2020RDB-PC_SPIFLASH P1020RDB-PD P2020RDB-PC P2020RDB-PC_SDCARD
P1020RDB-PD_SPIFLASH P2020RDB-PC_36BIT P2020RDB-PC_36BIT_SPIFLASH
P2020RDB-PC_36BIT_SDCARD C29XPCIE_NOR_SECBOOT C29XPCIE_SPIFLASH
C29XPCIE_SPIFLASH_SECBOOT C29XPCIE BSC9132QDS_SDCARD_DDRCLK133_SECURE
BSC9132QDS_NOR_DDRCLK133_SECURE BSC9132QDS_SDCARD_DDRCLK100_SECURE
BSC9132QDS_NOR_DDRCLK100_SECURE BSC9132QDS_SPIFLASH_DDRCLK133_SECURE
BSC9132QDS_SPIFLASH_DDRCLK100_SECURE BSC9132QDS_NOR_DDRCLK100
BSC9132QDS_SPIFLASH_DDRCLK133 BSC9132QDS_NAND_DDRCLK133_SECURE
BSC9132QDS_NOR_DDRCLK133 BSC9132QDS_SDCARD_DDRCLK100
BSC9132QDS_SPIFLASH_DDRCLK100 BSC9132QDS_NAND_DDRCLK100_SECURE
BSC9132QDS_SDCARD_DDRCLK133 P1010RDB-PA_SPIFLASH_SECBOOT
P1010RDB-PA_NAND_SECBOOT P1010RDB-PA_SPIFLASH P1010RDB-PA_NOR
P1010RDB-PA_SDCARD BSC9131RDB_SPIFLASH_SYSCLK100 BSC9131RDB_SPIFLASH
P1010RDB-PA_36BIT_SPIFLASH P1010RDB-PA_36BIT_NOR_SECBOOT
P1010RDB-PA_36BIT_NOR_SECBOOT P1010RDB-PA_36BIT_SPIFLASH_SECBOOT
P1010RDB-PA_36BIT_SDCARD P1010RDB-PA_36BIT_NAND_SECBOOT
T2081QDS_SRIO_PCIE_BOOT T2080RDB_SRIO_PCIE_BOOT T1024QDS_DDR4 T2081QDS
T1042RDB T1040RDB_SDCARD T1040RDB T2081QDS_SPIFLASH T1042RDB_PI_SDCARD
T1042D4RDB_SECURE_BOOT T1023RDB_SECURE_BOOT T1023RDB T1040RDB_SPIFLASH
T1040D4RDB_SDCARD T1023RDB_SDCARD T1042RDB_PI T1040D4RDB T2081QDS_SDCARD
T2080RDB_SECURE_BOOT T1042RDB_PI_SPIFLASH T1023RDB_SPIFLASH
T1040D4RDB_SPIFLASH T1040QDS_SECURE_BOOT T1040QDS
T1024QDS_DDR4_SECURE_BOOT T1040QDS_DDR4 T1024QDS_SDCARD T1024QDS
T1024QDS_SECURE_BOOT T1024RDB_SECURE_BOOT T1040D4RDB_SECURE_BOOT
T1040RDB_SECURE_BOOT T1042RDB_SECURE_BOOT T1024QDS_SPIFLASH
T2080QDS_SRIO_PCIE_BOOT P1010RDB-PB_SPIFLASH_SECBOOT
P1010RDB-PB_NOR_SECBOOT P1010RDB-PB_SDCARD P1010RDB-PB_NAND_SECBOOT
P1010RDB-PB_SPIFLASH P1010RDB-PB_NOR P1010RDB-PB_36BIT_NOR
P1010RDB-PB_36BIT_NAND_SECBOOT P1010RDB-PB_36BIT_SPIFLASH_SECBOOT
P1010RDB-PB_36BIT_SDCARD P1010RDB-PB_36BIT_NOR_SECBOOT
P1010RDB-PB_36BIT_SPIFLASH T2080QDS_SECURE_BOOT T1042D4RDB
T1042D4RDB_SDCARD T2080RDB_SDCARD T2080RDB T1042D4RDB_SPIFLASH
T2080RDB_SPIFLASH T1024RDB_SDCARD T1024RDB T1024RDB_SPIFLASH
T2080QDS_SDCARD T2080QDS_SPIFLASH T2080QDS P1010RDB-PA_NOR_SECBOOT 

And that is that before this series they do not fully enable NAND
support normally but do enable it partially and do enable CMD_NAND.
After this series they do not enable CMD_NAND.  This is because if I do
enable CMD_NAND instead we see a large number of other changes wrt
things such as CONFIG_SYS_AMASK0/CONFIG_SYS_AMASK1 and change those
configs from pointing at NOR to pointing at NAND and that seems the
larger functional regression over removing the nand command.  If the
NAND command really should be on in these boards then we do need to
figure out or otherwise rework the config files such that the rest of
the board functions the intended way still.

Also note that while there are a few *_NAND_* configs in that list,
investigation of the u-boot.cfg files shows that enabling
CONFIG_MTD_RAW_NAND (formerly CONFIG_NAND) leads to the other functional
changes noted above.  My assumption currently is that those *_NAND_*
boards above have a latent bug that is now exposed.