imx7d.dtsi 5.7 KB

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