From 4540f5e26efc228a3508e491b8c6daa038619206 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 7 May 2014 13:43:05 +0200 Subject: [PATCH] ARM: i.MX: Phytec-phyCARD-i.MX27: Switch to multi-image support Signed-off-by: Sascha Hauer --- .../boards/phytec-phycard-imx27/lowlevel.c | 22 ++++++++++++++----- .../configs/phytec-phycard-imx27_defconfig | 6 +---- arch/arm/dts/Makefile | 1 + arch/arm/mach-imx/Kconfig | 18 +++++++-------- images/Makefile.imx | 4 ++++ 5 files changed, 32 insertions(+), 19 deletions(-) diff --git a/arch/arm/boards/phytec-phycard-imx27/lowlevel.c b/arch/arm/boards/phytec-phycard-imx27/lowlevel.c index 75b97881f..7e4a9f02f 100644 --- a/arch/arm/boards/phytec-phycard-imx27/lowlevel.c +++ b/arch/arm/boards/phytec-phycard-imx27/lowlevel.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -57,14 +58,12 @@ static void sdram_init(void) MX27_ESDCTL_BASE_ADDR + IMX_ESDCTL0); } -void __bare_init __naked barebox_arm_reset_vector(void) +void __bare_init __naked phytec_phycard_imx27_common_init(void *fdt) { unsigned long r; arm_cpu_lowlevel_init(); - arm_setup_stack(MX27_IRAM_BASE_ADDR + MX27_IRAM_SIZE - 12); - /* ahb lite ip interface */ writel(0x20040304, MX27_AIPI_BASE_ADDR + MX27_AIPI1_PSR0); writel(0xdffbfcfb, MX27_AIPI_BASE_ADDR + MX27_AIPI1_PSR1); @@ -74,7 +73,7 @@ void __bare_init __naked barebox_arm_reset_vector(void) /* Skip SDRAM initialization if we run from RAM */ r = get_pc(); if (r > 0xa0000000 && r < 0xc0000000) - imx27_barebox_entry(NULL); + imx27_barebox_entry(fdt); /* 399 MHz */ writel(IMX_PLL_PD(0) | @@ -99,5 +98,18 @@ void __bare_init __naked barebox_arm_reset_vector(void) sdram_init(); - imx27_barebox_boot_nand_external(0); + imx27_barebox_boot_nand_external(fdt); +} + +extern char __dtb_imx27_phytec_phycard_s_rdk_bb_start[]; + +ENTRY_FUNCTION(start_phytec_phycard_imx27, r0, r1, r2) +{ + void *fdt; + + arm_setup_stack(MX27_IRAM_BASE_ADDR + MX27_IRAM_SIZE - 12); + + fdt = __dtb_imx27_phytec_phycard_s_rdk_bb_start - get_runtime_offset(); + + phytec_phycard_imx27_common_init(fdt); } diff --git a/arch/arm/configs/phytec-phycard-imx27_defconfig b/arch/arm/configs/phytec-phycard-imx27_defconfig index 6e3a3ada2..466a765e4 100644 --- a/arch/arm/configs/phytec-phycard-imx27_defconfig +++ b/arch/arm/configs/phytec-phycard-imx27_defconfig @@ -1,12 +1,9 @@ -CONFIG_BUILTIN_DTB=y -CONFIG_BUILTIN_DTB_NAME="imx27-phytec-phycard-s-rdk" CONFIG_ARCH_IMX=y -CONFIG_ARCH_IMX_EXTERNAL_BOOT_NAND=y +CONFIG_IMX_MULTI_BOARDS=y CONFIG_MACH_PCA100=y CONFIG_AEABI=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y -CONFIG_PBL_IMAGE=y CONFIG_MMU=y CONFIG_MALLOC_SIZE=0x01000000 CONFIG_MALLOC_TLSF=y @@ -19,7 +16,6 @@ CONFIG_MENU=y CONFIG_BLSPEC=y CONFIG_CONSOLE_ACTIVATE_NONE=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="" CONFIG_RESET_SOURCE=y CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index b8b7e7bc3..a0fc2f1eb 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -55,6 +55,7 @@ pbl-$(CONFIG_MACH_PHYTEC_PFLA02) += imx6s-phytec-pbab01.dtb.o imx6dl-phytec-pbab pbl-$(CONFIG_MACH_REALQ7) += imx6q-dmo-edmqmx6.dtb.o pbl-$(CONFIG_MACH_SOLIDRUN_CUBOX) += dove-cubox-bb.dtb.o pbl-$(CONFIG_MACH_GK802) += imx6q-gk802.dtb.o +pbl-$(CONFIG_MACH_PCA100) += imx27-phytec-phycard-s-rdk-bb.dtb.o pbl-$(CONFIG_MACH_TORADEX_COLIBRI_T20) += tegra20-colibri-iris.dtb.o pbl-$(CONFIG_MACH_TOSHIBA_AC100) += tegra20-paz00.dtb.o pbl-$(CONFIG_MACH_TQMA53) += imx53-mba53.dtb.o diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index a6aef24ff..3b85f45aa 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -184,6 +184,15 @@ config MACH_TX25 help Say Y here if you are using the Ka-Ro tx25 board +config MACH_PCA100 + bool "phyCard-i.MX27" + select ARCH_IMX27 + select HAVE_DEFAULT_ENVIRONMENT_NEW + select ARCH_IMX_EXTERNAL_BOOT_NAND + help + Say Y here if you are using Phytec's phyCard-i.MX27 (pca100) equipped + with a Freescale i.MX27 Processor + config MACH_EFIKA_MX_SMARTBOOK bool "Efika MX smartbook" select ARCH_IMX51 @@ -335,15 +344,6 @@ config MACH_IMX27ADS Say Y here if you are using the Freescale i.MX27ads board equipped with a Freescale i.MX27 Processor -config MACH_PCA100 - bool "phyCard-i.MX27" - select ARCH_IMX27 - select HAVE_DEFAULT_ENVIRONMENT_NEW - select ARCH_IMX_EXTERNAL_BOOT_NAND - help - Say Y here if you are using Phytec's phyCard-i.MX27 (pca100) equipped - with a Freescale i.MX27 Processor - config MACH_PCM038 bool "phyCORE-i.MX27" select ARCH_IMX27 diff --git a/images/Makefile.imx b/images/Makefile.imx index d00a3e5a0..5085a55cb 100644 --- a/images/Makefile.imx +++ b/images/Makefile.imx @@ -19,6 +19,10 @@ CFG_start_imx25_karo_tx25.pblx.imximg = $(board)/karo-tx25/flash-header-tx25.imx FILE_barebox-karo-tx25-internal.img = start_imx25_karo_tx25.pblx.imximg image-$(CONFIG_MACH_TX25) += barebox-karo-tx25-internal.img +pblx-$(CONFIG_MACH_PCA100) += start_phytec_phycard_imx27 +FILE_barebox-phytec-phycard-imx27.img = start_phytec_phycard_imx27.pblx +image-$(CONFIG_MACH_PCA100) += barebox-phytec-phycard-imx27.img + # ----------------------- i.MX51 based boards --------------------------- pblx-$(CONFIG_MACH_FREESCALE_MX51_PDK) += start_imx51_babbage CFG_start_imx51_babbage.pblx.imximg = $(board)/freescale-mx51-babbage/flash-header-imx51-babbage.imxcfg