summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/clep7212
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/boards/clep7212')
-rw-r--r--arch/arm/boards/clep7212/Makefile6
-rw-r--r--arch/arm/boards/clep7212/board.c15
-rw-r--r--arch/arm/boards/clep7212/clep7212.c57
-rw-r--r--arch/arm/boards/clep7212/lowlevel.c25
4 files changed, 31 insertions, 72 deletions
diff --git a/arch/arm/boards/clep7212/Makefile b/arch/arm/boards/clep7212/Makefile
index a5001df9b5..85d92c8a7f 100644
--- a/arch/arm/boards/clep7212/Makefile
+++ b/arch/arm/boards/clep7212/Makefile
@@ -1,3 +1,5 @@
-obj-y += clep7212.o
+# SPDX-License-Identifier: GPL-2.0-only
+
+obj-y += board.o
lwl-y += lowlevel.o
-bbenv-y += defaultenv-clep7212
+bbenv-$(CONFIG_DEFAULT_ENVIRONMENT) += defaultenv-clep7212
diff --git a/arch/arm/boards/clep7212/board.c b/arch/arm/boards/clep7212/board.c
new file mode 100644
index 0000000000..b3983f2f49
--- /dev/null
+++ b/arch/arm/boards/clep7212/board.c
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// SPDX-FileCopyrightText: Alexander Shiyan <shc_work@mail.ru>
+
+#include <envfs.h>
+#include <init.h>
+#include <of.h>
+
+static __init int clep7212_init(void)
+{
+ if (of_machine_is_compatible("cirrus,clep7212"))
+ defaultenv_append_directory(defaultenv_clep7212);
+
+ return 0;
+}
+device_initcall(clep7212_init);
diff --git a/arch/arm/boards/clep7212/clep7212.c b/arch/arm/boards/clep7212/clep7212.c
deleted file mode 100644
index 3b497a6bd2..0000000000
--- a/arch/arm/boards/clep7212/clep7212.c
+++ /dev/null
@@ -1,57 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-// SPDX-FileCopyrightText: 2012 Alexander Shiyan <shc_work@mail.ru>
-
-#include <common.h>
-#include <driver.h>
-#include <envfs.h>
-#include <init.h>
-#include <partition.h>
-#include <io.h>
-#include <linux/sizes.h>
-#include <asm/armlinux.h>
-#include <asm/mmu.h>
-#include <generated/mach-types.h>
-
-#include <mach/clps711x.h>
-#include <mach/devices.h>
-
-static int clps711x_devices_init(void)
-{
- u32 serial_h = 0, serial_l = readl(UNIQID);
- void *cfi_io;
-
- /* Setup Chipselects */
- clps711x_setup_memcfg(0, MEMCFG_WAITSTATE_6_1 | MEMCFG_BUS_WIDTH_16);
- clps711x_setup_memcfg(1, MEMCFG_WAITSTATE_6_1 | MEMCFG_BUS_WIDTH_8);
- clps711x_setup_memcfg(2, MEMCFG_WAITSTATE_8_3 | MEMCFG_BUS_WIDTH_16 |
- MEMCFG_CLKENB);
- clps711x_setup_memcfg(3, MEMCFG_WAITSTATE_7_1 | MEMCFG_BUS_WIDTH_32);
-
- cfi_io = map_io_sections(CS0_BASE, (void *)0x90000000, SZ_32M);
- add_cfi_flash_device(DEVICE_ID_DYNAMIC, (unsigned long)cfi_io, SZ_32M,
- IORESOURCE_MEM);
-
- devfs_add_partition("nor0", 0x00000, SZ_512K, DEVFS_PARTITION_FIXED,
- "self0");
- devfs_add_partition("nor0", SZ_256K, SZ_256K, DEVFS_PARTITION_FIXED,
- "env0");
-
- armlinux_set_architecture(MACH_TYPE_CLEP7212);
- armlinux_set_serial(((u64)serial_h << 32) | serial_l);
-
- defaultenv_append_directory(defaultenv_clep7212);
-
- return 0;
-}
-device_initcall(clps711x_devices_init);
-
-static int clps711x_console_init(void)
-{
- barebox_set_model("Cirrus Logic CLEP7212");
- barebox_set_hostname("clep7212");
-
- clps711x_add_uart(0);
-
- return 0;
-}
-console_initcall(clps711x_console_init);
diff --git a/arch/arm/boards/clep7212/lowlevel.c b/arch/arm/boards/clep7212/lowlevel.c
index 41827dfa16..ba402cecea 100644
--- a/arch/arm/boards/clep7212/lowlevel.c
+++ b/arch/arm/boards/clep7212/lowlevel.c
@@ -1,22 +1,21 @@
// SPDX-License-Identifier: GPL-2.0-or-later
-// SPDX-FileCopyrightText: 2012 Alexander Shiyan <shc_work@mail.ru>
+// SPDX-FileCopyrightText: Alexander Shiyan <shc_work@mail.ru>
#include <common.h>
-#include <init.h>
+#include <asm/barebox-arm.h>
+#include <linux/sizes.h>
+#include <mach/clps711x/clps711x.h>
-#include <asm/barebox-arm-head.h>
+extern char __dtb_ep7212_clep7212_start[];
-#include <mach/clps711x.h>
-
-#ifdef CONFIG_CLPS711X_RAISE_CPUFREQ
-# define CLPS711X_CPU_PLL_MULT 50
-#else
-# define CLPS711X_CPU_PLL_MULT 40
-#endif
-
-void __naked __bare_init barebox_arm_reset_vector(uint32_t r0, uint32_t r1, uint32_t r2)
+ENTRY_FUNCTION_WITHSTACK(start_ep7212_clep7212,
+ CS6_BASE + 48 * SZ_1K, r0, r1, r2)
{
+ void *fdt;
+
arm_cpu_lowlevel_init();
- clps711x_barebox_entry(CLPS711X_CPU_PLL_MULT, NULL);
+ fdt = __dtb_ep7212_clep7212_start;
+
+ clps711x_start(fdt + get_runtime_offset());
}