
Dear Simon Shields,
On 12/09/18 17:28, Simon Shields wrote:
Hi,
This patch series adds support for using U-Boot's SPL as the second stage bootloader ("BL2") on Exynos4412 SoCs.
- Patch #1 adds support for the EMMC/SD OM pin configuration, which is used by the boards I tested on.
- Patch #2 configures the magic values used to indicate system suspend state (which are identical to exynos5).
- Patch #3 renames the existing exynos4 clock/dmc initialisation code to reflect the fact that it only supports exynos4210.
- Patches #4 and #5 add/fill in structs reflecting the PMU and TZASC register layouts on exynos4412, respectively.
- Patch #6 adds the exynos4412 DMC and clock initialisation code and enables building the SPL on exynos4412 platforms.
- Patch #7 enables building the "mkexynosspl" utility for exynos4 SoCs.
The majority of the logic in patch #6 comes from a vendor u-boot dump (2010.12!), however, small portions (mostly code used for 2GB RAM initialisation) were reverse engineered from the vendor bootloader found on a GT-N7100.
This patch series has been tested on a GT-I9300 (exynos4412, 1GB RAM) and a GT-N7100 (exynos4412 prime, 2GB RAM), with a few additional patchsets applied for board/HW support (which I intend to upstream in the future).
Cheers, Simon
Simon Shields (7): ARM: exynos: spl: add EMMC/SD boot mode support exynos4: configure power down magic values ARM: exynos: rename exynos4 setup files to exynos4210 ARM: exynos: fill in exynos4412_power struct ARM: exynos: add exynos4412 TZASC memory layout ARM: exynos: SPL support for exynos 4412 tools: build mkexynosspl for exynos4 as well
arch/arm/mach-exynos/Kconfig | 6 + arch/arm/mach-exynos/Makefile | 3 +- ...init_exynos4.c => clock_init_exynos4210.c} | 2 +- arch/arm/mach-exynos/clock_init_exynos4412.c | 122 +++++ ...c_init_exynos4.c => dmc_init_exynos4210.c} | 2 +- arch/arm/mach-exynos/dmc_init_exynos4412.c | 185 ++++++++ .../{exynos4_setup.h => exynos4210_setup.h} | 0 arch/arm/mach-exynos/exynos4412_setup.h | 425 ++++++++++++++++++ arch/arm/mach-exynos/include/mach/cpu.h | 2 +- arch/arm/mach-exynos/include/mach/dmc.h | 19 + arch/arm/mach-exynos/include/mach/power.h | 290 +++++++++++- arch/arm/mach-exynos/power.c | 12 + arch/arm/mach-exynos/spl_boot.c | 22 +- include/configs/exynos4-common.h | 5 + tools/Makefile | 1 + 15 files changed, 1084 insertions(+), 12 deletions(-) rename arch/arm/mach-exynos/{clock_init_exynos4.c => clock_init_exynos4210.c} (99%) create mode 100644 arch/arm/mach-exynos/clock_init_exynos4412.c rename arch/arm/mach-exynos/{dmc_init_exynos4.c => dmc_init_exynos4210.c} (99%) create mode 100644 arch/arm/mach-exynos/dmc_init_exynos4412.c rename arch/arm/mach-exynos/{exynos4_setup.h => exynos4210_setup.h} (100%) create mode 100644 arch/arm/mach-exynos/exynos4412_setup.h
I've got warning/error.
arch/arm/mach-exynos/spl_boot.c: In function 'copy_uboot_to_ram': arch/arm/mach-exynos/spl_boot.c:189:6: warning: unused variable 'ret' [-Wunused-variable] u32 ret; ^~~ CC spl/arch/arm/mach-exynos/lowlevel_init.o AS spl/arch/arm/lib/crt0_arm_efi.o LD spl/arch/arm/lib/built-in.o CC spl/arch/arm/lib/reloc_arm_efi.o AR spl/arch/arm/lib/lib.a LD spl/arch/arm/mach-exynos/built-in.o spl/arch/arm/mach-exynos/dmc_init_exynos4412.o: In function `board_num_mem_chips': /home/share/Work/u-boot-samsung/arch/arm/mach-exynos/dmc_init_exynos4412.c:35: multiple definition of `mem_ctrl_init' spl/arch/arm/mach-exynos/dmc_init_exynos4210.o:/home/share/Work/u-boot-samsung/arch/arm/mach-exynos/dmc_init_exynos4210.c:169: first defined here spl/arch/arm/mach-exynos/clock_init_exynos4412.o: In function `system_clock_init': /home/share/Work/u-boot-samsung/arch/arm/mach-exynos/clock_init_exynos4412.c:34: multiple definition of `system_clock_init' spl/arch/arm/mach-exynos/clock_init_exynos4210.o:/home/share/Work/u-boot-samsung/arch/arm/mach-exynos/clock_init_exynos4210.c:40: first defined here make[2]: *** [spl/arch/arm/mach-exynos/built-in.o] Error 1 make[1]: *** [spl/arch/arm/mach-exynos] Error 2 make: *** [spl/u-boot-spl] Error 2
Could you please check?
Thanks, Minkyu Kang.