Realtek Arm based SoC DT for v5.8

Add RTD1195, RTD1395 and RTD1619 SoCs as well as Xnano X5 TV box.
 Clean up memory nodes and /soc ranges. Factor out r-bus and partition it
 into CRT, Iso, Misc, SB2 and SCPU Wrapper blocks.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEF08DRxvMIhphdW+W+i7RLT5+AT8FAl64dfoRHGFmYWVyYmVy
 QHN1c2UuZGUACgkQ+i7RLT5+AT+iXA//eNc5DNAN7/B3GcoSaKd4jUfh4aCo2FkO
 octvWWuPdMom1zzzpR5GTi4AxFAj3V4gAwFc0SLxXRC1Mwb1QFoGVXsDsFXclhsA
 LdF73S2umVkl65kDvS8rLqq/1e4TidYI6Nlo5MQWcGrTrrkSZdLxiQlhokwsSoLf
 6lS5SqTXuU0Y7b8TOAgsHXZ8HdeNuM0MBvLrNkWSQokFO8tRPYzP6FmrGCK0Z0DE
 dEarIAgrqw5OOoDgSNH80AWzUZGWJSR9gLsl9JwxgmQoG4b66HJrTYZHZ4ylFaeQ
 GsSwiuy7SM1NrU25i6qIGtj7WueGLYczLEBWwKg5AgNcFqq/hGwmoxsLRhJAyb1J
 jcUiH+sfR5fmcuFjA6k3MRD5rTporkS6e44Xni8/AaElSRgu+YYpsXAUeOenMR9m
 cDuR8DrOKkPWyipRK32WyQsF7P3JPaL9gD6q5hSdIAolEncR6LcHNkMUx0zgb/BL
 +gakFU4lmsV9SEFFVyKUr5w0fZLPPWdeXRFtKNZTsPI/AT4jPztIiszB9NWeumMZ
 54uqsm9ct5flLFbqJ/575NDLQHoIY4uz6gZq/oRKdQ/g0AyCI80ZkqnMzm4om4GZ
 Fpdi63l+e2VAJE77R9tqxmj8LQJE9PfTZNo41zFA8gzCqmBN9Rrzs/E47KCLKQYq
 k54Vwaf891g=
 =wdYa
 -----END PGP SIGNATURE-----

Merge tag 'realtek-dt-for-5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/afaerber/linux-realtek into arm/dt

Realtek Arm based SoC DT for v5.8

Add RTD1195, RTD1395 and RTD1619 SoCs as well as Xnano X5 TV box.
Clean up memory nodes and /soc ranges. Factor out r-bus and partition it
into CRT, Iso, Misc, SB2 and SCPU Wrapper blocks.

* tag 'realtek-dt-for-5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/afaerber/linux-realtek: (35 commits)
  dt-bindings: reset: rtd1295: Add SB2 reset
  arm64: dts: realtek: rtd16xx: Add SB2 and SCPU Wrapper syscon nodes
  arm64: dts: realtek: rtd139x: Add SB2 and SCPU Wrapper syscon nodes
  arm64: dts: realtek: rtd129x: Add SB2 and SCPU Wrapper syscon nodes
  ARM: dts: rtd1195: Add SB2 and SCPU Wrapper syscon nodes
  arm64: dts: realtek: rtd16xx: Add CRT syscon node
  ARM: dts: rtd1195: Add UART resets
  ARM: dts: rtd1195: Add reset nodes
  dt-bindings: reset: Add Realtek RTD1195
  ARM: dts: rtd1195: Add CRT syscon node
  arm64: dts: realtek: rtd16xx: Introduce iso and misc syscon
  arm64: dts: realtek: rtd139x: Introduce CRT, iso and misc syscon
  arm64: dts: realtek: rtd129x: Introduce CRT, iso and misc syscon
  ARM: dts: rtd1195: Introduce iso and misc syscon
  arm64: dts: realtek: rtd1295: Add Xnano X5
  dt-bindings: arm: realtek: Add Xnano X5
  dt-bindings: vendor-prefixes: Add Xnano
  arm64: dts: realtek: rtd16xx: Add memory reservations
  arm64: dts: realtek: rtd16xx: Carve out boot ROM from memory
  arm64: dts: realtek: Add RTD1619 SoC and Realtek Mjolnir EVB
  ...

Link: https://lore.kernel.org/r/20200510232158.18477-2-afaerber@suse.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2020-05-21 12:34:22 +02:00
commit 8c915019e3
26 changed files with 1202 additions and 103 deletions

