[U-Boot] [PATCH v3 02/19] ARM: prepare for moving SoC sources into mach-*
Tom Rini
tom.rini at gmail.com
Sun Feb 22 03:57:44 CET 2015
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 <yamada.m at jp.panasonic.com>
Applied to u-boot/master, thanks!
--
Tom
More information about the U-Boot
mailing list