0001 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
0002 /*
0003 * Copyright (C) 2015 Marvell Technology Group Ltd.
0004 *
0005 * Author: Jisheng Zhang <jszhang@marvell.com>
0006 */
0007
0008 #include <dt-bindings/interrupt-controller/arm-gic.h>
0009
0010 / {
0011 compatible = "marvell,berlin4ct", "marvell,berlin";
0012 interrupt-parent = <&gic>;
0013 #address-cells = <2>;
0014 #size-cells = <2>;
0015
0016 aliases {
0017 serial0 = &uart0;
0018 };
0019
0020 psci {
0021 compatible = "arm,psci-1.0", "arm,psci-0.2";
0022 method = "smc";
0023 };
0024
0025 cpus {
0026 #address-cells = <1>;
0027 #size-cells = <0>;
0028
0029 cpu0: cpu@0 {
0030 compatible = "arm,cortex-a53";
0031 device_type = "cpu";
0032 reg = <0x0>;
0033 enable-method = "psci";
0034 next-level-cache = <&l2>;
0035 cpu-idle-states = <&CPU_SLEEP_0>;
0036 };
0037
0038 cpu1: cpu@1 {
0039 compatible = "arm,cortex-a53";
0040 device_type = "cpu";
0041 reg = <0x1>;
0042 enable-method = "psci";
0043 next-level-cache = <&l2>;
0044 cpu-idle-states = <&CPU_SLEEP_0>;
0045 };
0046
0047 cpu2: cpu@2 {
0048 compatible = "arm,cortex-a53";
0049 device_type = "cpu";
0050 reg = <0x2>;
0051 enable-method = "psci";
0052 next-level-cache = <&l2>;
0053 cpu-idle-states = <&CPU_SLEEP_0>;
0054 };
0055
0056 cpu3: cpu@3 {
0057 compatible = "arm,cortex-a53";
0058 device_type = "cpu";
0059 reg = <0x3>;
0060 enable-method = "psci";
0061 next-level-cache = <&l2>;
0062 cpu-idle-states = <&CPU_SLEEP_0>;
0063 };
0064
0065 l2: cache {
0066 compatible = "cache";
0067 };
0068
0069 idle-states {
0070 entry-method = "psci";
0071 CPU_SLEEP_0: cpu-sleep-0 {
0072 compatible = "arm,idle-state";
0073 local-timer-stop;
0074 arm,psci-suspend-param = <0x0010000>;
0075 entry-latency-us = <75>;
0076 exit-latency-us = <155>;
0077 min-residency-us = <1000>;
0078 };
0079 };
0080 };
0081
0082 osc: osc {
0083 compatible = "fixed-clock";
0084 #clock-cells = <0>;
0085 clock-frequency = <25000000>;
0086 };
0087
0088 pmu {
0089 compatible = "arm,cortex-a53-pmu", "arm,armv8-pmuv3";
0090 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
0091 <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
0092 <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
0093 <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
0094 interrupt-affinity = <&cpu0>,
0095 <&cpu1>,
0096 <&cpu2>,
0097 <&cpu3>;
0098 };
0099
0100 timer {
0101 compatible = "arm,armv8-timer";
0102 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
0103 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
0104 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
0105 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
0106 };
0107
0108 soc@f7000000 {
0109 compatible = "simple-bus";
0110 #address-cells = <1>;
0111 #size-cells = <1>;
0112 ranges = <0 0 0xf7000000 0x1000000>;
0113
0114 gic: interrupt-controller@901000 {
0115 compatible = "arm,gic-400";
0116 #interrupt-cells = <3>;
0117 interrupt-controller;
0118 reg = <0x901000 0x1000>,
0119 <0x902000 0x2000>,
0120 <0x904000 0x2000>,
0121 <0x906000 0x2000>;
0122 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
0123 };
0124
0125 apb@e80000 {
0126 compatible = "simple-bus";
0127 #address-cells = <1>;
0128 #size-cells = <1>;
0129
0130 ranges = <0 0xe80000 0x10000>;
0131 interrupt-parent = <&aic>;
0132
0133 gpio0: gpio@400 {
0134 compatible = "snps,dw-apb-gpio";
0135 reg = <0x0400 0x400>;
0136 #address-cells = <1>;
0137 #size-cells = <0>;
0138
0139 porta: gpio-port@0 {
0140 compatible = "snps,dw-apb-gpio-port";
0141 gpio-controller;
0142 #gpio-cells = <2>;
0143 ngpios = <32>;
0144 reg = <0>;
0145 interrupt-controller;
0146 #interrupt-cells = <2>;
0147 interrupts = <0>;
0148 };
0149 };
0150
0151 gpio1: gpio@800 {
0152 compatible = "snps,dw-apb-gpio";
0153 reg = <0x0800 0x400>;
0154 #address-cells = <1>;
0155 #size-cells = <0>;
0156
0157 portb: gpio-port@1 {
0158 compatible = "snps,dw-apb-gpio-port";
0159 gpio-controller;
0160 #gpio-cells = <2>;
0161 ngpios = <32>;
0162 reg = <0>;
0163 interrupt-controller;
0164 #interrupt-cells = <2>;
0165 interrupts = <1>;
0166 };
0167 };
0168
0169 gpio2: gpio@c00 {
0170 compatible = "snps,dw-apb-gpio";
0171 reg = <0x0c00 0x400>;
0172 #address-cells = <1>;
0173 #size-cells = <0>;
0174
0175 portc: gpio-port@2 {
0176 compatible = "snps,dw-apb-gpio-port";
0177 gpio-controller;
0178 #gpio-cells = <2>;
0179 ngpios = <32>;
0180 reg = <0>;
0181 interrupt-controller;
0182 #interrupt-cells = <2>;
0183 interrupts = <2>;
0184 };
0185 };
0186
0187 gpio3: gpio@1000 {
0188 compatible = "snps,dw-apb-gpio";
0189 reg = <0x1000 0x400>;
0190 #address-cells = <1>;
0191 #size-cells = <0>;
0192
0193 portd: gpio-port@3 {
0194 compatible = "snps,dw-apb-gpio-port";
0195 gpio-controller;
0196 #gpio-cells = <2>;
0197 ngpios = <32>;
0198 reg = <0>;
0199 interrupt-controller;
0200 #interrupt-cells = <2>;
0201 interrupts = <3>;
0202 };
0203 };
0204
0205 aic: interrupt-controller@3800 {
0206 compatible = "snps,dw-apb-ictl";
0207 reg = <0x3800 0x30>;
0208 interrupt-controller;
0209 #interrupt-cells = <1>;
0210 interrupt-parent = <&gic>;
0211 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
0212 };
0213 };
0214
0215 soc_pinctrl: pin-controller@ea8000 {
0216 compatible = "marvell,berlin4ct-soc-pinctrl";
0217 reg = <0xea8000 0x14>;
0218 };
0219
0220 avio_pinctrl: pin-controller@ea8400 {
0221 compatible = "marvell,berlin4ct-avio-pinctrl";
0222 reg = <0xea8400 0x8>;
0223 };
0224
0225 apb@fc0000 {
0226 compatible = "simple-bus";
0227 #address-cells = <1>;
0228 #size-cells = <1>;
0229 ranges = <0 0xfc0000 0x10000>;
0230 interrupt-parent = <&sic>;
0231
0232 sic: interrupt-controller@1000 {
0233 compatible = "snps,dw-apb-ictl";
0234 reg = <0x1000 0x30>;
0235 interrupt-controller;
0236 #interrupt-cells = <1>;
0237 interrupt-parent = <&gic>;
0238 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
0239 };
0240
0241 wdt0: watchdog@3000 {
0242 compatible = "snps,dw-wdt";
0243 reg = <0x3000 0x100>;
0244 clocks = <&osc>;
0245 interrupts = <0>;
0246 };
0247
0248 wdt1: watchdog@4000 {
0249 compatible = "snps,dw-wdt";
0250 reg = <0x4000 0x100>;
0251 clocks = <&osc>;
0252 interrupts = <1>;
0253 };
0254
0255 wdt2: watchdog@5000 {
0256 compatible = "snps,dw-wdt";
0257 reg = <0x5000 0x100>;
0258 clocks = <&osc>;
0259 interrupts = <2>;
0260 };
0261
0262 sm_gpio0: gpio@8000 {
0263 compatible = "snps,dw-apb-gpio";
0264 reg = <0x8000 0x400>;
0265 #address-cells = <1>;
0266 #size-cells = <0>;
0267
0268 porte: gpio-port@4 {
0269 compatible = "snps,dw-apb-gpio-port";
0270 gpio-controller;
0271 #gpio-cells = <2>;
0272 ngpios = <32>;
0273 reg = <0>;
0274 };
0275 };
0276
0277 sm_gpio1: gpio@9000 {
0278 compatible = "snps,dw-apb-gpio";
0279 reg = <0x9000 0x400>;
0280 #address-cells = <1>;
0281 #size-cells = <0>;
0282
0283 portf: gpio-port@5 {
0284 compatible = "snps,dw-apb-gpio-port";
0285 gpio-controller;
0286 #gpio-cells = <2>;
0287 ngpios = <32>;
0288 reg = <0>;
0289 };
0290 };
0291
0292 uart0: uart@d000 {
0293 compatible = "snps,dw-apb-uart";
0294 reg = <0xd000 0x100>;
0295 interrupts = <8>;
0296 clocks = <&osc>;
0297 reg-shift = <2>;
0298 status = "disabled";
0299 pinctrl-0 = <&uart0_pmux>;
0300 pinctrl-names = "default";
0301 };
0302 };
0303
0304 system_pinctrl: pin-controller@fe2200 {
0305 compatible = "marvell,berlin4ct-system-pinctrl";
0306 reg = <0xfe2200 0xc>;
0307
0308 uart0_pmux: uart0-pmux {
0309 groups = "SM_URT0_TXD", "SM_URT0_RXD";
0310 function = "uart0";
0311 };
0312 };
0313 };
0314 };