From 09bc89f539d4d8f099ef8e362da30a7c0e944f5f Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Tue, 4 Jun 2013 08:26:59 +0200 Subject: [PATCH 01/18] ARM: i.MX53 loco: Switch to imximage Use the imximage tool to generate an imximage instead of the linker based process. Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-mx53-loco/Makefile | 4 +- arch/arm/boards/freescale-mx53-loco/board.c | 8 ++- .../arm/boards/freescale-mx53-loco/dcd-data.h | 54 ------------------- .../freescale-mx53-loco/flash-header.imxcfg | 54 +++++++++++++++++++ .../boards/freescale-mx53-loco/flash_header.c | 52 ------------------ arch/arm/mach-imx/Kconfig | 1 + 6 files changed, 60 insertions(+), 113 deletions(-) delete mode 100644 arch/arm/boards/freescale-mx53-loco/dcd-data.h create mode 100644 arch/arm/boards/freescale-mx53-loco/flash-header.imxcfg delete mode 100644 arch/arm/boards/freescale-mx53-loco/flash_header.c diff --git a/arch/arm/boards/freescale-mx53-loco/Makefile b/arch/arm/boards/freescale-mx53-loco/Makefile index d44f69771..f1baae24f 100644 --- a/arch/arm/boards/freescale-mx53-loco/Makefile +++ b/arch/arm/boards/freescale-mx53-loco/Makefile @@ -1,3 +1,3 @@ -obj-y += board.o -lwl-y += flash_header.o +obj-y += board.o flash-header.o +extra-y += flash-header.S flash-header.dcd lwl-y += lowlevel.o diff --git a/arch/arm/boards/freescale-mx53-loco/board.c b/arch/arm/boards/freescale-mx53-loco/board.c index 2f5112801..0e3955f41 100644 --- a/arch/arm/boards/freescale-mx53-loco/board.c +++ b/arch/arm/boards/freescale-mx53-loco/board.c @@ -75,9 +75,7 @@ static void loco_fec_reset(void) #define MX53_LOCO_USB_PWREN IMX_GPIO_NR(7, 8) -#define DCD_NAME static struct imx_dcd_v2_entry dcd_entry - -#include "dcd-data.h" +extern char flash_header_start[], flash_header_end[]; static int loco_late_init(void) { @@ -116,8 +114,8 @@ static int loco_late_init(void) armlinux_set_architecture(MACH_TYPE_MX53_LOCO); imx53_bbu_internal_mmc_register_handler("mmc", "/dev/mmc0", - BBU_HANDLER_FLAG_DEFAULT, dcd_entry, sizeof(dcd_entry), 0); - + BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_start, + flash_header_end - flash_header_start, 0); return 0; } diff --git a/arch/arm/boards/freescale-mx53-loco/dcd-data.h b/arch/arm/boards/freescale-mx53-loco/dcd-data.h deleted file mode 100644 index 9f95fb4b8..000000000 --- a/arch/arm/boards/freescale-mx53-loco/dcd-data.h +++ /dev/null @@ -1,54 +0,0 @@ - -DCD_NAME[] = { - { .addr = cpu_to_be32(0x53fa8554), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8558), .val = cpu_to_be32(0x00300040), }, - { .addr = cpu_to_be32(0x53fa8560), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8564), .val = cpu_to_be32(0x00300040), }, - { .addr = cpu_to_be32(0x53fa8568), .val = cpu_to_be32(0x00300040), }, - { .addr = cpu_to_be32(0x53fa8570), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8574), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8578), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa857c), .val = cpu_to_be32(0x00300040), }, - { .addr = cpu_to_be32(0x53fa8580), .val = cpu_to_be32(0x00300040), }, - { .addr = cpu_to_be32(0x53fa8584), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8588), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8590), .val = cpu_to_be32(0x00300040), }, - { .addr = cpu_to_be32(0x53fa8594), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa86f0), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa86f4), .val = cpu_to_be32(0x00000000), }, - { .addr = cpu_to_be32(0x53fa86fc), .val = cpu_to_be32(0x00000000), }, - { .addr = cpu_to_be32(0x53fa8714), .val = cpu_to_be32(0x00000000), }, - { .addr = cpu_to_be32(0x53fa8718), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa871c), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8720), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa8724), .val = cpu_to_be32(0x04000000), }, - { .addr = cpu_to_be32(0x53fa8728), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x53fa872c), .val = cpu_to_be32(0x00300000), }, - { .addr = cpu_to_be32(0x63fd9088), .val = cpu_to_be32(0x35343535), }, - { .addr = cpu_to_be32(0x63fd9090), .val = cpu_to_be32(0x4d444c44), }, - { .addr = cpu_to_be32(0x63fd907c), .val = cpu_to_be32(0x01370138), }, - { .addr = cpu_to_be32(0x63fd9080), .val = cpu_to_be32(0x013b013c), }, - { .addr = cpu_to_be32(0x63fd9018), .val = cpu_to_be32(0x00011740), }, - { .addr = cpu_to_be32(0x63fd9000), .val = cpu_to_be32(0xc3190000), }, - { .addr = cpu_to_be32(0x63fd900c), .val = cpu_to_be32(0x9f5152e3), }, - { .addr = cpu_to_be32(0x63fd9010), .val = cpu_to_be32(0xb68e8a63), }, - { .addr = cpu_to_be32(0x63fd9014), .val = cpu_to_be32(0x01ff00db), }, - { .addr = cpu_to_be32(0x63fd902c), .val = cpu_to_be32(0x000026d2), }, - { .addr = cpu_to_be32(0x63fd9030), .val = cpu_to_be32(0x009f0e21), }, - { .addr = cpu_to_be32(0x63fd9008), .val = cpu_to_be32(0x12273030), }, - { .addr = cpu_to_be32(0x63fd9004), .val = cpu_to_be32(0x0002002d), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x00008032), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x00008033), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x00028031), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x052080b0), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x04008040), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x0000803a), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x0000803b), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x00028039), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x05208138), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x04008048), }, - { .addr = cpu_to_be32(0x63fd9020), .val = cpu_to_be32(0x00005800), }, - { .addr = cpu_to_be32(0x63fd9040), .val = cpu_to_be32(0x04b80003), }, - { .addr = cpu_to_be32(0x63fd9058), .val = cpu_to_be32(0x00022227), }, - { .addr = cpu_to_be32(0x63fd901c), .val = cpu_to_be32(0x00000000), }, -}; diff --git a/arch/arm/boards/freescale-mx53-loco/flash-header.imxcfg b/arch/arm/boards/freescale-mx53-loco/flash-header.imxcfg new file mode 100644 index 000000000..95bcd1980 --- /dev/null +++ b/arch/arm/boards/freescale-mx53-loco/flash-header.imxcfg @@ -0,0 +1,54 @@ +loadaddr 0x70000000 +soc imx53 +dcdofs 0x400 +wm 32 0x53fa8554 0x00300000 +wm 32 0x53fa8558 0x00300040 +wm 32 0x53fa8560 0x00300000 +wm 32 0x53fa8564 0x00300040 +wm 32 0x53fa8568 0x00300040 +wm 32 0x53fa8570 0x00300000 +wm 32 0x53fa8574 0x00300000 +wm 32 0x53fa8578 0x00300000 +wm 32 0x53fa857c 0x00300040 +wm 32 0x53fa8580 0x00300040 +wm 32 0x53fa8584 0x00300000 +wm 32 0x53fa8588 0x00300000 +wm 32 0x53fa8590 0x00300040 +wm 32 0x53fa8594 0x00300000 +wm 32 0x53fa86f0 0x00300000 +wm 32 0x53fa86f4 0x00000000 +wm 32 0x53fa86fc 0x00000000 +wm 32 0x53fa8714 0x00000000 +wm 32 0x53fa8718 0x00300000 +wm 32 0x53fa871c 0x00300000 +wm 32 0x53fa8720 0x00300000 +wm 32 0x53fa8724 0x04000000 +wm 32 0x53fa8728 0x00300000 +wm 32 0x53fa872c 0x00300000 +wm 32 0x63fd9088 0x35343535 +wm 32 0x63fd9090 0x4d444c44 +wm 32 0x63fd907c 0x01370138 +wm 32 0x63fd9080 0x013b013c +wm 32 0x63fd9018 0x00011740 +wm 32 0x63fd9000 0xc3190000 +wm 32 0x63fd900c 0x9f5152e3 +wm 32 0x63fd9010 0xb68e8a63 +wm 32 0x63fd9014 0x01ff00db +wm 32 0x63fd902c 0x000026d2 +wm 32 0x63fd9030 0x009f0e21 +wm 32 0x63fd9008 0x12273030 +wm 32 0x63fd9004 0x0002002d +wm 32 0x63fd901c 0x00008032 +wm 32 0x63fd901c 0x00008033 +wm 32 0x63fd901c 0x00028031 +wm 32 0x63fd901c 0x052080b0 +wm 32 0x63fd901c 0x04008040 +wm 32 0x63fd901c 0x0000803a +wm 32 0x63fd901c 0x0000803b +wm 32 0x63fd901c 0x00028039 +wm 32 0x63fd901c 0x05208138 +wm 32 0x63fd901c 0x04008048 +wm 32 0x63fd9020 0x00005800 +wm 32 0x63fd9040 0x04b80003 +wm 32 0x63fd9058 0x00022227 +wm 32 0x63fd901c 0x00000000 diff --git a/arch/arm/boards/freescale-mx53-loco/flash_header.c b/arch/arm/boards/freescale-mx53-loco/flash_header.c deleted file mode 100644 index dc1162bac..000000000 --- a/arch/arm/boards/freescale-mx53-loco/flash_header.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2011 Marc Kleine-Budde - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - */ - -#include -#include -#include -#include - -void __naked __flash_header_start go(void) -{ - barebox_arm_head(); -} - -#define DCD_NAME struct imx_dcd_v2_entry __dcd_entry_section dcd_entry - -#include "dcd-data.h" - -#define APP_DEST 0x70000000 - -struct imx_flash_header_v2 __flash_header_section flash_header = { - .header.tag = IVT_HEADER_TAG, - .header.length = cpu_to_be16(32), - .header.version = IVT_VERSION, - - .entry = APP_DEST + 0x1000, - .dcd_ptr = APP_DEST + 0x400 + offsetof(struct imx_flash_header_v2, dcd), - .boot_data_ptr = APP_DEST + 0x400 + offsetof(struct imx_flash_header_v2, boot_data), - .self = APP_DEST + 0x400, - - .boot_data.start = APP_DEST, - .boot_data.size = DCD_BAREBOX_SIZE, - - .dcd.header.tag = DCD_HEADER_TAG, - .dcd.header.length = cpu_to_be16(sizeof(struct imx_dcd) + sizeof(dcd_entry)), - .dcd.header.version = DCD_VERSION, - - .dcd.command.tag = DCD_COMMAND_WRITE_TAG, - .dcd.command.length = cpu_to_be16(sizeof(struct imx_dcd_command) + sizeof(dcd_entry)), - .dcd.command.param = DCD_COMMAND_WRITE_PARAM, -}; diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index b80e88564..4f9ef3e5a 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -476,6 +476,7 @@ choice config MACH_FREESCALE_MX53_LOCO select HAVE_DEFAULT_ENVIRONMENT_NEW + select ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE bool "Freescale i.MX53 LOCO" config MACH_FREESCALE_MX53_SMD From cd977b93641a2e00f5c70b340058f141146eea8f Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 13:10:02 +0200 Subject: [PATCH 02/18] ARM: i.MX53 loco: Switch to multi image support This converts the Freescale i.MX53 loco aka qsb board to multi image. The image will be named: barebox-freescale-imx53-loco.img Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-mx53-loco/lowlevel.c | 14 ++++++++++++-- arch/arm/configs/freescale_mx53_loco_defconfig | 3 --- arch/arm/dts/Makefile | 2 ++ arch/arm/mach-imx/Kconfig | 3 ++- images/Makefile.imx | 7 +++++++ 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/arch/arm/boards/freescale-mx53-loco/lowlevel.c b/arch/arm/boards/freescale-mx53-loco/lowlevel.c index 60c28f785..d920524da 100644 --- a/arch/arm/boards/freescale-mx53-loco/lowlevel.c +++ b/arch/arm/boards/freescale-mx53-loco/lowlevel.c @@ -1,9 +1,19 @@ #include #include #include +#include -void __naked barebox_arm_reset_vector(void) +extern char __dtb_imx53_qsb_start[]; + +ENTRY_FUNCTION(start_imx53_loco)(void) { + uint32_t fdt; + + __barebox_arm_head(); + arm_cpu_lowlevel_init(); - imx53_barebox_entry(0); + + fdt = (uint32_t)__dtb_imx53_qsb_start - get_runtime_offset(); + + imx53_barebox_entry(fdt); } diff --git a/arch/arm/configs/freescale_mx53_loco_defconfig b/arch/arm/configs/freescale_mx53_loco_defconfig index e45863c26..f502f5e05 100644 --- a/arch/arm/configs/freescale_mx53_loco_defconfig +++ b/arch/arm/configs/freescale_mx53_loco_defconfig @@ -1,5 +1,3 @@ -CONFIG_BUILTIN_DTB=y -CONFIG_BUILTIN_DTB_NAME="imx53-qsb" CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX53=y CONFIG_IMX_IIM=y @@ -8,7 +6,6 @@ CONFIG_THUMB2_BAREBOX=y CONFIG_CMD_ARM_MMUINFO=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y -CONFIG_PBL_IMAGE=y CONFIG_MMU=y CONFIG_MALLOC_SIZE=0x0 CONFIG_MALLOC_TLSF=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 678f910c5..a039a3c66 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -8,6 +8,8 @@ dtb-$(CONFIG_ARCH_IMX6) += imx6q-dmo-realq7.dtb \ BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_NAME)) obj-$(CONFIG_BUILTIN_DTB) += $(BUILTIN_DTB).dtb.o +pbl-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += imx53-qsb.dtb.o + .SECONDARY: $(obj)/$(BUILTIN_DTB).dtb.S .SECONDARY: $(patsubst %,$(obj)/%.S,$(dtb-y)) diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 4f9ef3e5a..134521e02 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -97,6 +97,7 @@ endchoice config ARCH_IMX_IMXIMAGE bool + default y help if enabled the imx-image tool is compiled @@ -476,7 +477,7 @@ choice config MACH_FREESCALE_MX53_LOCO select HAVE_DEFAULT_ENVIRONMENT_NEW - select ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE + select HAVE_PBL_MULTI_IMAGES bool "Freescale i.MX53 LOCO" config MACH_FREESCALE_MX53_SMD diff --git a/images/Makefile.imx b/images/Makefile.imx index 63347297e..3a5b5f1d8 100644 --- a/images/Makefile.imx +++ b/images/Makefile.imx @@ -13,3 +13,10 @@ board = $(srctree)/arch/$(ARCH)/boards pblx-$(CONFIG_MACH_PCM038) += start_imx27_pcm038 FILE_barebox-phytec-phycore-imx27.img = start_imx27_pcm038.pblx image-$(CONFIG_MACH_PCM038) += barebox-phytec-phycore-imx27.img + +# ----------------------- i.MX53 based boards --------------------------- +pblx-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += start_imx53_loco +CFG_start_imx53_loco.pblx.imximg = $(board)/freescale-mx53-loco/flash-header.imxcfg +imximage-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += start_imx53_loco.pblx.imximg +FILE_barebox-freescale-imx53-loco.img = start_imx53_loco.pblx.imximg +image-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += barebox-freescale-imx53-loco.img From 9172539a60a645f05a0d7199f9a5c61def4b5ba1 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 13:44:37 +0200 Subject: [PATCH 03/18] ARM: dmo realq7: switch to multi image support The image will be named after the official name of this board: barebox-datamodul-edm-qmx6.img Signed-off-by: Sascha Hauer --- arch/arm/boards/dmo-mx6-realq7/lowlevel.c | 12 ++++++++++-- arch/arm/configs/dmo-realq7_defconfig | 3 --- arch/arm/dts/Makefile | 1 + arch/arm/mach-imx/Kconfig | 2 +- images/Makefile.imx | 7 +++++++ 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/arch/arm/boards/dmo-mx6-realq7/lowlevel.c b/arch/arm/boards/dmo-mx6-realq7/lowlevel.c index ebcf76f0f..240116d7b 100644 --- a/arch/arm/boards/dmo-mx6-realq7/lowlevel.c +++ b/arch/arm/boards/dmo-mx6-realq7/lowlevel.c @@ -138,8 +138,14 @@ static void sdram_init(void) writel(0x00000001, 0x021e8080); } -void __naked barebox_arm_reset_vector(void) +extern char __dtb_imx6q_dmo_realq7_start[]; + +ENTRY_FUNCTION(start_imx6_realq7)(void) { + uint32_t fdt; + + __barebox_arm_head(); + arm_cpu_lowlevel_init(); arm_setup_stack(0x00940000 - 8); @@ -151,5 +157,7 @@ void __naked barebox_arm_reset_vector(void) mmdc_do_dqs_calibration(); } - barebox_arm_entry(0x10000000, SZ_2G, 0); + fdt = (uint32_t)__dtb_imx6q_dmo_realq7_start - get_runtime_offset(); + + barebox_arm_entry(0x10000000, SZ_2G, fdt); } diff --git a/arch/arm/configs/dmo-realq7_defconfig b/arch/arm/configs/dmo-realq7_defconfig index 550168357..1339391b0 100644 --- a/arch/arm/configs/dmo-realq7_defconfig +++ b/arch/arm/configs/dmo-realq7_defconfig @@ -1,5 +1,3 @@ -CONFIG_BUILTIN_DTB=y -CONFIG_BUILTIN_DTB_NAME="imx6q-dmo-realq7" CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX6=y CONFIG_MACH_REALQ7=y @@ -9,7 +7,6 @@ CONFIG_THUMB2_BAREBOX=y CONFIG_CMD_ARM_MMUINFO=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y -CONFIG_PBL_IMAGE=y CONFIG_MMU=y CONFIG_TEXT_BASE=0x8fc00000 CONFIG_MALLOC_SIZE=0x40000000 diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index a039a3c66..06579f1f4 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -9,6 +9,7 @@ BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_NAME)) obj-$(CONFIG_BUILTIN_DTB) += $(BUILTIN_DTB).dtb.o pbl-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += imx53-qsb.dtb.o +pbl-$(CONFIG_MACH_REALQ7) += imx6q-dmo-realq7.dtb.o .SECONDARY: $(obj)/$(BUILTIN_DTB).dtb.S .SECONDARY: $(patsubst %,$(obj)/%.S,$(dtb-y)) diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 134521e02..6d5246e9c 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -531,8 +531,8 @@ config MACH_SABRESD config MACH_REALQ7 bool "DataModul i.MX6Q Real Qseven Board" - select ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE select HAVE_DEFAULT_ENVIRONMENT_NEW + select HAVE_PBL_MULTI_IMAGES endchoice diff --git a/images/Makefile.imx b/images/Makefile.imx index 3a5b5f1d8..11c416095 100644 --- a/images/Makefile.imx +++ b/images/Makefile.imx @@ -20,3 +20,10 @@ CFG_start_imx53_loco.pblx.imximg = $(board)/freescale-mx53-loco/flash-header.imx imximage-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += start_imx53_loco.pblx.imximg FILE_barebox-freescale-imx53-loco.img = start_imx53_loco.pblx.imximg image-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += barebox-freescale-imx53-loco.img + +# ----------------------- i.MX6 based boards --------------------------- +pblx-$(CONFIG_MACH_REALQ7) += start_imx6_realq7 +CFG_start_imx6_realq7.pblx.imximg = $(board)/dmo-mx6-realq7/flash-header.imxcfg +imximage-$(CONFIG_MACH_REALQ7) += start_imx6_realq7.pblx.imximg +FILE_barebox-datamodul-edm-qmx6.img = start_imx6_realq7.pblx.imximg +image-$(CONFIG_MACH_REALQ7) += barebox-datamodul-edm-qmx6.img From fd2e121b5b910cc5197464121146e52ddcd0b1cb Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 13:49:48 +0200 Subject: [PATCH 04/18] ARM: i.MX51 babbage: switch to multi image support The image will be named: barebox-freescale-imx51-babbage.img Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-mx51-pdk/lowlevel.c | 14 ++++++++++++-- arch/arm/configs/freescale_mx51_babbage_defconfig | 3 --- arch/arm/dts/Makefile | 1 + arch/arm/mach-imx/Kconfig | 2 +- images/Makefile.imx | 7 +++++++ 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/arch/arm/boards/freescale-mx51-pdk/lowlevel.c b/arch/arm/boards/freescale-mx51-pdk/lowlevel.c index 3e6a0ee32..8c1acb45c 100644 --- a/arch/arm/boards/freescale-mx51-pdk/lowlevel.c +++ b/arch/arm/boards/freescale-mx51-pdk/lowlevel.c @@ -1,9 +1,19 @@ #include #include #include +#include -void __naked barebox_arm_reset_vector(void) +extern char __dtb_imx51_babbage_start[]; + +ENTRY_FUNCTION(start_imx51_babbage)(void) { + uint32_t fdt; + + __barebox_arm_head(); + arm_cpu_lowlevel_init(); - imx51_barebox_entry(0); + + fdt = (uint32_t)__dtb_imx51_babbage_start - get_runtime_offset(); + + imx51_barebox_entry(fdt); } diff --git a/arch/arm/configs/freescale_mx51_babbage_defconfig b/arch/arm/configs/freescale_mx51_babbage_defconfig index 2c03c1421..d382dc8e1 100644 --- a/arch/arm/configs/freescale_mx51_babbage_defconfig +++ b/arch/arm/configs/freescale_mx51_babbage_defconfig @@ -1,5 +1,3 @@ -CONFIG_BUILTIN_DTB=y -CONFIG_BUILTIN_DTB_NAME="imx51-babbage" CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX51=y CONFIG_IMX_IIM=y @@ -17,7 +15,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_NONE=y -CONFIG_DEFAULT_ENVIRONMENT_COMPRESSED_LZO=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/freescale-mx51-pdk/env/" CONFIG_CMD_EDIT=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 06579f1f4..1158f41c1 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_IMX6) += imx6q-dmo-realq7.dtb \ BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_NAME)) obj-$(CONFIG_BUILTIN_DTB) += $(BUILTIN_DTB).dtb.o +pbl-$(CONFIG_MACH_FREESCALE_MX51_PDK) += imx51-babbage.dtb.o pbl-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += imx53-qsb.dtb.o pbl-$(CONFIG_MACH_REALQ7) += imx6q-dmo-realq7.dtb.o diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 6d5246e9c..fd92da336 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -426,7 +426,7 @@ choice config MACH_FREESCALE_MX51_PDK select HAVE_DEFAULT_ENVIRONMENT_NEW - select ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE + select HAVE_PBL_MULTI_IMAGES bool "Freescale i.MX51 PDK" config MACH_EUKREA_CPUIMX51SD diff --git a/images/Makefile.imx b/images/Makefile.imx index 11c416095..72e8cde1d 100644 --- a/images/Makefile.imx +++ b/images/Makefile.imx @@ -14,6 +14,13 @@ pblx-$(CONFIG_MACH_PCM038) += start_imx27_pcm038 FILE_barebox-phytec-phycore-imx27.img = start_imx27_pcm038.pblx image-$(CONFIG_MACH_PCM038) += barebox-phytec-phycore-imx27.img +# ----------------------- i.MX51 based boards --------------------------- +pblx-$(CONFIG_MACH_FREESCALE_MX51_PDK) += start_imx51_babbage +CFG_start_imx51_babbage.pblx.imximg = $(board)/freescale-mx51-pdk/flash-header.imxcfg +imximage-$(CONFIG_MACH_FREESCALE_MX51_PDK) += start_imx51_babbage.pblx.imximg +FILE_barebox-freescale-imx51-babbage.img = start_imx51_babbage.pblx.imximg +image-$(CONFIG_MACH_FREESCALE_MX51_PDK) += barebox-freescale-imx51-babbage.img + # ----------------------- i.MX53 based boards --------------------------- pblx-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += start_imx53_loco CFG_start_imx53_loco.pblx.imximg = $(board)/freescale-mx53-loco/flash-header.imxcfg From 746089c22469ddde350078650c7c7e7ffd6da652 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 26 Jun 2013 07:46:31 +0200 Subject: [PATCH 05/18] ARM: i.MX: use device_detect_by_name where applicable Signed-off-by: Sascha Hauer --- arch/arm/boards/dmo-mx6-realq7/board.c | 6 +----- arch/arm/boards/freescale-mx53-loco/board.c | 4 +--- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/arch/arm/boards/dmo-mx6-realq7/board.c b/arch/arm/boards/dmo-mx6-realq7/board.c index b2a27a425..7983b8802 100644 --- a/arch/arm/boards/dmo-mx6-realq7/board.c +++ b/arch/arm/boards/dmo-mx6-realq7/board.c @@ -117,11 +117,7 @@ static int realq7_env_init(void) { switch (bootsource_get()) { case BOOTSOURCE_MMC: - if (!IS_ENABLED(CONFIG_MCI_STARTUP)) { - struct device_d *dev = get_device_by_name("mmc3"); - if (dev) - device_detect(dev); - } + device_detect_by_name("mmc3"); devfs_add_partition("mmc3", 0, SZ_1M, DEVFS_PARTITION_FIXED, "mmc3.barebox"); devfs_add_partition("mmc3", SZ_1M, SZ_1M, DEVFS_PARTITION_FIXED, "mmc3.bareboxenv"); default_environment_path = "/dev/mmc3.bareboxenv"; diff --git a/arch/arm/boards/freescale-mx53-loco/board.c b/arch/arm/boards/freescale-mx53-loco/board.c index 0e3955f41..dd4251dc9 100644 --- a/arch/arm/boards/freescale-mx53-loco/board.c +++ b/arch/arm/boards/freescale-mx53-loco/board.c @@ -79,12 +79,10 @@ extern char flash_header_start[], flash_header_end[]; static int loco_late_init(void) { - struct device_d *dev = get_device_by_name("mmc0"); struct mc34708 *mc34708; int rev; - if (dev) - device_detect(dev); + device_detect_by_name("mmc0"); devfs_add_partition("mmc0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); From 6bbb24cf8d0b0a060c57d9c07610210cdf2dcc96 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 13:59:10 +0200 Subject: [PATCH 06/18] ARM: Turn most board directories into regular build directories Signed-off-by: Sascha Hauer --- arch/arm/Makefile | 78 +++++----------------------------------- arch/arm/boards/Makefile | 68 +++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 69 deletions(-) create mode 100644 arch/arm/boards/Makefile diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 658b1a5cc..eb71ba52d 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -69,13 +69,19 @@ machine-$(CONFIG_ARCH_VEXPRESS) := vexpress machine-$(CONFIG_ARCH_TEGRA) := tegra machine-$(CONFIG_ARCH_ZYNQ) := zynq + # Board directory name. This list is sorted alphanumerically # by CONFIG_* macro name. - +# +# DO NOT ADD NEW ENTRIES TO THIS LIST! +# Add to arch/arm/boards/Makefile instead. +# +# These are here only because they have a board specific config.h. +# TODO: Get rid of board specific config.h and move these to +# arch/arm/boards/Makefile aswell. board-$(CONFIG_MACH_A9M2410) += a9m2410 board-$(CONFIG_MACH_A9M2440) += a9m2440 board-$(CONFIG_MACH_ANIMEO_IP) += animeo_ip -board-$(CONFIG_MACH_ARCHOSG9) += archosg9 board-$(CONFIG_MACH_AT91RM9200EK) += at91rm9200ek board-$(CONFIG_MACH_AT91SAM9260EK) += at91sam9260ek board-$(CONFIG_MACH_AT91SAM9261EK) += at91sam9261ek @@ -86,93 +92,27 @@ board-$(CONFIG_MACH_AT91SAM9M10G45EK) += at91sam9m10g45ek board-$(CONFIG_MACH_AT91SAM9M10IHD) += at91sam9m10ihd board-$(CONFIG_MACH_AT91SAM9N12EK) += at91sam9n12ek board-$(CONFIG_MACH_AT91SAM9X5EK) += at91sam9x5ek -board-$(CONFIG_MACH_BEAGLE) += beagle -board-$(CONFIG_MACH_BEAGLEBONE) += beaglebone -board-$(CONFIG_MACH_CCMX51) += ccxmx51 -board-$(CONFIG_MACH_CFA10036) += crystalfontz-cfa10036 -board-$(CONFIG_MACH_CHUMBY) += chumby_falconwing -board-$(CONFIG_MACH_CLEP7212) += clep7212 board-$(CONFIG_MACH_DSS11) += dss11 -board-$(CONFIG_MACH_EDB93012) += edb93xx -board-$(CONFIG_MACH_EDB9301) += edb93xx -board-$(CONFIG_MACH_EDB9302A) += edb93xx -board-$(CONFIG_MACH_EDB9302) += edb93xx -board-$(CONFIG_MACH_EDB9307A) += edb93xx -board-$(CONFIG_MACH_EDB9307) += edb93xx -board-$(CONFIG_MACH_EDB9315A) += edb93xx -board-$(CONFIG_MACH_EDB9315) += edb93xx -board-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += efika-mx-smartbook -board-$(CONFIG_MACH_EUKREA_CPUIMX25) += eukrea_cpuimx25 -board-$(CONFIG_MACH_EUKREA_CPUIMX27) += eukrea_cpuimx27 -board-$(CONFIG_MACH_EUKREA_CPUIMX35) += eukrea_cpuimx35 -board-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += eukrea_cpuimx51 -board-$(CONFIG_MACH_FREESCALE_MX25_3STACK) += freescale-mx25-3-stack -board-$(CONFIG_MACH_FREESCALE_MX35_3STACK) += freescale-mx35-3-stack -board-$(CONFIG_MACH_FREESCALE_MX51_PDK) += freescale-mx51-pdk -board-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += freescale-mx53-loco -board-$(CONFIG_MACH_FREESCALE_MX53_SMD) += freescale-mx53-smd board-$(CONFIG_MACH_GE863) += telit-evk-pro3 -board-$(CONFIG_MACH_GLOBALSCALE_GURUPLUG) += globalscale-guruplug -board-$(CONFIG_MACH_GLOBALSCALE_MIRABOX) += globalscale-mirabox -board-$(CONFIG_MACH_GUF_CUPID) += guf-cupid -board-$(CONFIG_MACH_GUF_VINCELL) += guf-vincell -board-$(CONFIG_MACH_HIGHBANK) += highbank -board-$(CONFIG_MACH_IMX21ADS) += imx21ads -board-$(CONFIG_MACH_IMX233_OLINUXINO) += imx233-olinuxino -board-$(CONFIG_MACH_IMX27ADS) += imx27ads -board-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += marvell-armada-xp-gp board-$(CONFIG_MACH_MINI2440) += friendlyarm-mini2440 board-$(CONFIG_MACH_MINI6410) += friendlyarm-mini6410 -board-$(CONFIG_MACH_MIOA701) += mioa701 board-$(CONFIG_MACH_MMCCPU) += mmccpu -board-$(CONFIG_MACH_MX23EVK) += freescale-mx23-evk -board-$(CONFIG_MACH_MX28EVK) += freescale-mx28-evk -board-$(CONFIG_MACH_MX6Q_ARM2) += freescale-mx6-arm2 -board-$(CONFIG_MACH_NESO) += guf-neso -board-$(CONFIG_MACH_NOMADIK_8815NHK) += nhk8815 -board-$(CONFIG_MACH_NXDB500) += netx -board-$(CONFIG_MACH_OMAP343xSDP) += omap343xdsp -board-$(CONFIG_MACH_OMAP3EVM) += omap3evm -board-$(CONFIG_MACH_PANDA) += panda -board-$(CONFIG_MACH_PCA100) += phycard-i.MX27 -board-$(CONFIG_MACH_PCAAL1) += phycard-a-l1 -board-$(CONFIG_MACH_PCAAXL2) += phycard-a-xl2 board-$(CONFIG_MACH_PCM027) += pcm027 -board-$(CONFIG_MACH_PCM037) += pcm037 -board-$(CONFIG_MACH_PCM038) += pcm038 -board-$(CONFIG_MACH_PCM043) += pcm043 -board-$(CONFIG_MACH_PCM049) += pcm049 -board-$(CONFIG_MACH_PCM051) += pcm051 -board-$(CONFIG_MACH_PLATHOME_OPENBLOCKS_AX3) += plathome-openblocks-ax3 board-$(CONFIG_MACH_PM9261) += pm9261 board-$(CONFIG_MACH_PM9263) += pm9263 board-$(CONFIG_MACH_PM9G45) += pm9g45 board-$(CONFIG_MACH_QIL_A9260) += qil-a926x board-$(CONFIG_MACH_QIL_A9G20) += qil-a926x -board-$(CONFIG_MACH_REALQ7) += dmo-mx6-realq7 -board-$(CONFIG_MACH_RPI) += raspberry-pi -board-$(CONFIG_MACH_SABRELITE) += freescale-mx6-sabrelite -board-$(CONFIG_MACH_SABRESD) += freescale-mx6-sabresd board-$(CONFIG_MACH_SAMA5D3XEK) += sama5d3xek -board-$(CONFIG_MACH_SCB9328) += scb9328 board-$(CONFIG_MACH_SOLIDRUN_CUBOX) += solidrun-cubox board-$(CONFIG_MACH_TINY210) += friendlyarm-tiny210 board-$(CONFIG_MACH_TINY6410) += friendlyarm-tiny6410 board-$(CONFIG_MACH_TNY_A9260) += tny-a926x board-$(CONFIG_MACH_TNY_A9263) += tny-a926x board-$(CONFIG_MACH_TNY_A9G20) += tny-a926x -board-$(CONFIG_MACH_TOSHIBA_AC100) += toshiba-ac100 -board-$(CONFIG_MACH_TQMA53) += tqma53 -board-$(CONFIG_MACH_TX25) += karo-tx25 -board-$(CONFIG_MACH_TX28) += karo-tx28 -board-$(CONFIG_MACH_TX51) += karo-tx51 -board-$(CONFIG_MACH_TX53) += karo-tx53 board-$(CONFIG_MACH_USB_A9260) += usb-a926x board-$(CONFIG_MACH_USB_A9263) += usb-a926x board-$(CONFIG_MACH_USB_A9G20) += usb-a926x -board-$(CONFIG_MACH_VERSATILEPB) += versatile -board-$(CONFIG_MACH_VEXPRESS) += vexpress -board-$(CONFIG_MACH_ZEDBOARD) += avnet-zedboard machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) @@ -325,7 +265,7 @@ else MACH := endif -common-y += $(BOARD) $(MACH) +common-y += $(BOARD) arch/arm/boards/ $(MACH) common-y += arch/arm/lib/ arch/arm/cpu/ common-$(CONFIG_OFTREE) += arch/arm/dts/ diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile new file mode 100644 index 000000000..6d1e98d4c --- /dev/null +++ b/arch/arm/boards/Makefile @@ -0,0 +1,68 @@ +# keep sorted by CONFIG_* macro name. +obj-$(CONFIG_MACH_ARCHOSG9) += archosg9/ +obj-$(CONFIG_MACH_BEAGLE) += beagle/ +obj-$(CONFIG_MACH_BEAGLEBONE) += beaglebone/ +obj-$(CONFIG_MACH_CCMX51) += ccxmx51/ +obj-$(CONFIG_MACH_CFA10036) += crystalfontz-cfa10036/ +obj-$(CONFIG_MACH_CHUMBY) += chumby_falconwing/ +obj-$(CONFIG_MACH_CLEP7212) += clep7212/ +obj-$(CONFIG_MACH_EDB93012) += edb93xx/ +obj-$(CONFIG_MACH_EDB9301) += edb93xx/ +obj-$(CONFIG_MACH_EDB9302A) += edb93xx/ +obj-$(CONFIG_MACH_EDB9302) += edb93xx/ +obj-$(CONFIG_MACH_EDB9307A) += edb93xx/ +obj-$(CONFIG_MACH_EDB9307) += edb93xx/ +obj-$(CONFIG_MACH_EDB9315A) += edb93xx/ +obj-$(CONFIG_MACH_EDB9315) += edb93xx/ +obj-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += efika-mx-smartbook/ +obj-$(CONFIG_MACH_EUKREA_CPUIMX25) += eukrea_cpuimx25/ +obj-$(CONFIG_MACH_EUKREA_CPUIMX27) += eukrea_cpuimx27/ +obj-$(CONFIG_MACH_EUKREA_CPUIMX35) += eukrea_cpuimx35/ +obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += eukrea_cpuimx51/ +obj-$(CONFIG_MACH_FREESCALE_MX25_3STACK) += freescale-mx25-3-stack/ +obj-$(CONFIG_MACH_FREESCALE_MX35_3STACK) += freescale-mx35-3-stack/ +obj-$(CONFIG_MACH_FREESCALE_MX51_PDK) += freescale-mx51-pdk/ +obj-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += freescale-mx53-loco/ +obj-$(CONFIG_MACH_FREESCALE_MX53_SMD) += freescale-mx53-smd/ +obj-$(CONFIG_MACH_GLOBALSCALE_GURUPLUG) += globalscale-guruplug/ +obj-$(CONFIG_MACH_GLOBALSCALE_MIRABOX) += globalscale-mirabox/ +obj-$(CONFIG_MACH_GUF_CUPID) += guf-cupid/ +obj-$(CONFIG_MACH_GUF_VINCELL) += guf-vincell/ +obj-$(CONFIG_MACH_HIGHBANK) += highbank/ +obj-$(CONFIG_MACH_IMX21ADS) += imx21ads/ +obj-$(CONFIG_MACH_IMX233_OLINUXINO) += imx233-olinuxino/ +obj-$(CONFIG_MACH_IMX27ADS) += imx27ads/ +obj-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += marvell-armada-xp-gp/ +obj-$(CONFIG_MACH_MIOA701) += mioa701/ +obj-$(CONFIG_MACH_MX23EVK) += freescale-mx23-evk/ +obj-$(CONFIG_MACH_MX28EVK) += freescale-mx28-evk/ +obj-$(CONFIG_MACH_MX6Q_ARM2) += freescale-mx6-arm2/ +obj-$(CONFIG_MACH_NESO) += guf-neso/ +obj-$(CONFIG_MACH_NOMADIK_8815NHK) += nhk8815/ +obj-$(CONFIG_MACH_NXDB500) += netx/ +obj-$(CONFIG_MACH_OMAP343xSDP) += omap343xdsp/ +obj-$(CONFIG_MACH_OMAP3EVM) += omap3evm/ +obj-$(CONFIG_MACH_PANDA) += panda/ +obj-$(CONFIG_MACH_PCA100) += phycard-i.MX27/ +obj-$(CONFIG_MACH_PCAAL1) += phycard-a-l1/ +obj-$(CONFIG_MACH_PCAAXL2) += phycard-a-xl2/ +obj-$(CONFIG_MACH_PCM037) += pcm037/ +obj-$(CONFIG_MACH_PCM038) += pcm038/ +obj-$(CONFIG_MACH_PCM043) += pcm043/ +obj-$(CONFIG_MACH_PCM049) += pcm049/ +obj-$(CONFIG_MACH_PCM051) += pcm051/ +obj-$(CONFIG_MACH_PLATHOME_OPENBLOCKS_AX3) += plathome-openblocks-ax3/ +obj-$(CONFIG_MACH_REALQ7) += dmo-mx6-realq7/ +obj-$(CONFIG_MACH_RPI) += raspberry-pi/ +obj-$(CONFIG_MACH_SABRELITE) += freescale-mx6-sabrelite/ +obj-$(CONFIG_MACH_SABRESD) += freescale-mx6-sabresd/ +obj-$(CONFIG_MACH_SCB9328) += scb9328/ +obj-$(CONFIG_MACH_TOSHIBA_AC100) += toshiba-ac100/ +obj-$(CONFIG_MACH_TQMA53) += tqma53/ +obj-$(CONFIG_MACH_TX25) += karo-tx25/ +obj-$(CONFIG_MACH_TX28) += karo-tx28/ +obj-$(CONFIG_MACH_TX51) += karo-tx51/ +obj-$(CONFIG_MACH_TX53) += karo-tx53/ +obj-$(CONFIG_MACH_VERSATILEPB) += versatile/ +obj-$(CONFIG_MACH_VEXPRESS) += vexpress/ +obj-$(CONFIG_MACH_ZEDBOARD) += avnet-zedboard/ From c37be8632bd4c7177b9428eb1dc3417bab808c52 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 13:52:45 +0200 Subject: [PATCH 07/18] ARM: i.MX: remove now unused ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE Signed-off-by: Sascha Hauer --- arch/arm/Makefile | 8 -------- arch/arm/mach-imx/Kconfig | 11 ----------- 2 files changed, 19 deletions(-) diff --git a/arch/arm/Makefile b/arch/arm/Makefile index eb71ba52d..8488f467c 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -204,14 +204,6 @@ ifeq ($(machine-y),zynq) KBUILD_IMAGE := barebox.zynq endif -CFG_barebox.imx := $(src)/arch/arm/boards/$(board-y)/flash-header.imxcfg -barebox.imx: $(KBUILD_BINARY) FORCE - $(call if_changed,imx_image) - -ifeq ($(CONFIG_ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE),y) -KBUILD_IMAGE := barebox.imx -endif - KWBIMAGE_OPTS = \ -c -i $(srctree)/$(BOARD)/kwbimage.cfg -d $(TEXT_BASE) -e $(TEXT_BASE) diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index fd92da336..743d41102 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -66,7 +66,6 @@ config BOARDINFO choice prompt "Select boot mode" - depends on !ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE depends on !HAVE_PBL_MULTI_IMAGES help i.MX processors support two different boot modes. With the internal @@ -101,16 +100,6 @@ config ARCH_IMX_IMXIMAGE help if enabled the imx-image tool is compiled -config ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE - select ARCH_IMX_IMXIMAGE - bool - help - Traditionally the i.MX specific format for internal bootmode - was generated using C structs inside the binary. Now there is - a tool available to generate the imx-image format. Boards using - this tool must select this option. This is recommended for new - boards. - choice depends on ARCH_IMX_INTERNAL_BOOT prompt "Internal boot source" From 41f53d8d17863a28d82ad4558e0f53a8806c8950 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 14:34:23 +0200 Subject: [PATCH 08/18] ARM: i.MX: select SoC from board In principle we could build barebox for multiple i.MX SoCs, so select the correct SoC from the board selection. Signed-off-by: Sascha Hauer --- arch/arm/configs/eukrea_cpuimx25_defconfig | 1 + arch/arm/configs/eukrea_cpuimx27_defconfig | 1 + arch/arm/configs/eukrea_cpuimx35_defconfig | 1 + arch/arm/configs/freescale-mx6-arm2_defconfig | 1 + .../configs/freescale_mx51_babbage_defconfig | 1 + .../arm/configs/freescale_mx53_loco_defconfig | 1 + arch/arm/configs/mx21ads_defconfig | 1 + arch/arm/configs/pcm037_defconfig | 1 + arch/arm/mach-imx/Kconfig | 169 +++++++----------- 9 files changed, 76 insertions(+), 101 deletions(-) diff --git a/arch/arm/configs/eukrea_cpuimx25_defconfig b/arch/arm/configs/eukrea_cpuimx25_defconfig index c3537aa98..4f8a95ce7 100644 --- a/arch/arm/configs/eukrea_cpuimx25_defconfig +++ b/arch/arm/configs/eukrea_cpuimx25_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX25=y +CONFIG_MACH_EUKREA_CPUIMX25=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y CONFIG_AEABI=y diff --git a/arch/arm/configs/eukrea_cpuimx27_defconfig b/arch/arm/configs/eukrea_cpuimx27_defconfig index bbcd454e3..97b4291e6 100644 --- a/arch/arm/configs/eukrea_cpuimx27_defconfig +++ b/arch/arm/configs/eukrea_cpuimx27_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX27=y +CONFIG_MACH_EUKREA_CPUIMX27=y CONFIG_IMX_CLKO=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_MMU=y diff --git a/arch/arm/configs/eukrea_cpuimx35_defconfig b/arch/arm/configs/eukrea_cpuimx35_defconfig index f85e9a243..88e1e3d51 100644 --- a/arch/arm/configs/eukrea_cpuimx35_defconfig +++ b/arch/arm/configs/eukrea_cpuimx35_defconfig @@ -1,6 +1,7 @@ CONFIG_ARCH_IMX=y CONFIG_CACHE_L2X0=y CONFIG_ARCH_IMX35=y +CONFIG_MACH_EUKREA_CPUIMX35=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y CONFIG_AEABI=y diff --git a/arch/arm/configs/freescale-mx6-arm2_defconfig b/arch/arm/configs/freescale-mx6-arm2_defconfig index d2812e472..6982e0c68 100644 --- a/arch/arm/configs/freescale-mx6-arm2_defconfig +++ b/arch/arm/configs/freescale-mx6-arm2_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX6=y +CONFIG_MACH_MX6Q_ARM2=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y CONFIG_AEABI=y diff --git a/arch/arm/configs/freescale_mx51_babbage_defconfig b/arch/arm/configs/freescale_mx51_babbage_defconfig index d382dc8e1..27f3ae8c4 100644 --- a/arch/arm/configs/freescale_mx51_babbage_defconfig +++ b/arch/arm/configs/freescale_mx51_babbage_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX51=y +CONFIG_MACH_FREESCALE_MX51_PDK=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y CONFIG_THUMB2_BAREBOX=y diff --git a/arch/arm/configs/freescale_mx53_loco_defconfig b/arch/arm/configs/freescale_mx53_loco_defconfig index f502f5e05..b2b4c799b 100644 --- a/arch/arm/configs/freescale_mx53_loco_defconfig +++ b/arch/arm/configs/freescale_mx53_loco_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX53=y +CONFIG_MACH_FREESCALE_MX53_LOCO=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y CONFIG_THUMB2_BAREBOX=y diff --git a/arch/arm/configs/mx21ads_defconfig b/arch/arm/configs/mx21ads_defconfig index dbc296279..13c005bf9 100644 --- a/arch/arm/configs/mx21ads_defconfig +++ b/arch/arm/configs/mx21ads_defconfig @@ -1,5 +1,6 @@ CONFIG_ARCH_IMX=y CONFIG_ARCH_IMX21=y +CONFIG_MACH_IMX21ADS=y CONFIG_IMX_CLKO=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_TEXT_BASE=0xc3000000 diff --git a/arch/arm/configs/pcm037_defconfig b/arch/arm/configs/pcm037_defconfig index 7c630a59d..1a757013a 100644 --- a/arch/arm/configs/pcm037_defconfig +++ b/arch/arm/configs/pcm037_defconfig @@ -1,6 +1,7 @@ CONFIG_ARCH_IMX=y CONFIG_CACHE_L2X0=y CONFIG_ARCH_IMX31=y +CONFIG_MACH_PCM037=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y CONFIG_AEABI=y diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 743d41102..d4ab7b6d9 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -166,112 +166,98 @@ config BAREBOX_UPDATE_IMX_EXTERNAL_NAND comment "Freescale i.MX System-on-Chip" -choice - prompt "Freescale i.MX Processor" - config ARCH_IMX1 - bool "i.MX1" + bool select CPU_ARM920T select PINCTRL_IMX_IOMUX_V1 config ARCH_IMX21 - bool "i.MX21" + bool select CPU_ARM926T select PINCTRL_IMX_IOMUX_V1 config ARCH_IMX25 - bool "i.MX25" + bool select CPU_ARM926T select ARCH_HAS_FEC_IMX select PINCTRL_IMX_IOMUX_V3 config ARCH_IMX27 - bool "i.MX27" + bool select CPU_ARM926T select ARCH_HAS_FEC_IMX select PINCTRL_IMX_IOMUX_V1 config ARCH_IMX31 select CPU_V6 - bool "i.MX31" + bool select PINCTRL_IMX_IOMUX_V2 config ARCH_IMX35 - bool "i.MX35" + bool select CPU_V6 select ARCH_HAS_FEC_IMX select PINCTRL_IMX_IOMUX_V3 config ARCH_IMX51 - bool "i.MX51" + bool select CPU_V7 select ARCH_HAS_FEC_IMX select PINCTRL_IMX_IOMUX_V3 config ARCH_IMX53 - bool "i.MX53" + bool select CPU_V7 select ARCH_HAS_FEC_IMX select PINCTRL_IMX_IOMUX_V3 config ARCH_IMX6 - bool "i.MX6" + bool select ARCH_HAS_FEC_IMX select CPU_V7 select PINCTRL_IMX_IOMUX_V3 -endchoice - # ---------------------------------------------------------- -if ARCH_IMX1 - choice - prompt "i.MX1 Board Type" + prompt "Select Board" + +comment "i.MX1 Boards" config MACH_SCB9328 bool "Synertronixx scb9328" + select ARCH_IMX1 select HAS_DM9000 help Say Y here if you are using the Synertronixx scb9328 board -endchoice - -endif - # ---------------------------------------------------------- -if ARCH_IMX21 - -choice - prompt "i.MX21 Board Type" +comment "i.MX21 Boards" config MACH_IMX21ADS bool "Freescale i.MX21ADS" + select ARCH_IMX21 select HAS_CS8900 help Say Y here if you are using the Freescale i.MX21ads board equipped with a Freescale i.MX21 Processor -endchoice - -endif # ---------------------------------------------------------- -if ARCH_IMX25 - -choice - prompt "i.MX25 Board Type" +comment "i.MX25 Boards" config MACH_EUKREA_CPUIMX25 bool "Eukrea CPUIMX25" + select ARCH_IMX25 help Say Y here if you are using the Eukrea Electromatique's CPUIMX25 equipped with a Freescale i.MX25 Processor config MACH_FREESCALE_MX25_3STACK bool "Freescale MX25 3stack" + select ARCH_IMX25 select I2C select MFD_MC34704 help @@ -280,41 +266,39 @@ config MACH_FREESCALE_MX25_3STACK config MACH_TX25 bool "Ka-Ro TX25" + select ARCH_IMX25 select HAVE_DEFAULT_ENVIRONMENT_NEW help Say Y here if you are using the Ka-Ro tx25 board -endchoice - -endif - # ---------------------------------------------------------- -if ARCH_IMX27 - -choice - prompt "i.MX27 Board Type" +comment "i.MX27 Boards" config MACH_EUKREA_CPUIMX27 bool "EUKREA CPUIMX27" + select ARCH_IMX27 help Say Y here if you are using Eukrea's CPUIMX27 equipped with a Freescale i.MX27 Processor config MACH_IMX27ADS bool "Freescale i.MX27ADS" + select ARCH_IMX27 help 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 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 select IMX_IIM select SPI select DRIVER_SPI_IMX @@ -335,23 +319,18 @@ config MACH_PCM970_BASEBOARD config MACH_NESO bool "Garz+Fricke Neso" + select ARCH_IMX27 help Say Y here if you are using the Garz+Fricke Neso board equipped with a Freescale i.MX27 Processor -endchoice - -endif - # ---------------------------------------------------------- -if ARCH_IMX31 - -choice - prompt "i.MX31 Board Type" +comment "i.MX31 Boards" config MACH_PCM037 bool "phyCORE-i.MX31" + select ARCH_IMX31 select USB_ULPI if USB select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_HAS_L2X0 @@ -359,19 +338,13 @@ config MACH_PCM037 Say Y here if you are using Phytec's phyCORE-i.MX31 (pcm037) equipped with a Freescale i.MX31 Processor -endchoice - -endif - # ---------------------------------------------------------- -if ARCH_IMX35 - -choice - prompt "i.MX35 Board Type" +comment "i.MX35 Boards" config MACH_EUKREA_CPUIMX35 bool "EUKREA CPUIMX35" + select ARCH_IMX35 select ARCH_HAS_L2X0 help Say Y here if you are using Eukrea's CPUIMX35 equipped @@ -379,6 +352,7 @@ config MACH_EUKREA_CPUIMX35 config MACH_FREESCALE_MX35_3STACK bool "Freescale MX35 3stack" + select ARCH_IMX35 select I2C select I2C_IMX select MFD_MC13XXX @@ -389,6 +363,7 @@ config MACH_FREESCALE_MX35_3STACK config MACH_PCM043 bool "phyCORE-i.MX35" + select ARCH_IMX35 select ARCH_HAS_L2X0 select HAVE_DEFAULT_ENVIRONMENT_NEW help @@ -397,40 +372,38 @@ config MACH_PCM043 config MACH_GUF_CUPID bool "Garz+Fricke Cupid" + select ARCH_IMX35 select ARCH_HAS_L2X0 help Say Y here if you are using the Garz+Fricke Neso board equipped with a Freescale i.MX35 Processor -endchoice - -endif - # ---------------------------------------------------------- -if ARCH_IMX51 - -choice - prompt "i.MX51 Board Type" +comment "i.MX51 Boards" config MACH_FREESCALE_MX51_PDK + bool "Freescale i.MX51 PDK" + select ARCH_IMX51 select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES - bool "Freescale i.MX51 PDK" config MACH_EUKREA_CPUIMX51SD - bool "EUKREA CPUIMX51" + bool "Ka-Ro TX51" + select ARCH_IMX51 help Say Y here if you are using Eukrea's CPUIMX51 equipped with a Freescale i.MX51 Processor config MACH_TX51 bool "Ka-Ro TX51" + select ARCH_IMX51 help Say Y here if you are using the Ka-Ro tx51 board config MACH_CCMX51 bool "ConnectCore i.MX51" + select ARCH_IMX51 select IMX_IIM select SPI select DRIVER_SPI_IMX @@ -449,84 +422,65 @@ config MACH_CCMX51_BASEBOARD config MACH_EFIKA_MX_SMARTBOOK bool "Efika MX smartbook" + select ARCH_IMX51 select HAVE_DEFAULT_ENVIRONMENT_NEW help Choose this to compile barebox for the Efika MX Smartbook -endchoice - -endif - # ---------------------------------------------------------- -if ARCH_IMX53 - -choice - prompt "i.MX53 Board Type" +comment "i.MX53 Boards" config MACH_FREESCALE_MX53_LOCO + bool "Freescale i.MX53 LOCO" + select ARCH_IMX53 select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES - bool "Freescale i.MX53 LOCO" config MACH_FREESCALE_MX53_SMD bool "Freescale i.MX53 SMD" + select ARCH_IMX53 config MACH_TQMA53 - select HAVE_DEFAULT_ENVIRONMENT_NEW bool "TQ i.MX53 TQMa53" + select ARCH_IMX53 + select HAVE_DEFAULT_ENVIRONMENT_NEW config MACH_TX53 bool "Ka-Ro TX53" + select ARCH_IMX53 select HAVE_DEFAULT_ENVIRONMENT_NEW help Say Y here if you are using the Ka-Ro tx53 board config MACH_GUF_VINCELL - select HAVE_DEFAULT_ENVIRONMENT_NEW bool "Garz-Fricke Vincell" + select ARCH_IMX53 + select HAVE_DEFAULT_ENVIRONMENT_NEW -endchoice - -if MACH_TX53 - -choice - prompt "TX53 board revision" -config TX53_REV_1011 - bool "1011" -config TX53_REV_XX30 - bool "8030 / 1030" - -endchoice - -endif - -endif - -if ARCH_IMX6 - -choice - prompt "i.MX6 Board Type" +comment "i.MX6 Boards" config MACH_MX6Q_ARM2 bool "Freescale i.MX6q Armadillo2" + select ARCH_IMX6 config MACH_SABRELITE - select HAVE_DEFAULT_ENVIRONMENT_NEW bool "Freescale i.MX6 Sabre Lite" + select ARCH_IMX6 + select HAVE_DEFAULT_ENVIRONMENT_NEW config MACH_SABRESD bool "Freescale i.MX6 SabreSD" + select ARCH_IMX6 config MACH_REALQ7 bool "DataModul i.MX6Q Real Qseven Board" + select ARCH_IMX6 select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES endchoice -endif - # ---------------------------------------------------------- menu "Board specific settings" @@ -608,6 +562,19 @@ config MACH_TQMA53_1GB_RAM endif +if MACH_TX53 + +choice + prompt "TX53 board revision" +config TX53_REV_1011 + bool "1011" +config TX53_REV_XX30 + bool "8030 / 1030" + +endchoice + +endif + endmenu menu "i.MX specific settings" From 7d7a982541bf4c7be52c87cf60944e7c2ac6833e Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 15:49:51 +0200 Subject: [PATCH 09/18] ARM: i.MX51 babbage: add board name to flash header file This is necessary because the C name for the flash header matches the filename. For multiple board support we have to make the name unique to prevent linker errors. Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-mx51-pdk/Makefile | 4 ++-- arch/arm/boards/freescale-mx51-pdk/board.c | 7 ++++--- ...ash-header.imxcfg => flash-header-imx51-babbage.imxcfg} | 0 images/Makefile.imx | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) rename arch/arm/boards/freescale-mx51-pdk/{flash-header.imxcfg => flash-header-imx51-babbage.imxcfg} (100%) diff --git a/arch/arm/boards/freescale-mx51-pdk/Makefile b/arch/arm/boards/freescale-mx51-pdk/Makefile index f1baae24f..0c06778a9 100644 --- a/arch/arm/boards/freescale-mx51-pdk/Makefile +++ b/arch/arm/boards/freescale-mx51-pdk/Makefile @@ -1,3 +1,3 @@ -obj-y += board.o flash-header.o -extra-y += flash-header.S flash-header.dcd +obj-y += board.o flash-header-imx51-babbage.o +extra-y += flash-header-imx51-babbage.S flash-header-imx51-babbage.dcd lwl-y += lowlevel.o diff --git a/arch/arm/boards/freescale-mx51-pdk/board.c b/arch/arm/boards/freescale-mx51-pdk/board.c index fc7e17568..3906e4797 100644 --- a/arch/arm/boards/freescale-mx51-pdk/board.c +++ b/arch/arm/boards/freescale-mx51-pdk/board.c @@ -157,7 +157,8 @@ static void babbage_power_init(void) mdelay(50); } -extern char flash_header_start[], flash_header_end[]; +extern char flash_header_imx51_babbage_start[]; +extern char flash_header_imx51_babbage_end[]; static int f3s_devices_init(void) { @@ -171,8 +172,8 @@ static int f3s_devices_init(void) armlinux_set_architecture(MACH_TYPE_MX51_BABBAGE); imx51_bbu_internal_mmc_register_handler("mmc", "/dev/mmc0", - BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_start, - flash_header_end - flash_header_start, 0); + BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_imx51_babbage_start, + flash_header_imx51_babbage_end - flash_header_imx51_babbage_start, 0); return 0; } diff --git a/arch/arm/boards/freescale-mx51-pdk/flash-header.imxcfg b/arch/arm/boards/freescale-mx51-pdk/flash-header-imx51-babbage.imxcfg similarity index 100% rename from arch/arm/boards/freescale-mx51-pdk/flash-header.imxcfg rename to arch/arm/boards/freescale-mx51-pdk/flash-header-imx51-babbage.imxcfg diff --git a/images/Makefile.imx b/images/Makefile.imx index 72e8cde1d..d13be8410 100644 --- a/images/Makefile.imx +++ b/images/Makefile.imx @@ -16,7 +16,7 @@ image-$(CONFIG_MACH_PCM038) += barebox-phytec-phycore-imx27.img # ----------------------- i.MX51 based boards --------------------------- pblx-$(CONFIG_MACH_FREESCALE_MX51_PDK) += start_imx51_babbage -CFG_start_imx51_babbage.pblx.imximg = $(board)/freescale-mx51-pdk/flash-header.imxcfg +CFG_start_imx51_babbage.pblx.imximg = $(board)/freescale-mx51-pdk/flash-header-imx51-babbage.imxcfg imximage-$(CONFIG_MACH_FREESCALE_MX51_PDK) += start_imx51_babbage.pblx.imximg FILE_barebox-freescale-imx51-babbage.img = start_imx51_babbage.pblx.imximg image-$(CONFIG_MACH_FREESCALE_MX51_PDK) += barebox-freescale-imx51-babbage.img From 70741174c99802d3dbcd13e61e041f444eb24919 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 16:29:14 +0200 Subject: [PATCH 10/18] ARM: i.MX51 babbage: prepare for multiboard support Merge two initcalls to one and add a protector for the board type. Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-mx51-pdk/board.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/arch/arm/boards/freescale-mx51-pdk/board.c b/arch/arm/boards/freescale-mx51-pdk/board.c index 3906e4797..2e7be8508 100644 --- a/arch/arm/boards/freescale-mx51-pdk/board.c +++ b/arch/arm/boards/freescale-mx51-pdk/board.c @@ -160,8 +160,11 @@ static void babbage_power_init(void) extern char flash_header_imx51_babbage_start[]; extern char flash_header_imx51_babbage_end[]; -static int f3s_devices_init(void) +static int imx51_babbage_late_init(void) { + if (!of_machine_is_compatible("fsl,imx51-babbage")) + return 0; + babbage_power_init(); console_flush(); @@ -175,13 +178,6 @@ static int f3s_devices_init(void) BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_imx51_babbage_start, flash_header_imx51_babbage_end - flash_header_imx51_babbage_start, 0); - return 0; -} - -device_initcall(f3s_devices_init); - -static int f3s_part_init(void) -{ device_detect_by_name("mmc0"); devfs_add_partition("mmc0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self0"); @@ -189,4 +185,4 @@ static int f3s_part_init(void) return 0; } -late_initcall(f3s_part_init); +late_initcall(imx51_babbage_late_init); From 7f900e0b60d4f144072acb7ccfc1fa0f198c6517 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 16:50:29 +0200 Subject: [PATCH 11/18] ARM: i.MX51 babbage: Move over to multiboard Signed-off-by: Sascha Hauer --- .../configs/freescale_mx51_babbage_defconfig | 2 +- arch/arm/mach-imx/Kconfig | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/arch/arm/configs/freescale_mx51_babbage_defconfig b/arch/arm/configs/freescale_mx51_babbage_defconfig index 27f3ae8c4..b45b89742 100644 --- a/arch/arm/configs/freescale_mx51_babbage_defconfig +++ b/arch/arm/configs/freescale_mx51_babbage_defconfig @@ -1,5 +1,5 @@ CONFIG_ARCH_IMX=y -CONFIG_ARCH_IMX51=y +CONFIG_IMX_MULTI_BOARDS=y CONFIG_MACH_FREESCALE_MX51_PDK=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index d4ab7b6d9..5e6ededea 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -48,7 +48,6 @@ config BOARDINFO default "Phytec phyCORE-i.MX35" if MACH_PCM043 default "Synertronixx scb9328" if MACH_SCB9328 default "Garz+Fricke Neso" if MACH_NESO - default "Freescale i.MX51 PDK" if MACH_FREESCALE_MX51_PDK default "Freescale i.MX53 LOCO" if MACH_FREESCALE_MX53_LOCO default "Freescale i.MX53 SMD" if MACH_FREESCALE_MX53_SMD default "Efika MX smartbook" if MACH_EFIKA_MX_SMARTBOOK @@ -63,6 +62,7 @@ config BOARDINFO default "Garz+Fricke Vincell" if MACH_GUF_VINCELL default "SabreSD" if MACH_SABRESD default "DataModul i.MX6Q Real Qseven" if MACH_REALQ7 + default "unused" if IMX_MULTI_BOARDS choice prompt "Select boot mode" @@ -217,10 +217,23 @@ config ARCH_IMX6 select CPU_V7 select PINCTRL_IMX_IOMUX_V3 +config IMX_MULTI_BOARDS + bool "Allow multiple boards to be selected" + select HAVE_DEFAULT_ENVIRONMENT_NEW + select HAVE_PBL_MULTI_IMAGES + +if IMX_MULTI_BOARDS + +config MACH_FREESCALE_MX51_PDK + bool "Freescale i.MX51 PDK" + select ARCH_IMX51 +endif + # ---------------------------------------------------------- choice prompt "Select Board" + depends on !IMX_MULTI_BOARDS comment "i.MX1 Boards" @@ -382,12 +395,6 @@ config MACH_GUF_CUPID comment "i.MX51 Boards" -config MACH_FREESCALE_MX51_PDK - bool "Freescale i.MX51 PDK" - select ARCH_IMX51 - select HAVE_DEFAULT_ENVIRONMENT_NEW - select HAVE_PBL_MULTI_IMAGES - config MACH_EUKREA_CPUIMX51SD bool "Ka-Ro TX51" select ARCH_IMX51 From 170157541867deba702ba0745a30d27ac84c7d0f Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 16:22:57 +0200 Subject: [PATCH 12/18] ARM: i.MX53 loco: add board name to flash header file This is necessary because the C name for the flash header matches the filename. For multiple board support we have to make the name unique to prevent linker errors. Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-mx53-loco/Makefile | 4 ++-- arch/arm/boards/freescale-mx53-loco/board.c | 7 ++++--- ...{flash-header.imxcfg => flash-header-imx53-loco.imxcfg} | 0 images/Makefile.imx | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) rename arch/arm/boards/freescale-mx53-loco/{flash-header.imxcfg => flash-header-imx53-loco.imxcfg} (100%) diff --git a/arch/arm/boards/freescale-mx53-loco/Makefile b/arch/arm/boards/freescale-mx53-loco/Makefile index f1baae24f..68fbe3a4e 100644 --- a/arch/arm/boards/freescale-mx53-loco/Makefile +++ b/arch/arm/boards/freescale-mx53-loco/Makefile @@ -1,3 +1,3 @@ -obj-y += board.o flash-header.o -extra-y += flash-header.S flash-header.dcd +obj-y += board.o flash-header-imx53-loco.o +extra-y += flash-header-imx53-loco.S flash-header-imx53-loco.dcd lwl-y += lowlevel.o diff --git a/arch/arm/boards/freescale-mx53-loco/board.c b/arch/arm/boards/freescale-mx53-loco/board.c index dd4251dc9..446b7f37d 100644 --- a/arch/arm/boards/freescale-mx53-loco/board.c +++ b/arch/arm/boards/freescale-mx53-loco/board.c @@ -75,7 +75,8 @@ static void loco_fec_reset(void) #define MX53_LOCO_USB_PWREN IMX_GPIO_NR(7, 8) -extern char flash_header_start[], flash_header_end[]; +extern char flash_header_imx53_loco_start[]; +extern char flash_header_imx53_loco_end[]; static int loco_late_init(void) { @@ -112,8 +113,8 @@ static int loco_late_init(void) armlinux_set_architecture(MACH_TYPE_MX53_LOCO); imx53_bbu_internal_mmc_register_handler("mmc", "/dev/mmc0", - BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_start, - flash_header_end - flash_header_start, 0); + BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_imx53_loco_start, + flash_header_imx53_loco_end - flash_header_imx53_loco_start, 0); return 0; } diff --git a/arch/arm/boards/freescale-mx53-loco/flash-header.imxcfg b/arch/arm/boards/freescale-mx53-loco/flash-header-imx53-loco.imxcfg similarity index 100% rename from arch/arm/boards/freescale-mx53-loco/flash-header.imxcfg rename to arch/arm/boards/freescale-mx53-loco/flash-header-imx53-loco.imxcfg diff --git a/images/Makefile.imx b/images/Makefile.imx index d13be8410..002e73b4e 100644 --- a/images/Makefile.imx +++ b/images/Makefile.imx @@ -23,7 +23,7 @@ image-$(CONFIG_MACH_FREESCALE_MX51_PDK) += barebox-freescale-imx51-babbage.img # ----------------------- i.MX53 based boards --------------------------- pblx-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += start_imx53_loco -CFG_start_imx53_loco.pblx.imximg = $(board)/freescale-mx53-loco/flash-header.imxcfg +CFG_start_imx53_loco.pblx.imximg = $(board)/freescale-mx53-loco/flash-header-imx53-loco.imxcfg imximage-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += start_imx53_loco.pblx.imximg FILE_barebox-freescale-imx53-loco.img = start_imx53_loco.pblx.imximg image-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += barebox-freescale-imx53-loco.img From bf565070c831caa460cb37559887278d2dd7b796 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 16:49:44 +0200 Subject: [PATCH 13/18] ARM: i.MX53 loco: prepare multiboard support Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-mx53-loco/board.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/arm/boards/freescale-mx53-loco/board.c b/arch/arm/boards/freescale-mx53-loco/board.c index 446b7f37d..3c8842c30 100644 --- a/arch/arm/boards/freescale-mx53-loco/board.c +++ b/arch/arm/boards/freescale-mx53-loco/board.c @@ -83,6 +83,9 @@ static int loco_late_init(void) struct mc34708 *mc34708; int rev; + if (!of_machine_is_compatible("fsl,imx53-qsb")) + return 0; + device_detect_by_name("mmc0"); devfs_add_partition("mmc0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); @@ -120,10 +123,13 @@ static int loco_late_init(void) } late_initcall(loco_late_init); -static int loco_core_init(void) +static int loco_postcore_init(void) { + if (!of_machine_is_compatible("fsl,imx53-qsb")) + return 0; + imx53_init_lowlevel(1000); return 0; } -core_initcall(loco_core_init); +postcore_initcall(loco_postcore_init); From d1c3520011a7b704a74c83995d6fd242886e0b1a Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 26 Jun 2013 07:37:32 +0200 Subject: [PATCH 14/18] ARM: i.MX53 loco: Move over to multiboard Signed-off-by: Sascha Hauer --- arch/arm/configs/freescale_mx53_loco_defconfig | 2 +- arch/arm/mach-imx/Kconfig | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/arch/arm/configs/freescale_mx53_loco_defconfig b/arch/arm/configs/freescale_mx53_loco_defconfig index b2b4c799b..dbf4f4e89 100644 --- a/arch/arm/configs/freescale_mx53_loco_defconfig +++ b/arch/arm/configs/freescale_mx53_loco_defconfig @@ -1,5 +1,5 @@ CONFIG_ARCH_IMX=y -CONFIG_ARCH_IMX53=y +CONFIG_IMX_MULTI_BOARDS=y CONFIG_MACH_FREESCALE_MX53_LOCO=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 5e6ededea..5db8b5d29 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -48,7 +48,6 @@ config BOARDINFO default "Phytec phyCORE-i.MX35" if MACH_PCM043 default "Synertronixx scb9328" if MACH_SCB9328 default "Garz+Fricke Neso" if MACH_NESO - default "Freescale i.MX53 LOCO" if MACH_FREESCALE_MX53_LOCO default "Freescale i.MX53 SMD" if MACH_FREESCALE_MX53_SMD default "Efika MX smartbook" if MACH_EFIKA_MX_SMARTBOOK default "Garz+Fricke Cupid" if MACH_GUF_CUPID @@ -227,6 +226,11 @@ if IMX_MULTI_BOARDS config MACH_FREESCALE_MX51_PDK bool "Freescale i.MX51 PDK" select ARCH_IMX51 + +config MACH_FREESCALE_MX53_LOCO + bool "Freescale i.MX53 LOCO" + select ARCH_IMX53 + endif # ---------------------------------------------------------- @@ -438,12 +442,6 @@ config MACH_EFIKA_MX_SMARTBOOK comment "i.MX53 Boards" -config MACH_FREESCALE_MX53_LOCO - bool "Freescale i.MX53 LOCO" - select ARCH_IMX53 - select HAVE_DEFAULT_ENVIRONMENT_NEW - select HAVE_PBL_MULTI_IMAGES - config MACH_FREESCALE_MX53_SMD bool "Freescale i.MX53 SMD" select ARCH_IMX53 From 165031246d25bda0eb829fb0d11d1468b37968db Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 17:06:23 +0200 Subject: [PATCH 15/18] ARM: i.MX6 realq7: prepare multiboard support Protect initcalls with the corrent of compatible. Signed-off-by: Sascha Hauer --- arch/arm/boards/dmo-mx6-realq7/board.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/arch/arm/boards/dmo-mx6-realq7/board.c b/arch/arm/boards/dmo-mx6-realq7/board.c index 7983b8802..9cf6c3175 100644 --- a/arch/arm/boards/dmo-mx6-realq7/board.c +++ b/arch/arm/boards/dmo-mx6-realq7/board.c @@ -81,6 +81,9 @@ static int ksz9031rn_phy_fixup(struct phy_device *dev) static int realq7_enet_init(void) { + if (!of_machine_is_compatible("dmo,imx6q-realq7")) + return 0; + mxc_iomux_v3_setup_multiple_pads(realq7_pads_gpio, ARRAY_SIZE(realq7_pads_gpio)); gpio_direction_output(RQ7_GPIO_ENET_PHYADD2, 0); gpio_direction_output(RQ7_GPIO_ENET_MODE0, 1); @@ -102,19 +105,16 @@ static int realq7_enet_init(void) } fs_initcall(realq7_enet_init); -static int realq7_devices_init(void) +static int realq7_env_init(void) { + if (!of_machine_is_compatible("dmo,imx6q-realq7")) + return 0; + imx6_bbu_internal_spi_i2c_register_handler("spiflash", "/dev/m25p0.barebox", BBU_HANDLER_FLAG_DEFAULT, NULL, 0, 0x00907000); imx6_bbu_internal_mmc_register_handler("mmc", "/dev/mmc3.barebox", 0, NULL, 0, 0x00907000); - return 0; -} -device_initcall(realq7_devices_init); - -static int realq7_env_init(void) -{ switch (bootsource_get()) { case BOOTSOURCE_MMC: device_detect_by_name("mmc3"); @@ -136,8 +136,11 @@ late_initcall(realq7_env_init); static int realq7_console_init(void) { + if (!of_machine_is_compatible("dmo,imx6q-realq7")) + return 0; + imx6_init_lowlevel(); return 0; } -core_initcall(realq7_console_init); +postcore_initcall(realq7_console_init); From e1ec8d514ace45b6a3d81b9cafc7022028fbea16 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 23 Jun 2013 18:35:25 +0200 Subject: [PATCH 16/18] ARM: i.MX6 realq7: switch to multiboard Signed-off-by: Sascha Hauer --- arch/arm/configs/dmo-realq7_defconfig | 2 +- arch/arm/mach-imx/Kconfig | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/arm/configs/dmo-realq7_defconfig b/arch/arm/configs/dmo-realq7_defconfig index 1339391b0..ab8aa433c 100644 --- a/arch/arm/configs/dmo-realq7_defconfig +++ b/arch/arm/configs/dmo-realq7_defconfig @@ -1,5 +1,5 @@ CONFIG_ARCH_IMX=y -CONFIG_ARCH_IMX6=y +CONFIG_IMX_MULTI_BOARDS=y CONFIG_MACH_REALQ7=y CONFIG_IMX_IIM=y CONFIG_IMX_IIM_FUSE_BLOW=y diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 5db8b5d29..23a4221d9 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -231,6 +231,12 @@ config MACH_FREESCALE_MX53_LOCO bool "Freescale i.MX53 LOCO" select ARCH_IMX53 +config MACH_REALQ7 + bool "DataModul i.MX6Q Real Qseven Board" + select ARCH_IMX6 + select HAVE_DEFAULT_ENVIRONMENT_NEW + select HAVE_PBL_MULTI_IMAGES + endif # ---------------------------------------------------------- @@ -478,12 +484,6 @@ config MACH_SABRESD bool "Freescale i.MX6 SabreSD" select ARCH_IMX6 -config MACH_REALQ7 - bool "DataModul i.MX6Q Real Qseven Board" - select ARCH_IMX6 - select HAVE_DEFAULT_ENVIRONMENT_NEW - select HAVE_PBL_MULTI_IMAGES - endchoice # ---------------------------------------------------------- From 7457f69e1745f818f599b7f8aafecd383be81d5d Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 24 Jun 2013 22:27:37 +0200 Subject: [PATCH 17/18] ARM: i.MX51 efikasb: switch to multiboard support Signed-off-by: Sascha Hauer --- arch/arm/boards/efika-mx-smartbook/Makefile | 5 +- arch/arm/boards/efika-mx-smartbook/board.c | 17 ++++-- arch/arm/boards/efika-mx-smartbook/dcd-data.h | 56 ------------------ .../flash-header-imx51-genesi-efikasb.imxcfg | 57 +++++++++++++++++++ .../boards/efika-mx-smartbook/flash_header.c | 29 ---------- arch/arm/boards/efika-mx-smartbook/lowlevel.c | 14 ++++- arch/arm/configs/efika-mx-smartbook_defconfig | 1 + arch/arm/dts/Makefile | 1 + arch/arm/mach-imx/Kconfig | 15 ++--- images/Makefile.imx | 6 ++ 10 files changed, 100 insertions(+), 101 deletions(-) delete mode 100644 arch/arm/boards/efika-mx-smartbook/dcd-data.h create mode 100644 arch/arm/boards/efika-mx-smartbook/flash-header-imx51-genesi-efikasb.imxcfg delete mode 100644 arch/arm/boards/efika-mx-smartbook/flash_header.c diff --git a/arch/arm/boards/efika-mx-smartbook/Makefile b/arch/arm/boards/efika-mx-smartbook/Makefile index a2c3104e6..a022d6d70 100644 --- a/arch/arm/boards/efika-mx-smartbook/Makefile +++ b/arch/arm/boards/efika-mx-smartbook/Makefile @@ -1,3 +1,4 @@ -obj-y += board.o +obj-y += board.o flash-header-imx51-genesi-efikasb.o lwl-y += lowlevel.o -lwl-y += flash_header.o +extra-y += flash-header-imx51-genesi-efikasb.S +extra-y += flash-header-imx51-genesi-efikasb.dcd diff --git a/arch/arm/boards/efika-mx-smartbook/board.c b/arch/arm/boards/efika-mx-smartbook/board.c index 0e6694bc6..1735c3e08 100644 --- a/arch/arm/boards/efika-mx-smartbook/board.c +++ b/arch/arm/boards/efika-mx-smartbook/board.c @@ -182,6 +182,9 @@ static int efikamx_power_init(void) static int efikamx_usb_init(void) { + if (!of_machine_is_compatible("genesi,imx51-sb")) + return 0; + gpio_direction_output(GPIO_BLUETOOTH, 0); gpio_direction_output(GPIO_WIFI_ENABLE, 1); gpio_direction_output(GPIO_WIFI_RESET, 0); @@ -222,15 +225,17 @@ static struct gpio_led leds[] = { }, }; -#define DCD_NAME static struct imx_dcd_entry dcd_entry - -#include "dcd-data.h" +extern char flash_header_imx51_genesi_efikasb_start[]; +extern char flash_header_imx51_genesi_efikasb_end[]; static int efikamx_late_init(void) { enum bootsource bootsource; int i; + if (!of_machine_is_compatible("genesi,imx51-sb")) + return 0; + efikamx_power_init(); gpio_direction_output(GPIO_BACKLIGHT_POWER, 1); @@ -241,8 +246,10 @@ static int efikamx_late_init(void) writew(0x0, MX51_WDOG_BASE_ADDR + 0x8); imx51_bbu_internal_mmc_register_handler("mmc", "/dev/mmc1", - BBU_HANDLER_FLAG_DEFAULT, dcd_entry, sizeof(dcd_entry), - 0); + BBU_HANDLER_FLAG_DEFAULT, + (void *)flash_header_imx51_genesi_efikasb_start, + flash_header_imx51_genesi_efikasb_end - + flash_header_imx51_genesi_efikasb_start, 0); armlinux_set_bootparams((void *)0x90000100); armlinux_set_architecture(2370); diff --git a/arch/arm/boards/efika-mx-smartbook/dcd-data.h b/arch/arm/boards/efika-mx-smartbook/dcd-data.h deleted file mode 100644 index 6795e1901..000000000 --- a/arch/arm/boards/efika-mx-smartbook/dcd-data.h +++ /dev/null @@ -1,56 +0,0 @@ -DCD_NAME[] = { - { .ptr_type = 4, .addr = 0x73fa88a0, .val = 0x00000000, }, - { .ptr_type = 4, .addr = 0x73fa850c, .val = 0x000020c5, }, - { .ptr_type = 4, .addr = 0x73fa8510, .val = 0x000020c5, }, - { .ptr_type = 4, .addr = 0x73fa883c, .val = 0x00000005, }, - { .ptr_type = 4, .addr = 0x73fa8848, .val = 0x00000005, }, - { .ptr_type = 4, .addr = 0x73fa84b8, .val = 0x000000e7, }, - { .ptr_type = 4, .addr = 0x73fa84bc, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa84c0, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa84c4, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa84c8, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa8820, .val = 0x00000000, }, - { .ptr_type = 4, .addr = 0x73fa84a4, .val = 0x00000005, }, - { .ptr_type = 4, .addr = 0x73fa84a8, .val = 0x00000005, }, - { .ptr_type = 4, .addr = 0x73fa84ac, .val = 0x000000e5, }, - { .ptr_type = 4, .addr = 0x73fa84b0, .val = 0x000000e5, }, - { .ptr_type = 4, .addr = 0x73fa84b4, .val = 0x000000e5, }, - { .ptr_type = 4, .addr = 0x73fa84cc, .val = 0x000000e5, }, - { .ptr_type = 4, .addr = 0x73fa84d0, .val = 0x000000e4, }, - { .ptr_type = 4, .addr = 0x73fa882c, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x73fa88a4, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x73fa88ac, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x73fa88b8, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x83fd9000, .val = 0x82a20000, }, - { .ptr_type = 4, .addr = 0x83fd9008, .val = 0x82a20000, }, - { .ptr_type = 4, .addr = 0x83fd9010, .val = 0xcaaaf6d0, }, - { .ptr_type = 4, .addr = 0x83fd9004, .val = 0x333574aa, }, - { .ptr_type = 4, .addr = 0x83fd900c, .val = 0x333574aa, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x04008008, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801a, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801b, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00448019, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x07328018, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x04008008, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008010, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008010, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x06328018, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x03808019, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008000, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0400800c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801e, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801f, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801d, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0732801c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0400800c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008014, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008014, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0632801c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0380801d, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008004, }, - { .ptr_type = 4, .addr = 0x83fd9000, .val = 0xb2a20000, }, - { .ptr_type = 4, .addr = 0x83fd9008, .val = 0xb2a20000, }, - { .ptr_type = 4, .addr = 0x83fd9010, .val = 0x000ad6d0, }, - { .ptr_type = 4, .addr = 0x83fd9034, .val = 0x90000000, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00000000, }, -}; diff --git a/arch/arm/boards/efika-mx-smartbook/flash-header-imx51-genesi-efikasb.imxcfg b/arch/arm/boards/efika-mx-smartbook/flash-header-imx51-genesi-efikasb.imxcfg new file mode 100644 index 000000000..53875ed31 --- /dev/null +++ b/arch/arm/boards/efika-mx-smartbook/flash-header-imx51-genesi-efikasb.imxcfg @@ -0,0 +1,57 @@ +soc imx51 +loadaddr 0x90000000 +dcdofs 0x400 +wm 32 0x73fa88a0 0x00000000 +wm 32 0x73fa850c 0x000020c5 +wm 32 0x73fa8510 0x000020c5 +wm 32 0x73fa883c 0x00000005 +wm 32 0x73fa8848 0x00000005 +wm 32 0x73fa84b8 0x000000e7 +wm 32 0x73fa84bc 0x00000045 +wm 32 0x73fa84c0 0x00000045 +wm 32 0x73fa84c4 0x00000045 +wm 32 0x73fa84c8 0x00000045 +wm 32 0x73fa8820 0x00000000 +wm 32 0x73fa84a4 0x00000005 +wm 32 0x73fa84a8 0x00000005 +wm 32 0x73fa84ac 0x000000e5 +wm 32 0x73fa84b0 0x000000e5 +wm 32 0x73fa84b4 0x000000e5 +wm 32 0x73fa84cc 0x000000e5 +wm 32 0x73fa84d0 0x000000e4 +wm 32 0x73fa882c 0x00000004 +wm 32 0x73fa88a4 0x00000004 +wm 32 0x73fa88ac 0x00000004 +wm 32 0x73fa88b8 0x00000004 +wm 32 0x83fd9000 0x82a20000 +wm 32 0x83fd9008 0x82a20000 +wm 32 0x83fd9010 0xcaaaf6d0 +wm 32 0x83fd9004 0x333574aa +wm 32 0x83fd900c 0x333574aa +wm 32 0x83fd9014 0x04008008 +wm 32 0x83fd9014 0x0000801a +wm 32 0x83fd9014 0x0000801b +wm 32 0x83fd9014 0x00448019 +wm 32 0x83fd9014 0x07328018 +wm 32 0x83fd9014 0x04008008 +wm 32 0x83fd9014 0x00008010 +wm 32 0x83fd9014 0x00008010 +wm 32 0x83fd9014 0x06328018 +wm 32 0x83fd9014 0x03808019 +wm 32 0x83fd9014 0x00008000 +wm 32 0x83fd9014 0x0400800c +wm 32 0x83fd9014 0x0000801e +wm 32 0x83fd9014 0x0000801f +wm 32 0x83fd9014 0x0000801d +wm 32 0x83fd9014 0x0732801c +wm 32 0x83fd9014 0x0400800c +wm 32 0x83fd9014 0x00008014 +wm 32 0x83fd9014 0x00008014 +wm 32 0x83fd9014 0x0632801c +wm 32 0x83fd9014 0x0380801d +wm 32 0x83fd9014 0x00008004 +wm 32 0x83fd9000 0xb2a20000 +wm 32 0x83fd9008 0xb2a20000 +wm 32 0x83fd9010 0x000ad6d0 +wm 32 0x83fd9034 0x90000000 +wm 32 0x83fd9014 0x00000000 diff --git a/arch/arm/boards/efika-mx-smartbook/flash_header.c b/arch/arm/boards/efika-mx-smartbook/flash_header.c deleted file mode 100644 index f3f1e4bfd..000000000 --- a/arch/arm/boards/efika-mx-smartbook/flash_header.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include -#include - -void __naked __flash_header_start go(void) -{ - barebox_arm_head(); -} - -#define DCD_NAME struct imx_dcd_entry __dcd_entry_section dcd_entry - -#include "dcd-data.h" - -#define APP_DEST 0x90000000 - -struct imx_flash_header __flash_header_section flash_header = { - .app_code_jump_vector = APP_DEST + 0x1000, - .app_code_barker = APP_CODE_BARKER, - .app_code_csf = 0, - .dcd_ptr_ptr = APP_DEST + 0x400 + offsetof(struct imx_flash_header, dcd), - .super_root_key = 0, - .dcd = APP_DEST + 0x400 + offsetof(struct imx_flash_header, dcd_barker), - .app_dest = APP_DEST, - .dcd_barker = DCD_BARKER, - .dcd_block_len = sizeof (dcd_entry), -}; - -unsigned long __image_len_section barebox_len = DCD_BAREBOX_SIZE; - diff --git a/arch/arm/boards/efika-mx-smartbook/lowlevel.c b/arch/arm/boards/efika-mx-smartbook/lowlevel.c index 11abc938a..5a568618f 100644 --- a/arch/arm/boards/efika-mx-smartbook/lowlevel.c +++ b/arch/arm/boards/efika-mx-smartbook/lowlevel.c @@ -1,12 +1,22 @@ #include #include #include +#include #include -void __naked barebox_arm_reset_vector(void) +extern char __dtb_imx51_genesi_efika_sb_start[]; + +ENTRY_FUNCTION(start_imx51_genesi_efikasb)(void) { + uint32_t fdt; + + __barebox_arm_head(); + arm_cpu_lowlevel_init(); arm_setup_stack(0x20000000 - 16); imx51_init_lowlevel(800); - imx51_barebox_entry(0); + + fdt = (uint32_t)__dtb_imx51_genesi_efika_sb_start - get_runtime_offset(); + + imx51_barebox_entry(fdt); } diff --git a/arch/arm/configs/efika-mx-smartbook_defconfig b/arch/arm/configs/efika-mx-smartbook_defconfig index 8e1446696..f436d0db7 100644 --- a/arch/arm/configs/efika-mx-smartbook_defconfig +++ b/arch/arm/configs/efika-mx-smartbook_defconfig @@ -1,3 +1,4 @@ +CONFIG_IMX_MULTI_BOARDS=y CONFIG_BUILTIN_DTB=y CONFIG_BUILTIN_DTB_NAME="imx51-genesi-efika-sb" CONFIG_ARCH_IMX=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 1158f41c1..63956e992 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_IMX6) += imx6q-dmo-realq7.dtb \ BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_NAME)) obj-$(CONFIG_BUILTIN_DTB) += $(BUILTIN_DTB).dtb.o +pbl-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += imx51-genesi-efika-sb.dtb.o pbl-$(CONFIG_MACH_FREESCALE_MX51_PDK) += imx51-babbage.dtb.o pbl-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += imx53-qsb.dtb.o pbl-$(CONFIG_MACH_REALQ7) += imx6q-dmo-realq7.dtb.o diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 23a4221d9..9297a2108 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -223,6 +223,14 @@ config IMX_MULTI_BOARDS if IMX_MULTI_BOARDS +config MACH_EFIKA_MX_SMARTBOOK + bool "Efika MX smartbook" + select ARCH_IMX51 + select HAVE_DEFAULT_ENVIRONMENT_NEW + select HAVE_PBL_MULTI_IMAGES + help + Choose this to compile barebox for the Efika MX Smartbook + config MACH_FREESCALE_MX51_PDK bool "Freescale i.MX51 PDK" select ARCH_IMX51 @@ -437,13 +445,6 @@ config MACH_CCMX51_BASEBOARD This adds board specific devices that can be found on Digi evaluation board for CCMX51 module. -config MACH_EFIKA_MX_SMARTBOOK - bool "Efika MX smartbook" - select ARCH_IMX51 - select HAVE_DEFAULT_ENVIRONMENT_NEW - help - Choose this to compile barebox for the Efika MX Smartbook - # ---------------------------------------------------------- comment "i.MX53 Boards" diff --git a/images/Makefile.imx b/images/Makefile.imx index 002e73b4e..788800ea8 100644 --- a/images/Makefile.imx +++ b/images/Makefile.imx @@ -21,6 +21,12 @@ imximage-$(CONFIG_MACH_FREESCALE_MX51_PDK) += start_imx51_babbage.pblx.imximg FILE_barebox-freescale-imx51-babbage.img = start_imx51_babbage.pblx.imximg image-$(CONFIG_MACH_FREESCALE_MX51_PDK) += barebox-freescale-imx51-babbage.img +pblx-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += start_imx51_genesi_efikasb +CFG_start_imx51_genesi_efikasb.pblx.imximg = $(board)/efika-mx-smartbook/flash-header-imx51-genesi-efikasb.imxcfg +imximage-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += start_imx51_genesi_efikasb.pblx.imximg +FILE_barebox-genesi-efikasb.img = start_imx51_genesi_efikasb.pblx.imximg +image-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += barebox-genesi-efikasb.img + # ----------------------- i.MX53 based boards --------------------------- pblx-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += start_imx53_loco CFG_start_imx53_loco.pblx.imximg = $(board)/freescale-mx53-loco/flash-header-imx53-loco.imxcfg From 93eb4b14db7843e48ba2de7ec7b4b0ff23c1a4c9 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 24 Jun 2013 13:03:46 +0200 Subject: [PATCH 18/18] ARM: Add a imx_v7_defconfig This is a nearly full-blown config for the v7 i.MX (i.MX51, i.MX53 and i.MX6). currently the following images are built: barebox-imx51-babbage.img barebox-imx53-loco.img barebox-imx6-realq7.img barebox-genesi-efikasb.img Signed-off-by: Sascha Hauer --- arch/arm/configs/imx_v7_defconfig | 131 ++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 arch/arm/configs/imx_v7_defconfig diff --git a/arch/arm/configs/imx_v7_defconfig b/arch/arm/configs/imx_v7_defconfig new file mode 100644 index 000000000..e088c2cf7 --- /dev/null +++ b/arch/arm/configs/imx_v7_defconfig @@ -0,0 +1,131 @@ +CONFIG_ARCH_IMX=y +CONFIG_IMX_MULTI_BOARDS=y +CONFIG_MACH_EFIKA_MX_SMARTBOOK=y +CONFIG_MACH_FREESCALE_MX51_PDK=y +CONFIG_MACH_FREESCALE_MX53_LOCO=y +CONFIG_MACH_REALQ7=y +CONFIG_IMX_IIM=y +CONFIG_IMX_IIM_FUSE_BLOW=y +CONFIG_THUMB2_BAREBOX=y +CONFIG_CMD_ARM_MMUINFO=y +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ARM_UNWIND=y +CONFIG_MMU=y +CONFIG_TEXT_BASE=0x0 +CONFIG_MALLOC_SIZE=0x0 +CONFIG_MALLOC_TLSF=y +CONFIG_KALLSYMS=y +CONFIG_RELOCATABLE=y +CONFIG_LONGHELP=y +CONFIG_HUSH_FANCY_PROMPT=y +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_MENU=y +CONFIG_CONSOLE_ACTIVATE_NONE=y +CONFIG_PARTITION_DISK_EFI=y +CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y +CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/freescale-mx51-pdk/env/" +CONFIG_RESET_SOURCE=y +CONFIG_CMD_EDIT=y +CONFIG_CMD_SLEEP=y +CONFIG_CMD_MSLEEP=y +CONFIG_CMD_SAVEENV=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_PRINTENV=y +CONFIG_CMD_READLINE=y +CONFIG_CMD_LET=y +CONFIG_CMD_MENU=y +CONFIG_CMD_MENU_MANAGEMENT=y +CONFIG_CMD_TIME=y +CONFIG_CMD_LN=y +CONFIG_CMD_TFTP=y +CONFIG_CMD_FILETYPE=y +CONFIG_CMD_ECHO_E=y +CONFIG_CMD_MEMINFO=y +CONFIG_CMD_IOMEM=y +CONFIG_CMD_MM=y +CONFIG_CMD_CRC=y +CONFIG_CMD_CRC_CMP=y +CONFIG_CMD_MD5SUM=y +CONFIG_CMD_FLASH=y +CONFIG_CMD_BOOTM_SHOW_TYPE=y +CONFIG_CMD_BOOTM_VERBOSE=y +CONFIG_CMD_BOOTM_INITRD=y +CONFIG_CMD_BOOTM_OFTREE=y +CONFIG_CMD_BOOTM_OFTREE_UIMAGE=y +CONFIG_CMD_UIMAGE=y +# CONFIG_CMD_BOOTU is not set +CONFIG_CMD_RESET=y +CONFIG_CMD_GO=y +CONFIG_CMD_OFTREE=y +CONFIG_CMD_OF_PROPERTY=y +CONFIG_CMD_OF_NODE=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_BAREBOX_UPDATE=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_PARTITION=y +CONFIG_CMD_MAGICVAR=y +CONFIG_CMD_MAGICVAR_HELP=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_UNCOMPRESS=y +CONFIG_CMD_I2C=y +CONFIG_CMD_SPI=y +CONFIG_CMD_LED=y +CONFIG_CMD_LED_TRIGGER=y +CONFIG_CMD_MIITOOL=y +CONFIG_CMD_CLK=y +CONFIG_CMD_DETECT=y +CONFIG_CMD_WD=y +CONFIG_NET=y +CONFIG_NET_DHCP=y +CONFIG_NET_PING=y +CONFIG_NET_NETCONSOLE=y +CONFIG_NET_RESOLV=y +CONFIG_OFDEVICE=y +CONFIG_DRIVER_NET_FEC_IMX=y +CONFIG_NET_USB=y +CONFIG_NET_USB_ASIX=y +CONFIG_NET_USB_SMSC95XX=y +CONFIG_DRIVER_SPI_IMX=y +CONFIG_I2C=y +CONFIG_I2C_IMX=y +CONFIG_MTD=y +CONFIG_MTD_RAW_DEVICE=y +CONFIG_MTD_DATAFLASH=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_SST25L=y +CONFIG_DISK_AHCI=y +CONFIG_DISK_AHCI_IMX=y +CONFIG_DISK_INTF_PLATFORM_IDE=y +CONFIG_DISK_PATA_IMX=y +CONFIG_USB=y +CONFIG_USB_IMX_CHIPIDEA=y +CONFIG_USB_EHCI=y +CONFIG_USB_ULPI=y +CONFIG_USB_STORAGE=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DFU=y +CONFIG_MCI=y +CONFIG_MCI_MMC_BOOT_PARTITIONS=y +CONFIG_MCI_IMX_ESDHC=y +CONFIG_MFD_MC13XXX=y +CONFIG_MFD_MC34704=y +CONFIG_MFD_MC34708=y +CONFIG_MFD_MC9SDZ60=y +CONFIG_MFD_STMPE=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_LED_TRIGGERS=y +CONFIG_EEPROM_AT25=y +CONFIG_EEPROM_AT24=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_IMX=y +CONFIG_GPIO_STMPE=y +CONFIG_FS_EXT4=y +CONFIG_FS_TFTP=y +CONFIG_FS_NFS=y +CONFIG_FS_FAT=y +CONFIG_FS_FAT_WRITE=y +CONFIG_FS_FAT_LFN=y +CONFIG_LZO_DECOMPRESS=y