diff options
Diffstat (limited to 'arch/arm/boards')
-rw-r--r-- | arch/arm/boards/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/boards/marvell-armada-xp-db/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/boards/marvell-armada-xp-db/board.c | 31 | ||||
-rw-r--r-- | arch/arm/boards/marvell-armada-xp-db/kwbimage.cfg | 3 | ||||
-rw-r--r-- | arch/arm/boards/marvell-armada-xp-db/lowlevel.c | 33 |
5 files changed, 70 insertions, 0 deletions
diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index 91f17374c9..cbd6bd1ed6 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -68,6 +68,7 @@ obj-$(CONFIG_MACH_LENOVO_IX4_300D) += lenovo-ix4-300d/ obj-$(CONFIG_MACH_LUBBOCK) += lubbock/ obj-$(CONFIG_MACH_MAINSTONE) += mainstone/ obj-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += marvell-armada-xp-gp/ +obj-$(CONFIG_MACH_MARVELL_ARMADA_XP_DB) += marvell-armada-xp-db/ obj-$(CONFIG_MACH_MB7707) += module-mb7707/ obj-$(CONFIG_MACH_MIOA701) += mioa701/ obj-$(CONFIG_MACH_MX23EVK) += freescale-mx23-evk/ diff --git a/arch/arm/boards/marvell-armada-xp-db/Makefile b/arch/arm/boards/marvell-armada-xp-db/Makefile new file mode 100644 index 0000000000..01c7a259e9 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-db/Makefile @@ -0,0 +1,2 @@ +obj-y += board.o +lwl-y += lowlevel.o diff --git a/arch/arm/boards/marvell-armada-xp-db/board.c b/arch/arm/boards/marvell-armada-xp-db/board.c new file mode 100644 index 0000000000..4591c6bb65 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-db/board.c @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright + * (C) 2019 Sascha Hauer <s.hauer@pengutronix.de> + */ + +#include <common.h> +#include <init.h> +#include <io.h> + +static int pinctrl_init(void) +{ + if (!of_machine_is_compatible("marvell,axp-db")) + return 0; + + /* IOMUX setup for the poor */ + writel(0x11111111, 0xf1018000); + writel(0x22221111, 0xf1018004); + writel(0x22222222, 0xf1018008); + writel(0x11040000, 0xf101800c); + writel(0x11111111, 0xf1018010); + writel(0x04221130, 0xf1018014); + writel(0x11111113, 0xf1018018); + writel(0x11111101, 0xf101801c); + + writel(0x7fffffe1, 0xf1020184); + writel(0x00010008, 0xf1020258); + + return 0; +} +coredevice_initcall(pinctrl_init); diff --git a/arch/arm/boards/marvell-armada-xp-db/kwbimage.cfg b/arch/arm/boards/marvell-armada-xp-db/kwbimage.cfg new file mode 100644 index 0000000000..28e60e2f18 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-db/kwbimage.cfg @@ -0,0 +1,3 @@ +VERSION 1 +BOOT_FROM uart +BINARY ./binary.0 0000005b 00000000 diff --git a/arch/arm/boards/marvell-armada-xp-db/lowlevel.c b/arch/arm/boards/marvell-armada-xp-db/lowlevel.c new file mode 100644 index 0000000000..4752bbf1b4 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-db/lowlevel.c @@ -0,0 +1,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); +} |