
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