[U-Boot] Refactoring of U-Boot directory structure

Masahiro Yamada yamada.m at jp.panasonic.com
Thu Jun 12 06:10:51 CEST 2014


Hi.

In U-Boot, the directory structure under arch/ is like this
arch/${ARCH}/cpu/${CPU}/${SOC}

  Exception:
    - ${CPU} is missing for some architectures such as blackfin, sandbox, etc.
    - There are many boards without ${SOC}


My question is, ${SOC} should always depend on ${CPU} ?

I think it is reasonable to migrate to the structure like this:

     arch/${ARCH}/cpu/${CPU}
                          /mach-${foo}
                          /mach-${bar}

I think  arch/${ARCH}/cpu/${CPU}/${SOC}  structure
have given us a lot of pain.


The problems I want to solve are:


[1] Do not split the similar  SoC family to various directories

at91 SoC directory exists under arm920t, arm926ejs, armv7 directory.

./arch/arm/cpu/arm920t/at91
./arch/arm/cpu/arm926ejs/at91
./arch/arm/cpu/armv7/at91

It looks reasonable to collect at91 sources into a single place,
arch/arm/mach-at91


[2] Collect C/ASM sources and headers into a single place

Now SoC-specific sources are under
./arch/${ARCH}/cpu/${CPU}/${SOC}/

But headers are
./arch/${ARCH}/include/asm/arch-${SOC}/

In the new structure,
./arch/arm/mach-${SOC}/                      : C/ASM files
./arch/arm/mach-${SOC}/include/          : Header files


[3] Do not create a symbolic link to header dicrectory

mkconfig creates a symbolic link to
arch/asm/include/asm/arch-${SOC}

I dislike creating a symbolic link by configuration 
and remove it by mrproper.

Linux Kernel did that long time ago, but they did away with it.


[4] Stop Tegra

Tegra uses different CPU  for SPL and Normal U-boot.
That's why Tegra directories are sprinkled under arch/arm/:

arch/arm/cpu/arm720t/tegra-common/
arch/arm/cpu/arm720t/tegra20/
arch/arm/cpu/arm720t/tegra30/
arch/arm/cpu/arm720t/tegra114/
arch/arm/cpu/arm720t/tegra124/
arch/arm/cpu/armv7/tegra-common/
arch/arm/cpu/armv7/tegra20/
arch/arm/cpu/armv7/tegra30/
arch/arm/cpu/armv7/tegra114/
arch/arm/cpu/armv7/tegra124/
arch/arm/include/asm/arch-tegra/
arch/asm/include/asm/arch-tegra20/
arch/asm/include/asm/arch-tegra30/
arch/asm/include/asm/arch-tegra114/
arch/asm/include/asm/arch-tegra124/


They can be refactored

arch/arm/mach-tegra/                      : tegra common part
arch/arm/mach-tegra/tegra20/         : tegra20-specific
arch/arm/mach-tegra/tegra30/         : tegra30-specific
arch/arm/mach-tegra/tegra114/       : tegra114-specific
arch/arm/mach-tegra/tegra124/       : tegra124-specific

or  maybe

arch/arm/plat-tegra/               : tegra common part
arch/arm/mach-tegra20/         : tegra20-specific
arch/arm/mach-tegra30/         : tegra30-specific
arch/arm/mach-tegra114/       : tegra114-specific
arch/arm/mach-tegra124/       : tegra124-specific



Your comments are welcome!


Best Regards
Masahiro Yamada



More information about the U-Boot mailing list