summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2019-04-29 14:17:07 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2019-05-07 15:29:20 +0200
commitd67b0661e27912e01a407e3517e28d20f3160dd2 (patch)
tree8d1becff2e0156a4a3a97acafb6e6e2a26089eb3 /arch
parent40b60e89130c36a83449285674d0004fe38ccd50 (diff)
downloadbarebox-d67b0661e27912e01a407e3517e28d20f3160dd2.tar.gz
barebox-d67b0661e27912e01a407e3517e28d20f3160dd2.tar.xz
arm: add basic support for the Armada XP DB platform
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boards/Makefile1
-rw-r--r--arch/arm/boards/marvell-armada-xp-db/Makefile2
-rw-r--r--arch/arm/boards/marvell-armada-xp-db/board.c31
-rw-r--r--arch/arm/boards/marvell-armada-xp-db/kwbimage.cfg3
-rw-r--r--arch/arm/boards/marvell-armada-xp-db/lowlevel.c33
-rw-r--r--arch/arm/dts/Makefile2
-rw-r--r--arch/arm/dts/armada-xp-db-bb.dts12
-rw-r--r--arch/arm/mach-mvebu/Kconfig4
8 files changed, 87 insertions, 1 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);
+}
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 1c6129816d..29c8fd00f3 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -35,7 +35,7 @@ pbl-dtb-$(CONFIG_MACH_GW_VENTANA) += imx6q-gw54xx.dtb.o
pbl-dtb-$(CONFIG_MACH_KONTRON_SAMX6I) += imx6q-samx6i.dtb.o \
imx6dl-samx6i.dtb.o
pbl-dtb-$(CONFIG_MACH_LENOVO_IX4_300D) += armada-xp-lenovo-ix4-300d-bb.dtb.o
-pbl-dtb-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += armada-xp-gp-bb.dtb.o
+pbl-dtb-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += armada-xp-gp-bb.dtb.o armada-xp-db-bb.dtb.o
pbl-dtb-$(CONFIG_MACH_NETGEAR_RN104) += armada-370-rn104-bb.dtb.o
pbl-dtb-$(CONFIG_MACH_NETGEAR_RN2120) += armada-xp-rn2120-bb.dtb.o
pbl-dtb-$(CONFIG_MACH_NITROGEN6) += imx6q-nitrogen6x.dtb.o imx6dl-nitrogen6x.dtb.o imx6qp-nitrogen6_max.dtb.o
diff --git a/arch/arm/dts/armada-xp-db-bb.dts b/arch/arm/dts/armada-xp-db-bb.dts
new file mode 100644
index 0000000000..7201f4aaa1
--- /dev/null
+++ b/arch/arm/dts/armada-xp-db-bb.dts
@@ -0,0 +1,12 @@
+/*
+ * Barebox specific DT overlay for Marvell Armada XP DB-MV784MP-GP
+ * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
+ */
+
+#include "arm/armada-xp-db.dts"
+
+/ {
+ chosen {
+ stdout-path = "/soc/internal-regs/serial@12000";
+ };
+};
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index ad97e83701..bab22f07ff 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -56,6 +56,10 @@ config MACH_LENOVO_IX4_300D
bool "Lenovo Iomega ix4-300d"
select ARCH_ARMADA_XP
+config MACH_MARVELL_ARMADA_XP_DB
+ bool "Marvell Armada XP DB"
+ select ARCH_ARMADA_XP
+
config MACH_MARVELL_ARMADA_XP_GP
bool "Marvell Armada XP GP"
select ARCH_ARMADA_XP