summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/marvell-armada-xp-db/lowlevel.c
blob: 4752bbf1b466cf7bd20aaa190f706704fd24aecb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright
 * (C) 2019 Sascha Hauer <s.hauer@pengutronix.de>
 */

#include <common.h>
#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
#include <io.h>

extern char __dtb_armada_xp_db_bb_start[];

ENTRY_FUNCTION(start_marvell_armada_xp_db, r0, r1, r2)
{
	void *fdt;
	uint32_t reg;
	void __iomem *base = mvebu_get_initial_int_reg_base();

	arm_cpu_lowlevel_init();

	/* enable L2 parity and ECC */
#define L2_AUX_CONTRL_ADDRESS (base + 0x8104)
	reg = readl(L2_AUX_CONTRL_ADDRESS);
	reg |= 3 << 20;
	writel(0x1a09ef00, L2_AUX_CONTRL_ADDRESS);

	fdt = __dtb_armada_xp_db_bb_start + get_runtime_offset();

	armada_370_xp_barebox_entry(fdt);
}