9
0
Fork 0

ARM: i.MX51 efikasb: switch to multiboard support

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2013-06-24 22:27:37 +02:00
parent e1ec8d514a
commit 7457f69e17
10 changed files with 100 additions and 101 deletions

View File

@ -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

View File

@ -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);

View File

@ -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, },
};

View File

@ -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

View File

@ -1,29 +0,0 @@
#include <common.h>
#include <mach/imx-flash-header.h>
#include <asm/barebox-arm-head.h>
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;

View File

@ -1,12 +1,22 @@
#include <common.h>
#include <mach/esdctl.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/imx5.h>
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);
}

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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