diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-01-20 14:52:39 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-01-20 14:52:41 +0100 |
commit | 93ba78ece1eb153be1519b254b7ae4e1f8289b70 (patch) | |
tree | 859a830fe2f508cd90333c2fe09894e28f45f24c /arch | |
parent | 49827f736a8495c18d5299baa97947774c0615ce (diff) | |
download | barebox-93ba78ece1eb153be1519b254b7ae4e1f8289b70.tar.gz barebox-93ba78ece1eb153be1519b254b7ae4e1f8289b70.tar.xz |
ARM: MXS: imx28evk: Add lowlevel support
This switches the imx28evk to multiimage support and adds the
lowlevel initialization to make the bootlets unnecessary.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/boards/freescale-mx28-evk/lowlevel.c | 58 | ||||
-rw-r--r-- | arch/arm/mach-mxs/Kconfig | 1 |
2 files changed, 57 insertions, 2 deletions
diff --git a/arch/arm/boards/freescale-mx28-evk/lowlevel.c b/arch/arm/boards/freescale-mx28-evk/lowlevel.c index 3c7248ef65..a46a080518 100644 --- a/arch/arm/boards/freescale-mx28-evk/lowlevel.c +++ b/arch/arm/boards/freescale-mx28-evk/lowlevel.c @@ -1,11 +1,65 @@ +#define pr_fmt(fmt) "Freescale MX28evk: " fmt +#define DEBUG + #include <common.h> #include <linux/sizes.h> #include <asm/barebox-arm-head.h> #include <asm/barebox-arm.h> #include <mach/imx28-regs.h> +#include <mach/init.h> +#include <io.h> +#include <debug_ll.h> +#include <mach/iomux.h> +#include <stmp-device.h> -void __naked barebox_arm_reset_vector(void) +ENTRY_FUNCTION(start_barebox_freescale_mx28evk, r0, r1, r2) { - arm_cpu_lowlevel_init(); barebox_arm_entry(IMX_MEMORY_BASE, SZ_128M, NULL); } + +static const uint32_t iomux_pads[] = { + /* EMI */ + EMI_DATA0, EMI_DATA1, EMI_DATA2, EMI_DATA3, EMI_DATA4, EMI_DATA5, + EMI_DATA6, EMI_DATA7, EMI_DATA8, EMI_DATA9, EMI_DATA10, EMI_DATA11, + EMI_DATA12, EMI_DATA13, EMI_DATA14, EMI_DATA15, EMI_ODT0, EMI_DQM0, + EMI_ODT1, EMI_DQM1, EMI_DDR_OPEN_FB, EMI_CLK, EMI_DSQ0, EMI_DSQ1, + EMI_DDR_OPEN, EMI_A0, EMI_A1, EMI_A2, EMI_A3, EMI_A4, EMI_A5, + EMI_A6, EMI_A7, EMI_A8, EMI_A9, EMI_A10, EMI_A11, EMI_A12, EMI_A13, + EMI_A14, EMI_BA0, EMI_BA1, EMI_BA2, EMI_CASN, EMI_RASN, EMI_WEN, + EMI_CE0N, EMI_CE1N, EMI_CKE, + + /* Debug UART */ + PWM0_DUART_RX | VE_3_3V, + PWM1_DUART_TX | VE_3_3V, +}; + +static noinline void freescale_mx28evk_init(void) +{ + int i; + + /* initialize muxing */ + for (i = 0; i < ARRAY_SIZE(iomux_pads); i++) + imx_gpio_mode(iomux_pads[i]); + + pr_debug("initializing power...\n"); + + mx28_power_init_battery_input(); + + pr_debug("initializing SDRAM...\n"); + + mx28_mem_init(); + + pr_debug("DONE\n"); +} + +ENTRY_FUNCTION(prep_start_barebox_freescale_mx28evk, r0, r1, r2) +{ + void (*back)(unsigned long) = (void *)get_lr(); + + relocate_to_current_adr(); + setup_c(); + + freescale_mx28evk_init(); + + back(0); +} diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig index 4022710007..ef5d22313a 100644 --- a/arch/arm/mach-mxs/Kconfig +++ b/arch/arm/mach-mxs/Kconfig @@ -69,6 +69,7 @@ config MACH_TX28 config MACH_MX28EVK bool "mx28-evk" select MXS_OCOTP + select HAVE_PBL_MULTI_IMAGES help Say Y here if you are using the Freescale i.MX28-EVK board |