View File

@ -14,6 +14,13 @@ properties:
const: '/'
compatible:
oneOf:
# RTD1195 SoC based boards
- items:
- enum:
- mele,x1000 # MeLE X1000
- realtek,horseradish # Realtek Horseradish EVB
- const: realtek,rtd1195
# RTD1293 SoC based boards
- items:
- enum:
@ -25,6 +32,7 @@ properties:
- enum:
- mele,v9 # MeLE V9
- probox2,ava # ProBox2 AVA
- xnano,x5 # Xnano X5
- zidoo,x9s # Zidoo X9S
- const: realtek,rtd1295
@ -33,4 +41,17 @@ properties:
- enum:
- synology,ds418 # Synology DiskStation DS418
- const: realtek,rtd1296
# RTD1395 SoC based boards
- items:
- enum:
- bananapi,bpi-m4 # Banana Pi BPI-M4
- realtek,lion-skin # Realtek Lion Skin EVB
- const: realtek,rtd1395
# RTD1619 SoC based boards
- items:
- enum:
- realtek,mjolnir # Realtek Mjolnir EVB
- const: realtek,rtd1619
...

View File

@ -1125,6 +1125,8 @@ patternProperties:
description: Shenzhen Xinpeng Technology Co., Ltd
"^xlnx,.*":
description: Xilinx
"^xnano,.*":
description: Xnano
"^xunlong,.*":
description: Shenzhen Xunlong Software CO.,Limited
"^xylon,.*":

View File

@ -898,6 +898,9 @@ dtb-$(CONFIG_ARCH_QCOM) += \
dtb-$(CONFIG_ARCH_RDA) += \
rda8810pl-orangepi-2g-iot.dtb \
rda8810pl-orangepi-i96.dtb
dtb-$(CONFIG_ARCH_REALTEK) += \
rtd1195-horseradish.dtb \
rtd1195-mele-x1000.dtb
dtb-$(CONFIG_ARCH_REALVIEW) += \
arm-realview-pb1176.dtb \
arm-realview-pb11mp.dtb \

View File

@ -0,0 +1,32 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2019 Andreas Färber
*/
/dts-v1/;
#include "rtd1195.dtsi"
/ {
compatible = "realtek,horseradish", "realtek,rtd1195";
model = "Realtek Horseradish EVB";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
memory@a800 {
device_type = "memory";
reg = <0x0000a800 0x17ff5800>, /* boot ROM to r-bus */
<0x18070000 0x00090000>, /* r-bus to NOR flash */
<0x19100000 0x26f00000>; /* NOR flash to 1 GiB */
};
};
&uart0 {
status = "okay";
};

View File

@ -0,0 +1,32 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2017-2019 Andreas Färber
*/
/dts-v1/;
#include "rtd1195.dtsi"
/ {
compatible = "mele,x1000", "realtek,rtd1195";
model = "MeLE X1000";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
memory@a800 {
device_type = "memory";
reg = <0x0000a800 0x17ff5800>, /* boot ROM to r-bus */
<0x18070000 0x00090000>, /* r-bus to NOR flash */
<0x19100000 0x26f00000>; /* NOR flash to 1 GiB */
};
};
&uart0 {
status = "okay";
};

View File

