On Fri, Feb 20, 2015 at 05:04:02PM +0900, Masahiro Yamada wrote: > In U-boot, the directory structure, arch/$(ARCH)/cpu/$(CPU)/$(SOC)/ > has been adopted except that $(CPU) is missing from some > architectures and $(SOC) is missing from some CPUs. > > This structure did not fit very well in some cases. > > [1] AT91 > > AT91 SoC family have been developed across some ARM processor > generations. Generally speaking, some IPs are often re-used in the > same SoC family (same SoC vendor) even when the main processor is > updated. As a result, a SoC-common directory is needed in the upper > level. Currently, AT91 source files are placed as follows: > > arch/arm/cpu/arm920t/at91/* > arch/arm/cpu/arm926ejs/at91/* > arch/arm/cpu/armv7/at91/* > arch/arm/cpu/at91-common/* > > Once directories are split, the motivation for refactorings across > CPU directories is lost. Some files in arm920t/at91/ and > arm926ejs/at91/ are so similar that they could be merged. > > [2] Tegra > > Tegra is a little bit special case where different CPUs are used for > SPL and the main U-boot. To obey the arch/$(ARCH)/cpu/$(CPU)/$(SOC) > structure, the source files must be placed across the CPUs, > again SoC-common directory is necessary in the upper level. > > Moreover, there are several families in Tegra: Tegra20, Tegra30, > Tegra114, Tegra124. Here again, the tegra-common directory is needed > to contain commonly-used files. > > Tegra directories have been sprinkled in the directory structure. > > arch/arm/cpu/arm720t/tegra20 > arch/arm/cpu/arm720t/tegra30 > arch/arm/cpu/arm720t/tegra114 > arch/arm/cpu/arm720t/tegra124 > arch/arm/cpu/arm720t/tegra-common > arch/arm/cpu/armv7/tegra20 > arch/arm/cpu/armv7/tegra30 > arch/arm/cpu/armv7/tegra114 > arch/arm/cpu/armv7/tegra124 > arch/arm/cpu/armv7/tegra-common > arch/arm/cpu/tegra20-common > arch/arm/cpu/tegra30-common > arch/arm/cpu/tegra114-common > arch/arm/cpu/tegra124-common > arch/arm/cpu/tegra-common > > As you see, splitting SoC code by the CPU is not going well, > especially for ARM. > Why don't we collect SoC-specific files into a single place? > > A good example we can follow is Linux's arch/arm/mach-* structure. > > This item was discussed in the following thread: > http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/188548/ > > Looks like I got some positive responses and we are almost ready to > start this movement. > > This commit prepares arch/arm/Makefile for describing machdirs in it. > > After this commit, we can move SoC directory to arch/arm/mach-$(SOC) > in simple steps although some cases such as AT91 and Tegra need more > fixes. > > What we generally have to do is: > > [1] Move files arch/arm/cpu/$(CPU)/$(SOC)/* to arch/arm/mach-$(SOC)/* > [2] Add machine entry into arch/arm/Makefile > [3] Remove "obj-y += $(SOC)" from arch/arm/cpu/$(CPU)/Makefile > [4] Fix the Kconfig file path in arch/arm/Kconfig > [5] Modify MAINTAINERS if necessary > > Signed-off-by: Masahiro Yamada <yamad...@jp.panasonic.com>
Applied to u-boot/master, thanks! -- Tom _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot