From mboxrd@z Thu Jan 1 00:00:00 1970 From: Masahiro Yamada Date: Thu, 12 Jun 2014 13:10:51 +0900 Subject: [U-Boot] Refactoring of U-Boot directory structure Message-ID: <20140612131050.963A.AA925319@jp.panasonic.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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