Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03c8c407 authored by Alban Bedel's avatar Alban Bedel Committed by Ralf Baechle
Browse files

MIPS: ath79: Add basic device tree support



Add the bare minimum to load a device tree.

Signed-off-by: default avatarAlban Bedel <albeu@free.fr>
Cc: linux-mips@linux-mips.org
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent fe41b466
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -134,6 +134,7 @@ config ATH79
	select SYS_SUPPORTS_BIG_ENDIAN
	select SYS_SUPPORTS_MIPS16
	select SYS_SUPPORTS_ZBOOT
	select USE_OF
	help
	  Support for the Atheros AR71XX/AR724X/AR913X SoCs.

+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include <asm/mips_machine.h>

enum ath79_mach_type {
	ATH79_MACH_GENERIC_OF = -1,	/* Device tree board */
	ATH79_MACH_GENERIC = 0,
	ATH79_MACH_AP121,		/* Atheros AP121 reference board */
	ATH79_MACH_AP136_010,		/* Atheros AP136-010 reference board */
+26 −1
Original line number Diff line number Diff line
@@ -17,12 +17,16 @@
#include <linux/bootmem.h>
#include <linux/err.h>
#include <linux/clk.h>
#include <linux/of_platform.h>
#include <linux/of_fdt.h>

#include <asm/bootinfo.h>
#include <asm/idle.h>
#include <asm/time.h>		/* for mips_hpt_frequency */
#include <asm/reboot.h>		/* for _machine_{restart,halt} */
#include <asm/mips_machine.h>
#include <asm/prom.h>
#include <asm/fw/fw.h>

#include <asm/mach-ath79/ath79.h>
#include <asm/mach-ath79/ar71xx_regs.h>
@@ -194,8 +198,19 @@ unsigned int get_c0_compare_int(void)

void __init plat_mem_setup(void)
{
	unsigned long fdt_start;

	set_io_port_base(KSEG1);

	/* Get the position of the FDT passed by the bootloader */
	fdt_start = fw_getenvl("fdt_start");
	if (fdt_start)
		__dt_setup_arch((void *)KSEG0ADDR(fdt_start));
#ifdef CONFIG_BUILTIN_DTB
	else
		__dt_setup_arch(__dtb_start);
#endif

	ath79_reset_base = ioremap_nocache(AR71XX_RESET_BASE,
					   AR71XX_RESET_SIZE);
	ath79_pll_base = ioremap_nocache(AR71XX_PLL_BASE,
@@ -203,6 +218,7 @@ void __init plat_mem_setup(void)
	ath79_ddr_ctrl_init();

	ath79_detect_sys_type();
	if (mips_machtype != ATH79_MACH_GENERIC_OF)
		detect_memory_region(0, ATH79_MEM_SIZE_MIN, ATH79_MEM_SIZE_MAX);

	_machine_restart = ath79_restart;
@@ -235,6 +251,10 @@ void __init plat_time_init(void)

static int __init ath79_setup(void)
{
	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
	if  (mips_machtype == ATH79_MACH_GENERIC_OF)
		return 0;

	ath79_gpio_init();
	ath79_register_uart();
	ath79_register_wdt();
@@ -246,6 +266,11 @@ static int __init ath79_setup(void)

arch_initcall(ath79_setup);

void __init device_tree_init(void)
{
	unflatten_and_copy_device_tree();
}

static void __init ath79_generic_init(void)
{
	/* Nothing to do */