@ -0,0 +1,217 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2017-2019 Andreas Färber
*/
/memreserve/ 0x00000000 0x0000a800; /* boot code */
/memreserve/ 0x0000a800 0x000f5800;
/memreserve/ 0x17fff000 0x00001000;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/realtek,rtd1195.h>
/ {
compatible = "realtek,rtd1195";
interrupt-parent = <&gic>;
#address-cells = <1>;
#size-cells = <1>;
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a7";
reg = <0x0>;
clock-frequency = <1000000000>;
};
cpu1: cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a7";
reg = <0x1>;
clock-frequency = <1000000000>;
};
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
rpc_comm: rpc@b000 {
reg = <0x0000b000 0x1000>;
};
audio@1b00000 {
reg = <0x01b00000 0x400000>;
};
rpc_ringbuf: rpc@1ffe000 {
reg = <0x01ffe000 0x4000>;
};
secure@10000000 {
reg = <0x10000000 0x100000>;
no-map;
};
};
arm-pmu {
compatible = "arm,cortex-a7-pmu";
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
interrupt-affinity = <&cpu0>, <&cpu1>;
};
timer {
compatible = "arm,armv7-timer";
interrupts = <GIC_PPI 13
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
clock-frequency = <27000000>;
};
osc27M: osc {
compatible = "fixed-clock";
clock-frequency = <27000000>;
#clock-cells = <0>;
clock-output-names = "osc27M";
};
soc {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x00000000 0x00000000 0x0000a800>,
<0x18000000 0x18000000 0x00070000>,
<0x18100000 0x18100000 0x01000000>,
<0x80000000 0x80000000 0x80000000>;
rbus: bus@18000000 {
compatible = "simple-bus";
reg = <0x18000000 0x70000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x18000000 0x70000>;
crt: syscon@0 {
compatible = "syscon", "simple-mfd";
reg = <0x0 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x0 0x1000>;
};
iso: syscon@7000 {
compatible = "syscon", "simple-mfd";
reg = <0x7000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x7000 0x1000>;
};
sb2: syscon@1a000 {
compatible = "syscon", "simple-mfd";
reg = <0x1a000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1a000 0x1000>;
};
misc: syscon@1b000 {
compatible = "syscon", "simple-mfd";
reg = <0x1b000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1b000 0x1000>;
};
scpu_wrapper: syscon@1d000 {
compatible = "syscon", "simple-mfd";
reg = <0x1d000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1d000 0x1000>;
};
};
gic: interrupt-controller@ff011000 {
compatible = "arm,cortex-a7-gic";
reg = <0xff011000 0x1000>,
<0xff012000 0x2000>,
<0xff014000 0x2000>,
<0xff016000 0x2000>;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
interrupt-controller;
#interrupt-cells = <3>;
};
};
};
&crt {
reset1: reset-controller@0 {
compatible = "snps,dw-low-reset";
reg = <0x0 0x4>;
#reset-cells = <1>;
};
reset2: reset-controller@4 {
compatible = "snps,dw-low-reset";
reg = <0x4 0x4>;
#reset-cells = <1>;
};
reset3: reset-controller@8 {
compatible = "snps,dw-low-reset";
reg = <0x8 0x4>;
#reset-cells = <1>;
};
};
&iso {
iso_reset: reset-controller@88 {
compatible = "snps,dw-low-reset";
reg = <0x88 0x4>;
#reset-cells = <1>;
};
wdt: watchdog@680 {
compatible = "realtek,rtd1295-watchdog";
reg = <0x680 0x100>;
clocks = <&osc27M>;
};
uart0: serial@800 {
compatible = "snps,dw-apb-uart";
reg = <0x800 0x400>;
reg-shift = <2>;
reg-io-width = <4>;
resets = <&iso_reset RTD1195_ISO_RSTN_UR0>;
clock-frequency = <27000000>;
status = "disabled";
};
};
&misc {
uart1: serial@200 {
compatible = "snps,dw-apb-uart";
reg = <0x200 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
resets = <&reset2 RTD1195_RSTN_UR1>;
clock-frequency = <27000000>;
status = "disabled";
};
};

View File

