diff options
Diffstat (limited to 'arch/arm/boards/webasto-ccbv2/lowlevel.c')
-rw-r--r-- | arch/arm/boards/webasto-ccbv2/lowlevel.c | 47 |
1 files changed, 37 insertions, 10 deletions
diff --git a/arch/arm/boards/webasto-ccbv2/lowlevel.c b/arch/arm/boards/webasto-ccbv2/lowlevel.c index 8529ea3735..7a198bd801 100644 --- a/arch/arm/boards/webasto-ccbv2/lowlevel.c +++ b/arch/arm/boards/webasto-ccbv2/lowlevel.c @@ -5,18 +5,17 @@ #include <common.h> #include <debug_ll.h> +#include <mach/imx/debug_ll.h> #include <firmware.h> -#include <mach/generic.h> +#include <mach/imx/generic.h> #include <asm/barebox-arm.h> -#include <mach/esdctl.h> -#include <mach/iomux-mx6ul.h> +#include <mach/imx/esdctl.h> +#include <mach/imx/iomux-mx6ul.h> #include <asm/cache.h> #include <tee/optee.h> #include "ccbv2.h" -extern char __dtb_z_imx6ul_webasto_ccbv2_start[]; - static void configure_uart(void) { void __iomem *iomuxbase = (void *)MX6_IOMUXC_BASE_ADDR; @@ -32,7 +31,7 @@ static void configure_uart(void) } -static void noinline start_ccbv2(u32 r0) +static void noinline start_ccbv2(u32 r0, unsigned long mem_size, char *fdt) { int tee_size; void *tee; @@ -48,7 +47,7 @@ static void noinline start_ccbv2(u32 r0) */ if(IS_ENABLED(CONFIG_FIRMWARE_CCBV2_OPTEE) && !(r0 > MX6_MMDC_P0_BASE_ADDR - && r0 < MX6_MMDC_P0_BASE_ADDR + SZ_256M)) { + && r0 < MX6_MMDC_P0_BASE_ADDR + mem_size)) { get_builtin_firmware(ccbv2_optee_bin, &tee, &tee_size); memset((void *)OPTEE_OVERLAY_LOCATION, 0, 0x1000); @@ -56,10 +55,11 @@ static void noinline start_ccbv2(u32 r0) start_optee_early(NULL, tee); } - imx6ul_barebox_entry(__dtb_z_imx6ul_webasto_ccbv2_start); + imx6ul_barebox_entry(fdt); } -ENTRY_FUNCTION(start_imx6ul_ccbv2, r0, r1, r2) +extern char __dtb_z_imx6ul_webasto_ccbv2_start[]; +ENTRY_FUNCTION(start_imx6ul_ccbv2_256m, r0, r1, r2) { imx6ul_cpu_lowlevel_init(); @@ -70,5 +70,32 @@ ENTRY_FUNCTION(start_imx6ul_ccbv2, r0, r1, r2) setup_c(); barrier(); - start_ccbv2(r0); + start_ccbv2(r0, SZ_256M, __dtb_z_imx6ul_webasto_ccbv2_start); +} + +ENTRY_FUNCTION(start_imx6ul_ccbv2_512m, r0, r1, r2) +{ + imx6ul_cpu_lowlevel_init(); + + arm_setup_stack(0x00910000); + + relocate_to_current_adr(); + setup_c(); + barrier(); + + start_ccbv2(r0, SZ_512M, __dtb_z_imx6ul_webasto_ccbv2_start); +} + +extern char __dtb_z_imx6ul_webasto_marvel_start[]; +ENTRY_FUNCTION(start_imx6ul_marvel, r0, r1, r2) +{ + imx6ul_cpu_lowlevel_init(); + + arm_setup_stack(0x00910000); + + relocate_to_current_adr(); + setup_c(); + barrier(); + + start_ccbv2(r0, SZ_512M, __dtb_z_imx6ul_webasto_marvel_start); } |