nds32: Device tree support
This patch adds support for device tree. Signed-off-by: Vincent Chen <vincentc@andestech.com> Signed-off-by: Greentime Hu <greentime@andestech.com> Acked-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
8
arch/nds32/boot/dts/Makefile
Normal file
8
arch/nds32/boot/dts/Makefile
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
ifneq '$(CONFIG_NDS32_BUILTIN_DTB)' '""'
|
||||||
|
BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_NDS32_BUILTIN_DTB)).dtb.o
|
||||||
|
else
|
||||||
|
BUILTIN_DTB :=
|
||||||
|
endif
|
||||||
|
obj-$(CONFIG_OF) += $(BUILTIN_DTB)
|
||||||
|
|
||||||
|
clean-files := *.dtb *.dtb.S
|
85
arch/nds32/boot/dts/ae3xx.dts
Normal file
85
arch/nds32/boot/dts/ae3xx.dts
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/dts-v1/;
|
||||||
|
/ {
|
||||||
|
compatible = "andestech,ae3xx";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
interrupt-parent = <&intc>;
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = &serial0;
|
||||||
|
};
|
||||||
|
|
||||||
|
memory@0 {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x00000000 0x40000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
cpu@0 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "andestech,n13", "andestech,nds32v3";
|
||||||
|
reg = <0>;
|
||||||
|
clock-frequency = <60000000>;
|
||||||
|
next-level-cache = <&L2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
intc: interrupt-controller {
|
||||||
|
compatible = "andestech,ativic32";
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
interrupt-controller;
|
||||||
|
};
|
||||||
|
|
||||||
|
clock: clk {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-frequency = <30000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
apb {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
serial0: serial@f0300000 {
|
||||||
|
compatible = "andestech,uart16550", "ns16550a";
|
||||||
|
reg = <0xf0300000 0x1000>;
|
||||||
|
interrupts = <8>;
|
||||||
|
clock-frequency = <14745600>;
|
||||||
|
reg-shift = <2>;
|
||||||
|
reg-offset = <32>;
|
||||||
|
no-loopback-test = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
timer0: timer@f0400000 {
|
||||||
|
compatible = "andestech,atcpit100";
|
||||||
|
reg = <0xf0400000 0x1000>;
|
||||||
|
interrupts = <2>;
|
||||||
|
clocks = <&clock>;
|
||||||
|
clock-names = "PCLK";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ahb {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
L2: cache-controller@e0500000 {
|
||||||
|
compatible = "andestech,atl2c";
|
||||||
|
reg = <0xe0500000 0x1000>;
|
||||||
|
cache-unified;
|
||||||
|
cache-level = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mac0: ethernet@e0100000 {
|
||||||
|
compatible = "andestech,atmac100";
|
||||||
|
reg = <0xe0100000 0x1000>;
|
||||||
|
interrupts = <18>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
19
arch/nds32/kernel/devtree.c
Normal file
19
arch/nds32/kernel/devtree.c
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
// Copyright (C) 2005-2017 Andes Technology Corporation
|
||||||
|
|
||||||
|
#include <linux/bug.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/of_fdt.h>
|
||||||
|
|
||||||
|
void __init early_init_devtree(void *params)
|
||||||
|
{
|
||||||
|
if (!params || !early_init_dt_scan(params)) {
|
||||||
|
pr_crit("\n"
|
||||||
|
"Error: invalid device tree blob at (virtual address 0x%p)\n"
|
||||||
|
"\nPlease check your bootloader.", params);
|
||||||
|
|
||||||
|
BUG_ON(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
dump_stack_set_arch_desc("%s (DT)", of_flat_dt_get_machine_name());
|
||||||
|
}
|
Reference in New Issue
Block a user