@ -4,6 +4,12 @@ dtb-$(CONFIG_ARCH_REALTEK) += rtd1293-ds418j.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1295-mele-v9.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1295-probox2-ava.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1295-xnano-x5.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1295-zidoo-x9s.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1296-ds418.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1395-bpi-m4.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1395-lionskin.dtb
dtb-$(CONFIG_ARCH_REALTEK) += rtd1619-mjolnir.dtb

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2017 Andreas Färber
* Copyright (c) 2017-2019 Andreas Färber
*/
/dts-v1/;
@ -11,9 +11,9 @@
compatible = "synology,ds418j", "realtek,rtd1293";
model = "Synology DiskStation DS418j";
memory@0 {
memory@1f000 {
device_type = "memory";
reg = <0x0 0x40000000>;
reg = <0x1f000 0x3ffe1000>; /* boot ROM to 1 GiB */
};
aliases {

View File

@ -36,16 +36,20 @@
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>;
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
};
};
&arm_pmu {
interrupt-affinity = <&cpu0>, <&cpu1>;
};
&gic {
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
};

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2017 Andreas Färber
* Copyright (c) 2017-2019 Andreas Färber
*
* SPDX-License-Identifier: (GPL-2.0+ OR MIT)
*/
@ -12,9 +12,9 @@
compatible = "mele,v9", "realtek,rtd1295";
model = "MeLE V9";
memory@0 {
memory@1f000 {
device_type = "memory";
reg = <0x0 0x80000000>;
reg = <0x1f000 0x7ffe1000>; /* boot ROM to 2 GiB */
};
aliases {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2017 Andreas Färber
* Copyright (c) 2017-2019 Andreas Färber
*
* SPDX-License-Identifier: (GPL-2.0+ OR MIT)
*/
@ -12,9 +12,9 @@
compatible = "probox2,ava", "realtek,rtd1295";
model = "PROBOX2 AVA";
memory@0 {
memory@1f000 {
device_type = "memory";
reg = <0x0 0x80000000>;
reg = <0x1f000 0x7ffe1000>; /* boot ROM to 2 GiB */
};
aliases {

View File

@ -0,0 +1,30 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2017-2019 Andreas Färber
*/
/dts-v1/;
#include "rtd1295.dtsi"
/ {
compatible = "xnano,x5", "realtek,rtd1295";
model = "Xnano X5";
memory@1f000 {
device_type = "memory";
reg = <0x1f000 0x3ffe1000>; /* boot ROM to 1 GiB or 2 GiB */
};
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&uart0 {
status = "okay";
};

View File

@ -11,9 +11,9 @@
compatible = "zidoo,x9s", "realtek,rtd1295";
model = "Zidoo X9S";
memory@0 {
memory@1f000 {
device_type = "memory";
reg = <0x0 0x80000000>;
reg = <0x1f000 0x7ffe1000>; /* boot ROM to 2 GiB */
};
aliases {

View File

@ -2,7 +2,7 @@
/*
* Realtek RTD1295 SoC
*
* Copyright (c) 2016-2017 Andreas Färber
* Copyright (c) 2016-2019 Andreas Färber
*/
#include "rtd129x.dtsi"
@ -47,27 +47,16 @@
};
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
tee@10100000 {
reg = <0x10100000 0xf00000>;
no-map;
};
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>;
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
};
};

View File

@ -11,9 +11,9 @@
compatible = "synology,ds418", "realtek,rtd1296";
model = "Synology DiskStation DS418";
memory@0 {
memory@1f000 {
device_type = "memory";
reg = <0x0 0x80000000>;
reg = <0x1f000 0x7ffe1000>; /* boot ROM to 2 GiB */
};
aliases {

View File

@ -50,13 +50,13 @@
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10
(GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>;
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
};
};

View File

@ -2,14 +2,12 @@
/*
* Realtek RTD1293/RTD1295/RTD1296 SoC
*
* Copyright (c) 2016-2017 Andreas Färber
* Copyright (c) 2016-2019 Andreas Färber
*/
/memreserve/ 0x0000000000000000 0x0000000000030000;
/memreserve/ 0x000000000001f000 0x0000000000001000;
/memreserve/ 0x0000000000030000 0x00000000000d0000;
/memreserve/ 0x0000000000000000 0x000000000001f000;
/memreserve/ 0x000000000001f000 0x00000000000e1000;
/memreserve/ 0x0000000001b00000 0x00000000004be000;
/memreserve/ 0x0000000001ffe000 0x0000000000004000;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/realtek,rtd1295.h>
@ -19,6 +17,25 @@
#address-cells = <1>;
#size-cells = <1>;
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
rpc_comm: rpc@1f000 {
reg = <0x1f000 0x1000>;
};
rpc_ringbuf: rpc@1ffe000 {
reg = <0x1ffe000 0x4000>;
};
tee: tee@10100000 {
reg = <0x10100000 0xf00000>;
no-map;
};
};
arm_pmu: arm-pmu {
compatible = "arm,cortex-a53-pmu";
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
@ -35,73 +52,61 @@
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
/* Exclude up to 2 GiB of RAM */
ranges = <0x80000000 0x80000000 0x80000000>;
ranges = <0x00000000 0x00000000 0x0001f000>, /* boot ROM */
/* Exclude up to 2 GiB of RAM */
<0x80000000 0x80000000 0x80000000>;
reset1: reset-controller@98000000 {
compatible = "snps,dw-low-reset";
reg = <0x98000000 0x4>;
#reset-cells = <1>;
};
rbus: bus@98000000 {
compatible = "simple-bus";
reg = <0x98000000 0x200000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x98000000 0x200000>;
reset2: reset-controller@98000004 {
compatible = "snps,dw-low-reset";
reg = <0x98000004 0x4>;
#reset-cells = <1>;
};
crt: syscon@0 {
compatible = "syscon", "simple-mfd";
reg = <0x0 0x1800>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x0 0x1800>;
};
reset3: reset-controller@98000008 {
compatible = "snps,dw-low-reset";
reg = <0x98000008 0x4>;
#reset-cells = <1>;
};
iso: syscon@7000 {
compatible = "syscon", "simple-mfd";
reg = <0x7000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x7000 0x1000>;
};
reset4: reset-controller@98000050 {
compatible = "snps,dw-low-reset";
reg = <0x98000050 0x4>;
#reset-cells = <1>;
};
sb2: syscon@1a000 {
compatible = "syscon", "simple-mfd";
reg = <0x1a000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1a000 0x1000>;
};
iso_reset: reset-controller@98007088 {
compatible = "snps,dw-low-reset";
reg = <0x98007088 0x4>;
#reset-cells = <1>;
};
misc: syscon@1b000 {
compatible = "syscon", "simple-mfd";
reg = <0x1b000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1b000 0x1000>;
};
wdt: watchdog@98007680 {
compatible = "realtek,rtd1295-watchdog";
reg = <0x98007680 0x100>;
clocks = <&osc27M>;
};
uart0: serial@98007800 {
compatible = "snps,dw-apb-uart";
reg = <0x98007800 0x400>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <27000000>;
resets = <&iso_reset RTD1295_ISO_RSTN_UR0>;
status = "disabled";
};
uart1: serial@9801b200 {
compatible = "snps,dw-apb-uart";
reg = <0x9801b200 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <432000000>;
resets = <&reset2 RTD1295_RSTN_UR1>;
status = "disabled";
};
uart2: serial@9801b400 {
compatible = "snps,dw-apb-uart";
reg = <0x9801b400 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <432000000>;
resets = <&reset2 RTD1295_RSTN_UR2>;
status = "disabled";
scpu_wrapper: syscon@1d000 {
compatible = "syscon", "simple-mfd";
reg = <0x1d000 0x2000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1d000 0x2000>;
};
};
gic: interrupt-controller@ff011000 {
@ -116,3 +121,75 @@
};
};
};
&crt {
reset1: reset-controller@0 {
compatible = "snps,dw-low-reset";
reg = <0x0 0x4>;
#reset-cells = <1>;
};
reset2: reset-controller@4 {
compatible = "snps,dw-low-reset";
reg = <0x4 0x4>;
#reset-cells = <1>;
};
reset3: reset-controller@8 {
compatible = "snps,dw-low-reset";
reg = <0x8 0x4>;
#reset-cells = <1>;
};
reset4: reset-controller@50 {
compatible = "snps,dw-low-reset";
reg = <0x50 0x4>;
#reset-cells = <1>;
};
};
&iso {
iso_reset: reset-controller@88 {
compatible = "snps,dw-low-reset";
reg = <0x88 0x4>;
#reset-cells = <1>;
};
wdt: watchdog@680 {
compatible = "realtek,rtd1295-watchdog";
reg = <0x680 0x100>;
clocks = <&osc27M>;
};
uart0: serial@800 {
compatible = "snps,dw-apb-uart";
reg = <0x800 0x400>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <27000000>;
resets = <&iso_reset RTD1295_ISO_RSTN_UR0>;
status = "disabled";
};
};
&misc {
uart1: serial@200 {
compatible = "snps,dw-apb-uart";
reg = <0x200 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <432000000>;
resets = <&reset2 RTD1295_RSTN_UR1>;
status = "disabled";
};
uart2: serial@400 {
compatible = "snps,dw-apb-uart";
reg = <0x400 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <432000000>;
resets = <&reset2 RTD1295_RSTN_UR2>;
status = "disabled";
};
};

View File

@ -0,0 +1,30 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2019 Andreas Färber
*/
/dts-v1/;
#include "rtd1395.dtsi"
/ {
compatible = "bananapi,bpi-m4", "realtek,rtd1395";
model = "Banana Pi BPI-M4";
memory@2f000 {
device_type = "memory";
reg = <0x2f000 0x3ffd1000>; /* boot ROM to 1 GiB or 2 GiB */
};
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&uart0 {
status = "okay";
};

View File

@ -0,0 +1,36 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2019 Andreas Färber
*/
/dts-v1/;
#include "rtd1395.dtsi"
/ {
compatible = "realtek,lion-skin", "realtek,rtd1395";
model = "Realtek Lion Skin EVB";
memory@2f000 {
device_type = "memory";
reg = <0x2f000 0x3ffd1000>; /* boot ROM to 1 GiB or 2 GiB */
};
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
/* debug console (J1) */
&uart0 {
status = "okay";
};
/* M.2 slot (CON1) */
&uart1 {
status = "disabled";
};

View File

@ -0,0 +1,65 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Realtek RTD1395 SoC
*
* Copyright (c) 2019 Andreas Färber
*/
#include "rtd139x.dtsi"
/ {
compatible = "realtek,rtd1395";
cpus {
#address-cells = <2>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x0>;
next-level-cache = <&l2>;
};
cpu1: cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x1>;
next-level-cache = <&l2>;
};
cpu2: cpu@2 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x2>;
next-level-cache = <&l2>;
};
cpu3: cpu@3 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x3>;
next-level-cache = <&l2>;
};
l2: l2-cache {
compatible = "cache";
};
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
};
};
&arm_pmu {
interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
};

View File

@ -0,0 +1,193 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Realtek RTD1395 SoC family
*
* Copyright (c) 2019 Andreas Färber
*/
/memreserve/ 0x0000000000000000 0x000000000002f000;
/memreserve/ 0x000000000002f000 0x00000000000d1000;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/realtek,rtd1295.h>
/ {
interrupt-parent = <&gic>;
#address-cells = <1>;
#size-cells = <1>;
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
rpc_comm: rpc@2f000 {
reg = <0x2f000 0x1000>;
};
rpc_ringbuf: rpc@1ffe000 {
reg = <0x1ffe000 0x4000>;
};
tee: tee@10100000 {
reg = <0x10100000 0xf00000>;
no-map;
};
};
arm_pmu: arm-pmu {
compatible = "arm,cortex-a53-pmu";
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
};
osc27M: osc {
compatible = "fixed-clock";
clock-frequency = <27000000>;
#clock-cells = <0>;
clock-output-names = "osc27M";
};
soc {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x00000000 0x00000000 0x0001f000>, /* boot ROM */
<0x98000000 0x98000000 0x68000000>;
rbus: bus@98000000 {
compatible = "simple-bus";
reg = <0x98000000 0x200000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x98000000 0x200000>;
crt: syscon@0 {
compatible = "syscon", "simple-mfd";
reg = <0x0 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x0 0x1000>;
};
iso: syscon@7000 {
compatible = "syscon", "simple-mfd";
reg = <0x7000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x7000 0x1000>;
};
sb2: syscon@1a000 {
compatible = "syscon", "simple-mfd";
reg = <0x1a000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1a000 0x1000>;
};
misc: syscon@1b000 {
compatible = "syscon", "simple-mfd";
reg = <0x1b000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1b000 0x1000>;
};
scpu_wrapper: syscon@1d000 {
compatible = "syscon", "simple-mfd";
reg = <0x1d000 0x2000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1d000 0x2000>;
};
};
gic: interrupt-controller@ff011000 {
compatible = "arm,gic-400";
reg = <0xff011000 0x1000>,
<0xff012000 0x2000>,
<0xff014000 0x2000>,
<0xff016000 0x2000>;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
interrupt-controller;
#interrupt-cells = <3>;
};
};
};
&crt {
reset1: reset-controller@0 {
compatible = "snps,dw-low-reset";
reg = <0x0 0x4>;
#reset-cells = <1>;
};
reset2: reset-controller@4 {
compatible = "snps,dw-low-reset";
reg = <0x4 0x4>;
#reset-cells = <1>;
};
reset3: reset-controller@8 {
compatible = "snps,dw-low-reset";
reg = <0x8 0x4>;
#reset-cells = <1>;
};
reset4: reset-controller@50 {
compatible = "snps,dw-low-reset";
reg = <0x50 0x4>;
#reset-cells = <1>;
};
};
&iso {
iso_reset: reset-controller@88 {
compatible = "snps,dw-low-reset";
reg = <0x88 0x4>;
#reset-cells = <1>;
};
wdt: watchdog@680 {
compatible = "realtek,rtd1295-watchdog";
reg = <0x680 0x100>;
clocks = <&osc27M>;
};
uart0: serial@800 {
compatible = "snps,dw-apb-uart";
reg = <0x800 0x400>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <27000000>;
resets = <&iso_reset RTD1295_ISO_RSTN_UR0>;
status = "disabled";
};
};
&misc {
uart1: serial@200 {
compatible = "snps,dw-apb-uart";
reg = <0x200 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <432000000>;
resets = <&reset2 RTD1295_RSTN_UR1>;
status = "disabled";
};
uart2: serial@400 {
compatible = "snps,dw-apb-uart";
reg = <0x400 0x100>;
reg-shift = <2>;
reg-io-width = <4>;
clock-frequency = <432000000>;
resets = <&reset2 RTD1295_RSTN_UR2>;
status = "disabled";
};
};

View File

@ -0,0 +1,44 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Copyright (c) 2019 Realtek Semiconductor Corp.
* Copyright (c) 2019 Andreas Färber
*/
/dts-v1/;
#include "rtd1619.dtsi"
/ {
compatible = "realtek,mjolnir", "realtek,rtd1619";
model = "Realtek Mjolnir EVB";
memory@2e000 {
device_type = "memory";
reg = <0x2e000 0x7ffd2000>; /* boot ROM to 2 GiB */
};
chosen {
stdout-path = "serial0:115200n8";
};
aliases {
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
};
};
/* debug console (J1) */
&uart0 {
status = "okay";
};
/* M.2 slot (CON4) */
&uart1 {
status = "disabled";
};
/* GPIO connector (T1) */
&uart2 {
status = "disabled";
};

View File

@ -0,0 +1,12 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Realtek RTD1619 SoC
*
* Copyright (c) 2019 Realtek Semiconductor Corp.
*/
#include "rtd16xx.dtsi"
/ {
compatible = "realtek,rtd1619";
};

View File

@ -0,0 +1,229 @@
// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
* Realtek RTD16xx SoC family
*
* Copyright (c) 2019 Realtek Semiconductor Corp.
* Copyright (c) 2019 Andreas Färber
*/
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
/ {
interrupt-parent = <&gic>;
#address-cells = <1>;
#size-cells = <1>;
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
rpc_comm: rpc@2f000 {
reg = <0x2f000 0x1000>;
};
rpc_ringbuf: rpc@1ffe000 {
reg = <0x1ffe000 0x4000>;
};
tee: tee@10100000 {
reg = <0x10100000 0xf00000>;
no-map;
};
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x0>;
enable-method = "psci";
next-level-cache = <&l2>;
};
cpu1: cpu@100 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x100>;
enable-method = "psci";
next-level-cache = <&l3>;
};
cpu2: cpu@200 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x200>;
enable-method = "psci";
next-level-cache = <&l3>;
};
cpu3: cpu@300 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x300>;
enable-method = "psci";
next-level-cache = <&l3>;
};
cpu4: cpu@400 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x400>;
enable-method = "psci";
next-level-cache = <&l3>;
};
cpu5: cpu@500 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x500>;
enable-method = "psci";
next-level-cache = <&l3>;
};
l2: l2-cache {
compatible = "cache";
next-level-cache = <&l3>;
};
l3: l3-cache {
compatible = "cache";
};
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
};
arm_pmu: pmu {
compatible = "arm,armv8-pmuv3";
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>,
<&cpu3>, <&cpu4>, <&cpu5>;
};
psci {
compatible = "arm,psci-1.0";
method = "smc";
};
osc27M: osc {
compatible = "fixed-clock";
clock-frequency = <27000000>;
clock-output-names = "osc27M";
#clock-cells = <0>;
};
soc {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x00000000 0x00000000 0x0002e000>, /* boot ROM */
<0x98000000 0x98000000 0x68000000>;
rbus: bus@98000000 {
compatible = "simple-bus";
reg = <0x98000000 0x200000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x98000000 0x200000>;
crt: syscon@0 {
compatible = "syscon", "simple-mfd";
reg = <0x0 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x0 0x1000>;
};
iso: syscon@7000 {
compatible = "syscon", "simple-mfd";
reg = <0x7000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x7000 0x1000>;
};
sb2: syscon@1a000 {
compatible = "syscon", "simple-mfd";
reg = <0x1a000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1a000 0x1000>;
};
misc: syscon@1b000 {
compatible = "syscon", "simple-mfd";
reg = <0x1b000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1b000 0x1000>;
};
scpu_wrapper: syscon@1d000 {
compatible = "syscon", "simple-mfd";
reg = <0x1d000 0x1000>;
reg-io-width = <4>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1d000 0x1000>;
};
};
gic: interrupt-controller@ff100000 {
compatible = "arm,gic-v3";
reg = <0xff100000 0x10000>,
<0xff140000 0xc0000>;
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <3>;
};
};
};
&iso {
uart0: serial0@800 {
compatible = "snps,dw-apb-uart";
reg = <0x800 0x400>;
reg-shift = <2>;
reg-io-width = <4>;
interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <27000000>;
status = "disabled";
};
};
&misc {
uart1: serial1@200 {
compatible = "snps,dw-apb-uart";
reg = <0x200 0x400>;
reg-shift = <2>;
reg-io-width = <4>;
interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <432000000>;
status = "disabled";
};
uart2: serial2@400 {
compatible = "snps,dw-apb-uart";
reg = <0x400 0x400>;
reg-shift = <2>;
reg-io-width = <4>;
interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <432000000>;
status = "disabled";
};
};

