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