u-boot/arch
Masahiro Yamada 01f1445630 ARM: prepare for moving SoC sources into mach-*
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@jp.panasonic.com>
2015-02-21 08:23:51 -05:00
..
arc arc: introduce U-Boot port for ARCv2 ISA 2015-02-13 09:17:51 +03:00
arm ARM: prepare for moving SoC sources into mach-* 2015-02-21 08:23:51 -05:00
avr32 avr32: add generic board support 2015-02-17 22:54:38 +01:00
blackfin Export redesign 2015-01-29 17:09:57 -07:00
m68k m68k: remove TASREG board 2015-01-13 09:37:21 -05:00
microblaze microblaze: spl: Add LISTS to linker script 2015-02-09 15:13:12 +01:00
mips MIPS: unify CPU code in arch/mips/cpu/ 2015-01-30 14:19:58 +01:00
nds32 common: Move dram_init() declaration to common location 2015-02-09 15:08:48 +01:00
nios2 Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
openrisc Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
powerpc common/board_f: factor out reserve_stacks 2015-02-17 22:52:42 +01:00
sandbox Merge branch 'sandbox' of git://git.denx.de/u-boot-x86 2015-02-16 08:37:22 -05:00
sh Replace <compiler.h> with <linux/compiler.h> 2014-12-08 09:35:46 -05:00
sparc Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
x86 dm: Kconfig: Move CONFIG_SYS_MALLOC_F_LEN to Kconfig 2015-02-12 15:17:28 -07:00
.gitignore .gitignore: drop include/asm/proc from ignore pattern 2014-06-19 11:18:54 -04:00
Kconfig powerpc: Permit device tree control of U-Boot (CONFIG_OF_CONTROL) 2015-02-12 10:35:30 -07:00