xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/imx7d.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0+ OR MIT
2*4882a593Smuzhiyun//
3*4882a593Smuzhiyun// Copyright 2015 Freescale Semiconductor, Inc.
4*4882a593Smuzhiyun// Copyright 2016 Toradex AG
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#include "imx7s.dtsi"
7*4882a593Smuzhiyun#include <dt-bindings/reset/imx7-reset.h>
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun/ {
10*4882a593Smuzhiyun	cpus {
11*4882a593Smuzhiyun		cpu0: cpu@0 {
12*4882a593Smuzhiyun			clock-frequency = <996000000>;
13*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
14*4882a593Smuzhiyun			#cooling-cells = <2>;
15*4882a593Smuzhiyun			nvmem-cells = <&fuse_grade>;
16*4882a593Smuzhiyun			nvmem-cell-names = "speed_grade";
17*4882a593Smuzhiyun		};
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun		cpu1: cpu@1 {
20*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
21*4882a593Smuzhiyun			device_type = "cpu";
22*4882a593Smuzhiyun			reg = <1>;
23*4882a593Smuzhiyun			clock-frequency = <996000000>;
24*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
25*4882a593Smuzhiyun			#cooling-cells = <2>;
26*4882a593Smuzhiyun			cpu-idle-states = <&cpu_sleep_wait>;
27*4882a593Smuzhiyun		};
28*4882a593Smuzhiyun	};
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun	timer {
31*4882a593Smuzhiyun		compatible = "arm,armv7-timer";
32*4882a593Smuzhiyun		interrupt-parent = <&intc>;
33*4882a593Smuzhiyun		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
34*4882a593Smuzhiyun			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
35*4882a593Smuzhiyun			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
36*4882a593Smuzhiyun			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
37*4882a593Smuzhiyun	};
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun	cpu0_opp_table: opp-table {
40*4882a593Smuzhiyun		compatible = "operating-points-v2";
41*4882a593Smuzhiyun		opp-shared;
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun		opp-792000000 {
44*4882a593Smuzhiyun			opp-hz = /bits/ 64 <792000000>;
45*4882a593Smuzhiyun			opp-microvolt = <1000000>;
46*4882a593Smuzhiyun			clock-latency-ns = <150000>;
47*4882a593Smuzhiyun			opp-supported-hw = <0xd>, <0x7>;
48*4882a593Smuzhiyun			opp-suspend;
49*4882a593Smuzhiyun		};
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun		opp-996000000 {
52*4882a593Smuzhiyun			opp-hz = /bits/ 64 <996000000>;
53*4882a593Smuzhiyun			opp-microvolt = <1100000>;
54*4882a593Smuzhiyun			clock-latency-ns = <150000>;
55*4882a593Smuzhiyun			opp-supported-hw = <0xc>, <0x7>;
56*4882a593Smuzhiyun			opp-suspend;
57*4882a593Smuzhiyun		};
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun		opp-1200000000 {
60*4882a593Smuzhiyun			opp-hz = /bits/ 64 <1200000000>;
61*4882a593Smuzhiyun			opp-microvolt = <1225000>;
62*4882a593Smuzhiyun			clock-latency-ns = <150000>;
63*4882a593Smuzhiyun			opp-supported-hw = <0x8>, <0x3>;
64*4882a593Smuzhiyun			opp-suspend;
65*4882a593Smuzhiyun		};
66*4882a593Smuzhiyun	};
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun	usbphynop2: usbphynop2 {
69*4882a593Smuzhiyun		compatible = "usb-nop-xceiv";
70*4882a593Smuzhiyun		clocks = <&clks IMX7D_USB_PHY2_CLK>;
71*4882a593Smuzhiyun		clock-names = "main_clk";
72*4882a593Smuzhiyun		#phy-cells = <0>;
73*4882a593Smuzhiyun	};
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun	soc {
76*4882a593Smuzhiyun		etm@3007d000 {
77*4882a593Smuzhiyun			compatible = "arm,coresight-etm3x", "arm,primecell";
78*4882a593Smuzhiyun			reg = <0x3007d000 0x1000>;
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun			/*
81*4882a593Smuzhiyun			 * System will hang if added nosmp in kernel command line
82*4882a593Smuzhiyun			 * without arm,primecell-periphid because amba bus try to
83*4882a593Smuzhiyun			 * read id and core1 power off at this time.
84*4882a593Smuzhiyun			 */
85*4882a593Smuzhiyun			arm,primecell-periphid = <0xbb956>;
86*4882a593Smuzhiyun			cpu = <&cpu1>;
87*4882a593Smuzhiyun			clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
88*4882a593Smuzhiyun			clock-names = "apb_pclk";
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun			out-ports {
91*4882a593Smuzhiyun				port {
92*4882a593Smuzhiyun					etm1_out_port: endpoint {
93*4882a593Smuzhiyun						remote-endpoint = <&ca_funnel_in_port1>;
94*4882a593Smuzhiyun					};
95*4882a593Smuzhiyun				};
96*4882a593Smuzhiyun			};
97*4882a593Smuzhiyun		};
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun		intc: interrupt-controller@31001000 {
100*4882a593Smuzhiyun			compatible = "arm,cortex-a7-gic";
101*4882a593Smuzhiyun			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
102*4882a593Smuzhiyun			#interrupt-cells = <3>;
103*4882a593Smuzhiyun			interrupt-controller;
104*4882a593Smuzhiyun			interrupt-parent = <&intc>;
105*4882a593Smuzhiyun			reg = <0x31001000 0x1000>,
106*4882a593Smuzhiyun			      <0x31002000 0x2000>,
107*4882a593Smuzhiyun			      <0x31004000 0x2000>,
108*4882a593Smuzhiyun			      <0x31006000 0x2000>;
109*4882a593Smuzhiyun		};
110*4882a593Smuzhiyun	};
111*4882a593Smuzhiyun};
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun&aips2 {
114*4882a593Smuzhiyun	pcie_phy: pcie-phy@306d0000 {
115*4882a593Smuzhiyun		  compatible = "fsl,imx7d-pcie-phy";
116*4882a593Smuzhiyun		  reg = <0x306d0000 0x10000>;
117*4882a593Smuzhiyun		  status = "disabled";
118*4882a593Smuzhiyun	};
119*4882a593Smuzhiyun};
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun&aips3 {
122*4882a593Smuzhiyun	usbotg2: usb@30b20000 {
123*4882a593Smuzhiyun		compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
124*4882a593Smuzhiyun		reg = <0x30b20000 0x200>;
125*4882a593Smuzhiyun		interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
126*4882a593Smuzhiyun		clocks = <&clks IMX7D_USB_CTRL_CLK>;
127*4882a593Smuzhiyun		fsl,usbphy = <&usbphynop2>;
128*4882a593Smuzhiyun		fsl,usbmisc = <&usbmisc2 0>;
129*4882a593Smuzhiyun		phy-clkgate-delay-us = <400>;
130*4882a593Smuzhiyun		status = "disabled";
131*4882a593Smuzhiyun	};
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun	usbmisc2: usbmisc@30b20200 {
134*4882a593Smuzhiyun		#index-cells = <1>;
135*4882a593Smuzhiyun		compatible = "fsl,imx7d-usbmisc", "fsl,imx6q-usbmisc";
136*4882a593Smuzhiyun		reg = <0x30b20200 0x200>;
137*4882a593Smuzhiyun	};
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun	fec2: ethernet@30bf0000 {
140*4882a593Smuzhiyun		compatible = "fsl,imx7d-fec", "fsl,imx6sx-fec";
141*4882a593Smuzhiyun		reg = <0x30bf0000 0x10000>;
142*4882a593Smuzhiyun		interrupt-names = "int0", "int1", "int2", "pps";
143*4882a593Smuzhiyun		interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
144*4882a593Smuzhiyun			<GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
145*4882a593Smuzhiyun			<GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
146*4882a593Smuzhiyun			<GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
147*4882a593Smuzhiyun		clocks = <&clks IMX7D_ENET2_IPG_ROOT_CLK>,
148*4882a593Smuzhiyun			<&clks IMX7D_ENET_AXI_ROOT_CLK>,
149*4882a593Smuzhiyun			<&clks IMX7D_ENET2_TIME_ROOT_CLK>,
150*4882a593Smuzhiyun			<&clks IMX7D_PLL_ENET_MAIN_125M_CLK>,
151*4882a593Smuzhiyun			<&clks IMX7D_ENET_PHY_REF_ROOT_CLK>;
152*4882a593Smuzhiyun		clock-names = "ipg", "ahb", "ptp",
153*4882a593Smuzhiyun			"enet_clk_ref", "enet_out";
154*4882a593Smuzhiyun		fsl,num-tx-queues = <3>;
155*4882a593Smuzhiyun		fsl,num-rx-queues = <3>;
156*4882a593Smuzhiyun		fsl,stop-mode = <&gpr 0x10 4>;
157*4882a593Smuzhiyun		status = "disabled";
158*4882a593Smuzhiyun	};
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun	pcie: pcie@33800000 {
161*4882a593Smuzhiyun		compatible = "fsl,imx7d-pcie", "snps,dw-pcie";
162*4882a593Smuzhiyun		reg = <0x33800000 0x4000>,
163*4882a593Smuzhiyun		      <0x4ff00000 0x80000>;
164*4882a593Smuzhiyun		reg-names = "dbi", "config";
165*4882a593Smuzhiyun		#address-cells = <3>;
166*4882a593Smuzhiyun		#size-cells = <2>;
167*4882a593Smuzhiyun		device_type = "pci";
168*4882a593Smuzhiyun		bus-range = <0x00 0xff>;
169*4882a593Smuzhiyun		ranges = <0x81000000 0 0          0x4ff80000 0 0x00010000   /* downstream I/O */
170*4882a593Smuzhiyun			  0x82000000 0 0x40000000 0x40000000 0 0x0ff00000>; /* non-prefetchable memory */
171*4882a593Smuzhiyun		num-lanes = <1>;
172*4882a593Smuzhiyun		num-viewport = <4>;
173*4882a593Smuzhiyun		interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
174*4882a593Smuzhiyun		interrupt-names = "msi";
175*4882a593Smuzhiyun		#interrupt-cells = <1>;
176*4882a593Smuzhiyun		interrupt-map-mask = <0 0 0 0x7>;
177*4882a593Smuzhiyun		/*
178*4882a593Smuzhiyun		 * Reference manual lists pci irqs incorrectly
179*4882a593Smuzhiyun		 * Real hardware ordering is same as imx6: D+MSI, C, B, A
180*4882a593Smuzhiyun		 */
181*4882a593Smuzhiyun		interrupt-map = <0 0 0 1 &intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
182*4882a593Smuzhiyun				<0 0 0 2 &intc GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
183*4882a593Smuzhiyun				<0 0 0 3 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
184*4882a593Smuzhiyun				<0 0 0 4 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
185*4882a593Smuzhiyun		clocks = <&clks IMX7D_PCIE_CTRL_ROOT_CLK>,
186*4882a593Smuzhiyun			 <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>,
187*4882a593Smuzhiyun			 <&clks IMX7D_PCIE_PHY_ROOT_CLK>;
188*4882a593Smuzhiyun		clock-names = "pcie", "pcie_bus", "pcie_phy";
189*4882a593Smuzhiyun		assigned-clocks = <&clks IMX7D_PCIE_CTRL_ROOT_SRC>,
190*4882a593Smuzhiyun				  <&clks IMX7D_PCIE_PHY_ROOT_SRC>;
191*4882a593Smuzhiyun		assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_250M_CLK>,
192*4882a593Smuzhiyun					 <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun		fsl,max-link-speed = <2>;
195*4882a593Smuzhiyun		power-domains = <&pgc_pcie_phy>;
196*4882a593Smuzhiyun		resets = <&src IMX7_RESET_PCIEPHY>,
197*4882a593Smuzhiyun			 <&src IMX7_RESET_PCIE_CTRL_APPS_EN>,
198*4882a593Smuzhiyun			 <&src IMX7_RESET_PCIE_CTRL_APPS_TURNOFF>;
199*4882a593Smuzhiyun		reset-names = "pciephy", "apps", "turnoff";
200*4882a593Smuzhiyun		fsl,imx7d-pcie-phy = <&pcie_phy>;
201*4882a593Smuzhiyun		status = "disabled";
202*4882a593Smuzhiyun	};
203*4882a593Smuzhiyun};
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun&ca_funnel_in_ports {
206*4882a593Smuzhiyun	#address-cells = <1>;
207*4882a593Smuzhiyun	#size-cells = <0>;
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun	port@1 {
210*4882a593Smuzhiyun		reg = <1>;
211*4882a593Smuzhiyun		ca_funnel_in_port1: endpoint {
212*4882a593Smuzhiyun			remote-endpoint = <&etm1_out_port>;
213*4882a593Smuzhiyun		};
214*4882a593Smuzhiyun	};
215*4882a593Smuzhiyun};
216