xref: /freebsd/sys/contrib/device-tree/src/arm64/amd/elba.dtsi (revision 84943d6f38e936ac3b7a3947ca26eeb27a39f938)
1*84943d6fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
2*84943d6fSEmmanuel Vadot/*
3*84943d6fSEmmanuel Vadot * Copyright 2020-2022 Advanced Micro Devices, Inc.
4*84943d6fSEmmanuel Vadot */
5*84943d6fSEmmanuel Vadot
6*84943d6fSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
7*84943d6fSEmmanuel Vadot#include "dt-bindings/interrupt-controller/arm-gic.h"
8*84943d6fSEmmanuel Vadot
9*84943d6fSEmmanuel Vadot/ {
10*84943d6fSEmmanuel Vadot	model = "Elba ASIC Board";
11*84943d6fSEmmanuel Vadot	compatible = "amd,pensando-elba";
12*84943d6fSEmmanuel Vadot	interrupt-parent = <&gic>;
13*84943d6fSEmmanuel Vadot	#address-cells = <2>;
14*84943d6fSEmmanuel Vadot	#size-cells = <2>;
15*84943d6fSEmmanuel Vadot
16*84943d6fSEmmanuel Vadot	dma-coherent;
17*84943d6fSEmmanuel Vadot
18*84943d6fSEmmanuel Vadot	ahb_clk: oscillator0 {
19*84943d6fSEmmanuel Vadot		compatible = "fixed-clock";
20*84943d6fSEmmanuel Vadot		#clock-cells = <0>;
21*84943d6fSEmmanuel Vadot	};
22*84943d6fSEmmanuel Vadot
23*84943d6fSEmmanuel Vadot	emmc_clk: oscillator2 {
24*84943d6fSEmmanuel Vadot		compatible = "fixed-clock";
25*84943d6fSEmmanuel Vadot		#clock-cells = <0>;
26*84943d6fSEmmanuel Vadot	};
27*84943d6fSEmmanuel Vadot
28*84943d6fSEmmanuel Vadot	flash_clk: oscillator3 {
29*84943d6fSEmmanuel Vadot		compatible = "fixed-clock";
30*84943d6fSEmmanuel Vadot		#clock-cells = <0>;
31*84943d6fSEmmanuel Vadot	};
32*84943d6fSEmmanuel Vadot
33*84943d6fSEmmanuel Vadot	ref_clk: oscillator4 {
34*84943d6fSEmmanuel Vadot		compatible = "fixed-clock";
35*84943d6fSEmmanuel Vadot		#clock-cells = <0>;
36*84943d6fSEmmanuel Vadot	};
37*84943d6fSEmmanuel Vadot
38*84943d6fSEmmanuel Vadot	psci {
39*84943d6fSEmmanuel Vadot		compatible = "arm,psci-0.2";
40*84943d6fSEmmanuel Vadot		method = "smc";
41*84943d6fSEmmanuel Vadot	};
42*84943d6fSEmmanuel Vadot
43*84943d6fSEmmanuel Vadot	timer {
44*84943d6fSEmmanuel Vadot		compatible = "arm,armv8-timer";
45*84943d6fSEmmanuel Vadot		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
46*84943d6fSEmmanuel Vadot			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
47*84943d6fSEmmanuel Vadot			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
48*84943d6fSEmmanuel Vadot			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
49*84943d6fSEmmanuel Vadot	};
50*84943d6fSEmmanuel Vadot
51*84943d6fSEmmanuel Vadot	pmu {
52*84943d6fSEmmanuel Vadot		compatible = "arm,cortex-a72-pmu";
53*84943d6fSEmmanuel Vadot		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
54*84943d6fSEmmanuel Vadot	};
55*84943d6fSEmmanuel Vadot
56*84943d6fSEmmanuel Vadot	soc: soc {
57*84943d6fSEmmanuel Vadot		compatible = "simple-bus";
58*84943d6fSEmmanuel Vadot		#address-cells = <2>;
59*84943d6fSEmmanuel Vadot		#size-cells = <2>;
60*84943d6fSEmmanuel Vadot		ranges;
61*84943d6fSEmmanuel Vadot
62*84943d6fSEmmanuel Vadot		i2c0: i2c@400 {
63*84943d6fSEmmanuel Vadot			compatible = "snps,designware-i2c";
64*84943d6fSEmmanuel Vadot			reg = <0x0 0x400 0x0 0x100>;
65*84943d6fSEmmanuel Vadot			clocks = <&ahb_clk>;
66*84943d6fSEmmanuel Vadot			#address-cells = <1>;
67*84943d6fSEmmanuel Vadot			#size-cells = <0>;
68*84943d6fSEmmanuel Vadot			i2c-sda-hold-time-ns = <480>;
69*84943d6fSEmmanuel Vadot			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
70*84943d6fSEmmanuel Vadot			status = "disabled";
71*84943d6fSEmmanuel Vadot		};
72*84943d6fSEmmanuel Vadot
73*84943d6fSEmmanuel Vadot		wdt0: watchdog@1400 {
74*84943d6fSEmmanuel Vadot			compatible = "snps,dw-wdt";
75*84943d6fSEmmanuel Vadot			reg = <0x0 0x1400 0x0 0x100>;
76*84943d6fSEmmanuel Vadot			clocks = <&ahb_clk>;
77*84943d6fSEmmanuel Vadot			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
78*84943d6fSEmmanuel Vadot			status = "disabled";
79*84943d6fSEmmanuel Vadot		};
80*84943d6fSEmmanuel Vadot
81*84943d6fSEmmanuel Vadot		qspi: spi@2400 {
82*84943d6fSEmmanuel Vadot			compatible = "amd,pensando-elba-qspi", "cdns,qspi-nor";
83*84943d6fSEmmanuel Vadot			reg = <0x0 0x2400 0x0 0x400>,
84*84943d6fSEmmanuel Vadot			      <0x0 0x7fff0000 0x0 0x1000>;
85*84943d6fSEmmanuel Vadot			#address-cells = <1>;
86*84943d6fSEmmanuel Vadot			#size-cells = <0>;
87*84943d6fSEmmanuel Vadot			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
88*84943d6fSEmmanuel Vadot			clocks = <&flash_clk>;
89*84943d6fSEmmanuel Vadot			cdns,fifo-depth = <1024>;
90*84943d6fSEmmanuel Vadot			cdns,fifo-width = <4>;
91*84943d6fSEmmanuel Vadot			cdns,trigger-address = <0x7fff0000>;
92*84943d6fSEmmanuel Vadot			status = "disabled";
93*84943d6fSEmmanuel Vadot		};
94*84943d6fSEmmanuel Vadot
95*84943d6fSEmmanuel Vadot		spi0: spi@2800 {
96*84943d6fSEmmanuel Vadot			compatible = "amd,pensando-elba-spi";
97*84943d6fSEmmanuel Vadot			reg = <0x0 0x2800 0x0 0x100>;
98*84943d6fSEmmanuel Vadot			#address-cells = <1>;
99*84943d6fSEmmanuel Vadot			#size-cells = <0>;
100*84943d6fSEmmanuel Vadot			amd,pensando-elba-syscon = <&syscon>;
101*84943d6fSEmmanuel Vadot			clocks = <&ahb_clk>;
102*84943d6fSEmmanuel Vadot			interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
103*84943d6fSEmmanuel Vadot			num-cs = <2>;
104*84943d6fSEmmanuel Vadot			status = "disabled";
105*84943d6fSEmmanuel Vadot		};
106*84943d6fSEmmanuel Vadot
107*84943d6fSEmmanuel Vadot		gpio0: gpio@4000 {
108*84943d6fSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
109*84943d6fSEmmanuel Vadot			reg = <0x0 0x4000 0x0 0x78>;
110*84943d6fSEmmanuel Vadot			#address-cells = <1>;
111*84943d6fSEmmanuel Vadot			#size-cells = <0>;
112*84943d6fSEmmanuel Vadot			status = "disabled";
113*84943d6fSEmmanuel Vadot
114*84943d6fSEmmanuel Vadot			porta: gpio-port@0 {
115*84943d6fSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
116*84943d6fSEmmanuel Vadot				reg = <0>;
117*84943d6fSEmmanuel Vadot				gpio-controller;
118*84943d6fSEmmanuel Vadot				#gpio-cells = <2>;
119*84943d6fSEmmanuel Vadot				ngpios = <8>;
120*84943d6fSEmmanuel Vadot				interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
121*84943d6fSEmmanuel Vadot				interrupt-controller;
122*84943d6fSEmmanuel Vadot				interrupt-parent = <&gic>;
123*84943d6fSEmmanuel Vadot				#interrupt-cells = <2>;
124*84943d6fSEmmanuel Vadot			};
125*84943d6fSEmmanuel Vadot
126*84943d6fSEmmanuel Vadot			portb: gpio-port@1 {
127*84943d6fSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
128*84943d6fSEmmanuel Vadot				reg = <1>;
129*84943d6fSEmmanuel Vadot				gpio-controller;
130*84943d6fSEmmanuel Vadot				#gpio-cells = <2>;
131*84943d6fSEmmanuel Vadot				ngpios = <8>;
132*84943d6fSEmmanuel Vadot			};
133*84943d6fSEmmanuel Vadot		};
134*84943d6fSEmmanuel Vadot
135*84943d6fSEmmanuel Vadot		uart0: serial@4800 {
136*84943d6fSEmmanuel Vadot			compatible = "ns16550a";
137*84943d6fSEmmanuel Vadot			reg = <0x0 0x4800 0x0 0x100>;
138*84943d6fSEmmanuel Vadot			clocks = <&ref_clk>;
139*84943d6fSEmmanuel Vadot			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
140*84943d6fSEmmanuel Vadot			reg-shift = <2>;
141*84943d6fSEmmanuel Vadot			reg-io-width = <4>;
142*84943d6fSEmmanuel Vadot		};
143*84943d6fSEmmanuel Vadot
144*84943d6fSEmmanuel Vadot		gic: interrupt-controller@800000 {
145*84943d6fSEmmanuel Vadot			compatible = "arm,gic-v3";
146*84943d6fSEmmanuel Vadot			reg = <0x0 0x800000 0x0 0x200000>,	/* GICD */
147*84943d6fSEmmanuel Vadot			      <0x0 0xa00000 0x0 0x200000>,	/* GICR */
148*84943d6fSEmmanuel Vadot			      <0x0 0x60000000 0x0 0x2000>,	/* GICC */
149*84943d6fSEmmanuel Vadot			      <0x0 0x60010000 0x0 0x1000>,	/* GICH */
150*84943d6fSEmmanuel Vadot			      <0x0 0x60020000 0x0 0x2000>;	/* GICV */
151*84943d6fSEmmanuel Vadot			#address-cells = <2>;
152*84943d6fSEmmanuel Vadot			#size-cells = <2>;
153*84943d6fSEmmanuel Vadot			#interrupt-cells = <3>;
154*84943d6fSEmmanuel Vadot			ranges;
155*84943d6fSEmmanuel Vadot			interrupt-controller;
156*84943d6fSEmmanuel Vadot			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
157*84943d6fSEmmanuel Vadot
158*84943d6fSEmmanuel Vadot			/*
159*84943d6fSEmmanuel Vadot			 * Elba specific pre-ITS is enabled using the
160*84943d6fSEmmanuel Vadot			 * existing property socionext,synquacer-pre-its
161*84943d6fSEmmanuel Vadot			 */
162*84943d6fSEmmanuel Vadot			gic_its: msi-controller@820000 {
163*84943d6fSEmmanuel Vadot				compatible = "arm,gic-v3-its";
164*84943d6fSEmmanuel Vadot				reg = <0x0 0x820000 0x0 0x10000>;
165*84943d6fSEmmanuel Vadot				msi-controller;
166*84943d6fSEmmanuel Vadot				#msi-cells = <1>;
167*84943d6fSEmmanuel Vadot				socionext,synquacer-pre-its =
168*84943d6fSEmmanuel Vadot							<0xc00000 0x1000000>;
169*84943d6fSEmmanuel Vadot			};
170*84943d6fSEmmanuel Vadot		};
171*84943d6fSEmmanuel Vadot
172*84943d6fSEmmanuel Vadot		emmc: mmc@30440000 {
173*84943d6fSEmmanuel Vadot			compatible = "amd,pensando-elba-sd4hc", "cdns,sd4hc";
174*84943d6fSEmmanuel Vadot			reg = <0x0 0x30440000 0x0 0x10000>,
175*84943d6fSEmmanuel Vadot			      <0x0 0x30480044 0x0 0x4>;	/* byte-lane ctrl */
176*84943d6fSEmmanuel Vadot			clocks = <&emmc_clk>;
177*84943d6fSEmmanuel Vadot			interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
178*84943d6fSEmmanuel Vadot			cdns,phy-input-delay-sd-highspeed = <0x4>;
179*84943d6fSEmmanuel Vadot			cdns,phy-input-delay-legacy = <0x4>;
180*84943d6fSEmmanuel Vadot			cdns,phy-input-delay-sd-uhs-sdr50 = <0x6>;
181*84943d6fSEmmanuel Vadot			cdns,phy-input-delay-sd-uhs-ddr50 = <0x16>;
182*84943d6fSEmmanuel Vadot			mmc-ddr-1_8v;
183*84943d6fSEmmanuel Vadot			status = "disabled";
184*84943d6fSEmmanuel Vadot		};
185*84943d6fSEmmanuel Vadot
186*84943d6fSEmmanuel Vadot		syscon: syscon@307c0000 {
187*84943d6fSEmmanuel Vadot			compatible = "amd,pensando-elba-syscon", "syscon";
188*84943d6fSEmmanuel Vadot			reg = <0x0 0x307c0000 0x0 0x3000>;
189*84943d6fSEmmanuel Vadot		};
190*84943d6fSEmmanuel Vadot	};
191*84943d6fSEmmanuel Vadot};
192