summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/webasto-ccbv2/lowlevel.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/boards/webasto-ccbv2/lowlevel.c')
-rw-r--r--arch/arm/boards/webasto-ccbv2/lowlevel.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/arch/arm/boards/webasto-ccbv2/lowlevel.c b/arch/arm/boards/webasto-ccbv2/lowlevel.c
index 32117b0a77..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_512M)) {
+ && 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,9 +55,10 @@ 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);
}
+extern char __dtb_z_imx6ul_webasto_ccbv2_start[];
ENTRY_FUNCTION(start_imx6ul_ccbv2_256m, r0, r1, r2)
{
@@ -70,12 +70,25 @@ ENTRY_FUNCTION(start_imx6ul_ccbv2_256m, 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);
@@ -84,5 +97,5 @@ ENTRY_FUNCTION(start_imx6ul_ccbv2_512m, r0, r1, r2)
setup_c();
barrier();
- start_ccbv2(r0);
+ start_ccbv2(r0, SZ_512M, __dtb_z_imx6ul_webasto_marvel_start);
}