View File

@ -0,0 +1,74 @@
/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
/*
* Realtek RTD1195 reset controllers
*
* Copyright (c) 2017 Andreas Färber
*/
#ifndef DT_BINDINGS_RESET_RTD1195_H
#define DT_BINDINGS_RESET_RTD1195_H
/* soft reset 1 */
#define RTD1195_RSTN_MISC 0
#define RTD1195_RSTN_RNG 1
#define RTD1195_RSTN_USB3_POW 2
#define RTD1195_RSTN_GSPI 3
#define RTD1195_RSTN_USB3_P0_MDIO 4
#define RTD1195_RSTN_VE_H265 5
#define RTD1195_RSTN_USB 6
#define RTD1195_RSTN_USB_PHY0 8
#define RTD1195_RSTN_USB_PHY1 9
#define RTD1195_RSTN_HDMIRX 11
#define RTD1195_RSTN_HDMI 12
#define RTD1195_RSTN_ETN 14
#define RTD1195_RSTN_AIO 15
#define RTD1195_RSTN_GPU 16
#define RTD1195_RSTN_VE_H264 17
#define RTD1195_RSTN_VE_JPEG 18
#define RTD1195_RSTN_TVE 19
#define RTD1195_RSTN_VO 20
#define RTD1195_RSTN_LVDS 21
#define RTD1195_RSTN_SE 22
#define RTD1195_RSTN_DCU 23
#define RTD1195_RSTN_DC_PHY 24
#define RTD1195_RSTN_CP 25
#define RTD1195_RSTN_MD 26
#define RTD1195_RSTN_TP 27
#define RTD1195_RSTN_AE 28
#define RTD1195_RSTN_NF 29
#define RTD1195_RSTN_MIPI 30
/* soft reset 2 */
#define RTD1195_RSTN_ACPU 0
#define RTD1195_RSTN_VCPU 1
#define RTD1195_RSTN_PCR 9
#define RTD1195_RSTN_CR 10
#define RTD1195_RSTN_EMMC 11
#define RTD1195_RSTN_SDIO 12
#define RTD1195_RSTN_I2C_5 18
#define RTD1195_RSTN_RTC 20
#define RTD1195_RSTN_I2C_4 23
#define RTD1195_RSTN_I2C_3 24
#define RTD1195_RSTN_I2C_2 25
#define RTD1195_RSTN_I2C_1 26
#define RTD1195_RSTN_UR1 28
/* soft reset 3 */
#define RTD1195_RSTN_SB2 0
/* iso soft reset */
#define RTD1195_ISO_RSTN_VFD 0
#define RTD1195_ISO_RSTN_IR 1
#define RTD1195_ISO_RSTN_CEC0 2
#define RTD1195_ISO_RSTN_CEC1 3
#define RTD1195_ISO_RSTN_DP 4
#define RTD1195_ISO_RSTN_CBUSTX 5
#define RTD1195_ISO_RSTN_CBUSRX 6
#define RTD1195_ISO_RSTN_EFUSE 7
#define RTD1195_ISO_RSTN_UR0 8
#define RTD1195_ISO_RSTN_GMAC 9
#define RTD1195_ISO_RSTN_GPHY 10
#define RTD1195_ISO_RSTN_I2C_0 11
#define RTD1195_ISO_RSTN_I2C_6 12
#define RTD1195_ISO_RSTN_CBUS 13
#endif

View File

@ -75,6 +75,9 @@
#define RTD1295_RSTN_CBUS_TX 30
#define RTD1295_RSTN_SDS_PHY 31
/* soft reset 3 */
#define RTD1295_RSTN_SB2 0
/* soft reset 4 */
#define RTD1295_RSTN_DCPHY_CRT 0
#define RTD1295_RSTN_DCPHY_ALERT_RX 1