From d8162dd6f18eeb51d1a3176e5edf40d150b11e32 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Wed, 9 Nov 2016 08:13:53 -0800 Subject: i.MX: Add support for VF610 Tower board Add support for VF610 Tower board. Signed-off-by: Andrey Smirnov Signed-off-by: Sascha Hauer --- arch/arm/boards/freescale-vf610-twr/lowlevel.c | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 arch/arm/boards/freescale-vf610-twr/lowlevel.c (limited to 'arch/arm/boards/freescale-vf610-twr/lowlevel.c') diff --git a/arch/arm/boards/freescale-vf610-twr/lowlevel.c b/arch/arm/boards/freescale-vf610-twr/lowlevel.c new file mode 100644 index 0000000000..65042736c9 --- /dev/null +++ b/arch/arm/boards/freescale-vf610-twr/lowlevel.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static inline void setup_uart(void) +{ + void __iomem *iomuxbase = IOMEM(VF610_IOMUXC_BASE_ADDR); + + vf610_ungate_all_peripherals(); + + /* + * VF610_PAD_PTB4__UART1_TX + */ + writel(VF610_UART_PAD_CTRL | (2 << 20), iomuxbase + 0x0068); + writel(0, iomuxbase + 0x0380); + + vf610_uart_setup_ll(); +} + +extern char __dtb_vf610_twr_start[]; + +ENTRY_FUNCTION(start_vf610_twr, r0, r1, r2) +{ + int i; + void *fdt; + void __iomem *mscm = IOMEM(VF610_MSCM_BASE_ADDR); + + vf610_cpu_lowlevel_init(); + + for (i = 0; i < VF610_MSCM_IRSPRC_NUM; i++) + writew(VF610_MSCM_IRSPRC_CP0_EN, + mscm + VF610_MSCM_IRSPRC(i)); + + if (IS_ENABLED(CONFIG_DEBUG_LL)) + setup_uart(); + + fdt = __dtb_vf610_twr_start - get_runtime_offset(); + barebox_arm_entry(0x80000000, SZ_128M, fdt); +} -- cgit v1.2.3