imx8mn.dtsi 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Copyright 2019 NXP
  4. */
  5. #include <dt-bindings/clock/imx8mn-clock.h>
  6. #include <dt-bindings/power/imx8mn-power.h>
  7. #include <dt-bindings/reset/imx8mq-reset.h>
  8. #include <dt-bindings/gpio/gpio.h>
  9. #include <dt-bindings/input/input.h>
  10. #include <dt-bindings/interrupt-controller/arm-gic.h>
  11. #include <dt-bindings/thermal/thermal.h>
  12. #include "imx8mn-pinfunc.h"
  13. / {
  14. interrupt-parent = <&gic>;
  15. #address-cells = <2>;
  16. #size-cells = <2>;
  17. aliases {
  18. ethernet0 = &fec1;
  19. gpio0 = &gpio1;
  20. gpio1 = &gpio2;
  21. gpio2 = &gpio3;
  22. gpio3 = &gpio4;
  23. gpio4 = &gpio5;
  24. i2c0 = &i2c1;
  25. i2c1 = &i2c2;
  26. i2c2 = &i2c3;
  27. i2c3 = &i2c4;
  28. mmc0 = &usdhc1;
  29. mmc1 = &usdhc2;
  30. mmc2 = &usdhc3;
  31. serial0 = &uart1;
  32. serial1 = &uart2;
  33. serial2 = &uart3;
  34. serial3 = &uart4;
  35. spi0 = &ecspi1;
  36. spi1 = &ecspi2;
  37. spi2 = &ecspi3;
  38. };
  39. cpus {
  40. #address-cells = <1>;
  41. #size-cells = <0>;
  42. idle-states {
  43. entry-method = "psci";
  44. cpu_pd_wait: cpu-pd-wait {
  45. compatible = "arm,idle-state";
  46. arm,psci-suspend-param = <0x0010033>;
  47. local-timer-stop;
  48. entry-latency-us = <1000>;
  49. exit-latency-us = <700>;
  50. min-residency-us = <2700>;
  51. };
  52. };
  53. A53_0: cpu@0 {
  54. device_type = "cpu";
  55. compatible = "arm,cortex-a53";
  56. reg = <0x0>;
  57. clock-latency = <61036>;
  58. clocks = <&clk IMX8MN_CLK_ARM>;
  59. enable-method = "psci";
  60. i-cache-size = <0x8000>;
  61. i-cache-line-size = <64>;
  62. i-cache-sets = <256>;
  63. d-cache-size = <0x8000>;
  64. d-cache-line-size = <64>;
  65. d-cache-sets = <128>;
  66. next-level-cache = <&A53_L2>;
  67. operating-points-v2 = <&a53_opp_table>;
  68. nvmem-cells = <&cpu_speed_grade>;
  69. nvmem-cell-names = "speed_grade";
  70. cpu-idle-states = <&cpu_pd_wait>;
  71. #cooling-cells = <2>;
  72. };
  73. A53_1: cpu@1 {
  74. device_type = "cpu";
  75. compatible = "arm,cortex-a53";
  76. reg = <0x1>;
  77. clock-latency = <61036>;
  78. clocks = <&clk IMX8MN_CLK_ARM>;
  79. enable-method = "psci";
  80. i-cache-size = <0x8000>;
  81. i-cache-line-size = <64>;
  82. i-cache-sets = <256>;
  83. d-cache-size = <0x8000>;
  84. d-cache-line-size = <64>;
  85. d-cache-sets = <128>;
  86. next-level-cache = <&A53_L2>;
  87. operating-points-v2 = <&a53_opp_table>;
  88. cpu-idle-states = <&cpu_pd_wait>;
  89. #cooling-cells = <2>;
  90. };
  91. A53_2: cpu@2 {
  92. device_type = "cpu";
  93. compatible = "arm,cortex-a53";
  94. reg = <0x2>;
  95. clock-latency = <61036>;
  96. clocks = <&clk IMX8MN_CLK_ARM>;
  97. enable-method = "psci";
  98. i-cache-size = <0x8000>;
  99. i-cache-line-size = <64>;
  100. i-cache-sets = <256>;
  101. d-cache-size = <0x8000>;
  102. d-cache-line-size = <64>;
  103. d-cache-sets = <128>;
  104. next-level-cache = <&A53_L2>;
  105. operating-points-v2 = <&a53_opp_table>;
  106. cpu-idle-states = <&cpu_pd_wait>;
  107. #cooling-cells = <2>;
  108. };
  109. A53_3: cpu@3 {
  110. device_type = "cpu";
  111. compatible = "arm,cortex-a53";
  112. reg = <0x3>;
  113. clock-latency = <61036>;
  114. clocks = <&clk IMX8MN_CLK_ARM>;
  115. enable-method = "psci";
  116. i-cache-size = <0x8000>;
  117. i-cache-line-size = <64>;
  118. i-cache-sets = <256>;
  119. d-cache-size = <0x8000>;
  120. d-cache-line-size = <64>;
  121. d-cache-sets = <128>;
  122. next-level-cache = <&A53_L2>;
  123. operating-points-v2 = <&a53_opp_table>;
  124. cpu-idle-states = <&cpu_pd_wait>;
  125. #cooling-cells = <2>;
  126. };
  127. A53_L2: l2-cache0 {
  128. compatible = "cache";
  129. cache-level = <2>;
  130. cache-size = <0x80000>;
  131. cache-line-size = <64>;
  132. cache-sets = <512>;
  133. };
  134. };
  135. a53_opp_table: opp-table {
  136. compatible = "operating-points-v2";
  137. opp-shared;
  138. opp-1200000000 {
  139. opp-hz = /bits/ 64 <1200000000>;
  140. opp-microvolt = <850000>;
  141. opp-supported-hw = <0xb00>, <0x7>;
  142. clock-latency-ns = <150000>;
  143. opp-suspend;
  144. };
  145. opp-1400000000 {
  146. opp-hz = /bits/ 64 <1400000000>;
  147. opp-microvolt = <950000>;
  148. opp-supported-hw = <0x300>, <0x7>;
  149. clock-latency-ns = <150000>;
  150. opp-suspend;
  151. };
  152. opp-1500000000 {
  153. opp-hz = /bits/ 64 <1500000000>;
  154. opp-microvolt = <1000000>;
  155. opp-supported-hw = <0x100>, <0x3>;
  156. clock-latency-ns = <150000>;
  157. opp-suspend;
  158. };
  159. };
  160. osc_32k: clock-osc-32k {
  161. compatible = "fixed-clock";
  162. #clock-cells = <0>;
  163. clock-frequency = <32768>;
  164. clock-output-names = "osc_32k";
  165. };
  166. osc_24m: clock-osc-24m {
  167. compatible = "fixed-clock";
  168. #clock-cells = <0>;
  169. clock-frequency = <24000000>;
  170. clock-output-names = "osc_24m";
  171. };
  172. clk_ext1: clock-ext1 {
  173. compatible = "fixed-clock";
  174. #clock-cells = <0>;
  175. clock-frequency = <133000000>;
  176. clock-output-names = "clk_ext1";
  177. };
  178. clk_ext2: clock-ext2 {
  179. compatible = "fixed-clock";
  180. #clock-cells = <0>;
  181. clock-frequency = <133000000>;
  182. clock-output-names = "clk_ext2";
  183. };
  184. clk_ext3: clock-ext3 {
  185. compatible = "fixed-clock";
  186. #clock-cells = <0>;
  187. clock-frequency = <133000000>;
  188. clock-output-names = "clk_ext3";
  189. };
  190. clk_ext4: clock-ext4 {
  191. compatible = "fixed-clock";
  192. #clock-cells = <0>;
  193. clock-frequency = <133000000>;
  194. clock-output-names = "clk_ext4";
  195. };
  196. pmu {
  197. compatible = "arm,cortex-a53-pmu";
  198. interrupts = <GIC_PPI 7
  199. (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  200. };
  201. psci {
  202. compatible = "arm,psci-1.0";
  203. method = "smc";
  204. };
  205. thermal-zones {
  206. cpu-thermal {
  207. polling-delay-passive = <250>;
  208. polling-delay = <2000>;
  209. thermal-sensors = <&tmu>;
  210. trips {
  211. cpu_alert0: trip0 {
  212. temperature = <85000>;
  213. hysteresis = <2000>;
  214. type = "passive";
  215. };
  216. cpu_crit0: trip1 {
  217. temperature = <95000>;
  218. hysteresis = <2000>;
  219. type = "critical";
  220. };
  221. };
  222. cooling-maps {
  223. map0 {
  224. trip = <&cpu_alert0>;
  225. cooling-device =
  226. <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  227. <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  228. <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  229. <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  230. };
  231. };
  232. };
  233. };
  234. timer {
  235. compatible = "arm,armv8-timer";
  236. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  237. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  238. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  239. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  240. clock-frequency = <8000000>;
  241. arm,no-tick-in-suspend;
  242. };
  243. soc: soc@0 {
  244. compatible = "fsl,imx8mn-soc", "simple-bus";
  245. #address-cells = <1>;
  246. #size-cells = <1>;
  247. ranges = <0x0 0x0 0x0 0x3e000000>;
  248. dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
  249. nvmem-cells = <&imx8mn_uid>;
  250. nvmem-cell-names = "soc_unique_id";
  251. aips1: bus@30000000 {
  252. compatible = "fsl,aips-bus", "simple-bus";
  253. reg = <0x30000000 0x400000>;
  254. #address-cells = <1>;
  255. #size-cells = <1>;
  256. ranges;
  257. spba2: spba-bus@30000000 {
  258. compatible = "fsl,spba-bus", "simple-bus";
  259. #address-cells = <1>;
  260. #size-cells = <1>;
  261. reg = <0x30000000 0x100000>;
  262. ranges;
  263. sai2: sai@30020000 {
  264. compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
  265. reg = <0x30020000 0x10000>;
  266. #sound-dai-cells = <0>;
  267. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  268. clocks = <&clk IMX8MN_CLK_SAI2_IPG>,
  269. <&clk IMX8MN_CLK_DUMMY>,
  270. <&clk IMX8MN_CLK_SAI2_ROOT>,
  271. <&clk IMX8MN_CLK_DUMMY>, <&clk IMX8MN_CLK_DUMMY>;
  272. clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
  273. dmas = <&sdma2 2 2 0>, <&sdma2 3 2 0>;
  274. dma-names = "rx", "tx";
  275. status = "disabled";
  276. };
  277. sai3: sai@30030000 {
  278. compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
  279. reg = <0x30030000 0x10000>;
  280. #sound-dai-cells = <0>;
  281. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  282. clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
  283. <&clk IMX8MN_CLK_DUMMY>,
  284. <&clk IMX8MN_CLK_SAI3_ROOT>,
  285. <&clk IMX8MN_CLK_DUMMY>, <&clk IMX8MN_CLK_DUMMY>;
  286. clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
  287. dmas = <&sdma2 4 2 0>, <&sdma2 5 2 0>;
  288. dma-names = "rx", "tx";
  289. status = "disabled";
  290. };
  291. sai5: sai@30050000 {
  292. compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
  293. reg = <0x30050000 0x10000>;
  294. #sound-dai-cells = <0>;
  295. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  296. clocks = <&clk IMX8MN_CLK_SAI5_IPG>,
  297. <&clk IMX8MN_CLK_DUMMY>,
  298. <&clk IMX8MN_CLK_SAI5_ROOT>,
  299. <&clk IMX8MN_CLK_DUMMY>, <&clk IMX8MN_CLK_DUMMY>;
  300. clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
  301. dmas = <&sdma2 8 2 0>, <&sdma2 9 2 0>;
  302. dma-names = "rx", "tx";
  303. fsl,shared-interrupt;
  304. fsl,dataline = <0 0xf 0xf>;
  305. status = "disabled";
  306. };
  307. sai6: sai@30060000 {
  308. compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
  309. reg = <0x30060000 0x10000>;
  310. #sound-dai-cells = <0>;
  311. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  312. clocks = <&clk IMX8MN_CLK_SAI6_IPG>,
  313. <&clk IMX8MN_CLK_DUMMY>,
  314. <&clk IMX8MN_CLK_SAI6_ROOT>,
  315. <&clk IMX8MN_CLK_DUMMY>, <&clk IMX8MN_CLK_DUMMY>;
  316. clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
  317. dmas = <&sdma2 10 2 0>, <&sdma2 11 2 0>;
  318. dma-names = "rx", "tx";
  319. status = "disabled";
  320. };
  321. micfil: audio-controller@30080000 {
  322. compatible = "fsl,imx8mm-micfil";
  323. reg = <0x30080000 0x10000>;
  324. interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
  325. <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
  326. <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
  327. <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  328. clocks = <&clk IMX8MN_CLK_PDM_IPG>,
  329. <&clk IMX8MN_CLK_PDM_ROOT>,
  330. <&clk IMX8MN_AUDIO_PLL1_OUT>,
  331. <&clk IMX8MN_AUDIO_PLL2_OUT>,
  332. <&clk IMX8MN_CLK_EXT3>;
  333. clock-names = "ipg_clk", "ipg_clk_app",
  334. "pll8k", "pll11k", "clkext3";
  335. dmas = <&sdma2 24 25 0x80000000>;
  336. dma-names = "rx";
  337. #sound-dai-cells = <0>;
  338. status = "disabled";
  339. };
  340. spdif1: spdif@30090000 {
  341. compatible = "fsl,imx35-spdif";
  342. reg = <0x30090000 0x10000>;
  343. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  344. clocks = <&clk IMX8MN_CLK_AUDIO_AHB>, /* core */
  345. <&clk IMX8MN_CLK_24M>, /* rxtx0 */
  346. <&clk IMX8MN_CLK_SPDIF1>, /* rxtx1 */
  347. <&clk IMX8MN_CLK_DUMMY>, /* rxtx2 */
  348. <&clk IMX8MN_CLK_DUMMY>, /* rxtx3 */
  349. <&clk IMX8MN_CLK_DUMMY>, /* rxtx4 */
  350. <&clk IMX8MN_CLK_AUDIO_AHB>, /* rxtx5 */
  351. <&clk IMX8MN_CLK_DUMMY>, /* rxtx6 */
  352. <&clk IMX8MN_CLK_DUMMY>, /* rxtx7 */
  353. <&clk IMX8MN_CLK_DUMMY>; /* spba */
  354. clock-names = "core", "rxtx0",
  355. "rxtx1", "rxtx2",
  356. "rxtx3", "rxtx4",
  357. "rxtx5", "rxtx6",
  358. "rxtx7", "spba";
  359. dmas = <&sdma2 28 18 0>, <&sdma2 29 18 0>;
  360. dma-names = "rx", "tx";
  361. status = "disabled";
  362. };
  363. sai7: sai@300b0000 {
  364. compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
  365. reg = <0x300b0000 0x10000>;
  366. #sound-dai-cells = <0>;
  367. interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
  368. clocks = <&clk IMX8MN_CLK_SAI7_IPG>,
  369. <&clk IMX8MN_CLK_DUMMY>,
  370. <&clk IMX8MN_CLK_SAI7_ROOT>,
  371. <&clk IMX8MN_CLK_DUMMY>, <&clk IMX8MN_CLK_DUMMY>;
  372. clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
  373. dmas = <&sdma2 12 2 0>, <&sdma2 13 2 0>;
  374. dma-names = "rx", "tx";
  375. status = "disabled";
  376. };
  377. easrc: easrc@300c0000 {
  378. compatible = "fsl,imx8mn-easrc";
  379. reg = <0x300c0000 0x10000>;
  380. interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
  381. clocks = <&clk IMX8MN_CLK_ASRC_ROOT>;
  382. clock-names = "mem";
  383. dmas = <&sdma2 16 23 0> , <&sdma2 17 23 0>,
  384. <&sdma2 18 23 0> , <&sdma2 19 23 0>,
  385. <&sdma2 20 23 0> , <&sdma2 21 23 0>,
  386. <&sdma2 22 23 0> , <&sdma2 23 23 0>;
  387. dma-names = "ctx0_rx", "ctx0_tx",
  388. "ctx1_rx", "ctx1_tx",
  389. "ctx2_rx", "ctx2_tx",
  390. "ctx3_rx", "ctx3_tx";
  391. firmware-name = "imx/easrc/easrc-imx8mn.bin";
  392. fsl,asrc-rate = <8000>;
  393. fsl,asrc-format = <2>;
  394. status = "disabled";
  395. };
  396. };
  397. gpio1: gpio@30200000 {
  398. compatible = "fsl,imx8mn-gpio", "fsl,imx35-gpio";
  399. reg = <0x30200000 0x10000>;
  400. interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
  401. <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  402. clocks = <&clk IMX8MN_CLK_GPIO1_ROOT>;
  403. gpio-controller;
  404. #gpio-cells = <2>;
  405. interrupt-controller;
  406. #interrupt-cells = <2>;
  407. gpio-ranges = <&iomuxc 0 10 30>;
  408. };
  409. gpio2: gpio@30210000 {
  410. compatible = "fsl,imx8mn-gpio", "fsl,imx35-gpio";
  411. reg = <0x30210000 0x10000>;
  412. interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
  413. <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  414. clocks = <&clk IMX8MN_CLK_GPIO2_ROOT>;
  415. gpio-controller;
  416. #gpio-cells = <2>;
  417. interrupt-controller;
  418. #interrupt-cells = <2>;
  419. gpio-ranges = <&iomuxc 0 40 21>;
  420. };
  421. gpio3: gpio@30220000 {
  422. compatible = "fsl,imx8mn-gpio", "fsl,imx35-gpio";
  423. reg = <0x30220000 0x10000>;
  424. interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
  425. <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
  426. clocks = <&clk IMX8MN_CLK_GPIO3_ROOT>;
  427. gpio-controller;
  428. #gpio-cells = <2>;
  429. interrupt-controller;
  430. #interrupt-cells = <2>;
  431. gpio-ranges = <&iomuxc 0 61 26>;
  432. };
  433. gpio4: gpio@30230000 {
  434. compatible = "fsl,imx8mn-gpio", "fsl,imx35-gpio";
  435. reg = <0x30230000 0x10000>;
  436. interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
  437. <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  438. clocks = <&clk IMX8MN_CLK_GPIO4_ROOT>;
  439. gpio-controller;
  440. #gpio-cells = <2>;
  441. interrupt-controller;
  442. #interrupt-cells = <2>;
  443. gpio-ranges = <&iomuxc 21 108 11>;
  444. };
  445. gpio5: gpio@30240000 {
  446. compatible = "fsl,imx8mn-gpio", "fsl,imx35-gpio";
  447. reg = <0x30240000 0x10000>;
  448. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
  449. <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  450. clocks = <&clk IMX8MN_CLK_GPIO5_ROOT>;
  451. gpio-controller;
  452. #gpio-cells = <2>;
  453. interrupt-controller;
  454. #interrupt-cells = <2>;
  455. gpio-ranges = <&iomuxc 0 119 30>;
  456. };
  457. tmu: tmu@30260000 {
  458. compatible = "fsl,imx8mn-tmu", "fsl,imx8mm-tmu";
  459. reg = <0x30260000 0x10000>;
  460. clocks = <&clk IMX8MN_CLK_TMU_ROOT>;
  461. #thermal-sensor-cells = <0>;
  462. };
  463. wdog1: watchdog@30280000 {
  464. compatible = "fsl,imx8mn-wdt", "fsl,imx21-wdt";
  465. reg = <0x30280000 0x10000>;
  466. interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
  467. clocks = <&clk IMX8MN_CLK_WDOG1_ROOT>;
  468. status = "disabled";
  469. };
  470. wdog2: watchdog@30290000 {
  471. compatible = "fsl,imx8mn-wdt", "fsl,imx21-wdt";
  472. reg = <0x30290000 0x10000>;
  473. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
  474. clocks = <&clk IMX8MN_CLK_WDOG2_ROOT>;
  475. status = "disabled";
  476. };
  477. wdog3: watchdog@302a0000 {
  478. compatible = "fsl,imx8mn-wdt", "fsl,imx21-wdt";
  479. reg = <0x302a0000 0x10000>;
  480. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  481. clocks = <&clk IMX8MN_CLK_WDOG3_ROOT>;
  482. status = "disabled";
  483. };
  484. sdma3: dma-controller@302b0000 {
  485. compatible = "fsl,imx8mn-sdma", "fsl,imx8mq-sdma";
  486. reg = <0x302b0000 0x10000>;
  487. interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
  488. clocks = <&clk IMX8MN_CLK_SDMA3_ROOT>,
  489. <&clk IMX8MN_CLK_SDMA3_ROOT>;
  490. clock-names = "ipg", "ahb";
  491. #dma-cells = <3>;
  492. fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
  493. };
  494. sdma2: dma-controller@302c0000 {
  495. compatible = "fsl,imx8mn-sdma", "fsl,imx8mq-sdma";
  496. reg = <0x302c0000 0x10000>;
  497. interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
  498. clocks = <&clk IMX8MN_CLK_SDMA2_ROOT>,
  499. <&clk IMX8MN_CLK_SDMA2_ROOT>;
  500. clock-names = "ipg", "ahb";
  501. #dma-cells = <3>;
  502. fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
  503. };
  504. iomuxc: pinctrl@30330000 {
  505. compatible = "fsl,imx8mn-iomuxc";
  506. reg = <0x30330000 0x10000>;
  507. };
  508. gpr: iomuxc-gpr@30340000 {
  509. compatible = "fsl,imx8mn-iomuxc-gpr", "syscon";
  510. reg = <0x30340000 0x10000>;
  511. };
  512. ocotp: efuse@30350000 {
  513. compatible = "fsl,imx8mn-ocotp", "fsl,imx8mm-ocotp", "syscon";
  514. reg = <0x30350000 0x10000>;
  515. clocks = <&clk IMX8MN_CLK_OCOTP_ROOT>;
  516. #address-cells = <1>;
  517. #size-cells = <1>;
  518. imx8mn_uid: unique-id@4 {
  519. reg = <0x4 0x8>;
  520. };
  521. cpu_speed_grade: speed-grade@10 {
  522. reg = <0x10 4>;
  523. };
  524. fec_mac_address: mac-address@90 {
  525. reg = <0x90 6>;
  526. };
  527. };
  528. anatop: anatop@30360000 {
  529. compatible = "fsl,imx8mn-anatop", "fsl,imx8mm-anatop",
  530. "syscon";
  531. reg = <0x30360000 0x10000>;
  532. };
  533. snvs: snvs@30370000 {
  534. compatible = "fsl,sec-v4.0-mon","syscon", "simple-mfd";
  535. reg = <0x30370000 0x10000>;
  536. snvs_rtc: snvs-rtc-lp {
  537. compatible = "fsl,sec-v4.0-mon-rtc-lp";
  538. regmap = <&snvs>;
  539. offset = <0x34>;
  540. interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
  541. <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
  542. clocks = <&clk IMX8MN_CLK_SNVS_ROOT>;
  543. clock-names = "snvs-rtc";
  544. };
  545. snvs_pwrkey: snvs-powerkey {
  546. compatible = "fsl,sec-v4.0-pwrkey";
  547. regmap = <&snvs>;
  548. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  549. clocks = <&clk IMX8MN_CLK_SNVS_ROOT>;
  550. clock-names = "snvs-pwrkey";
  551. linux,keycode = <KEY_POWER>;
  552. wakeup-source;
  553. status = "disabled";
  554. };
  555. };
  556. clk: clock-controller@30380000 {
  557. compatible = "fsl,imx8mn-ccm";
  558. reg = <0x30380000 0x10000>;
  559. #clock-cells = <1>;
  560. clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
  561. <&clk_ext3>, <&clk_ext4>;
  562. clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
  563. "clk_ext3", "clk_ext4";
  564. assigned-clocks = <&clk IMX8MN_CLK_A53_SRC>,
  565. <&clk IMX8MN_CLK_A53_CORE>,
  566. <&clk IMX8MN_CLK_NOC>,
  567. <&clk IMX8MN_CLK_AUDIO_AHB>,
  568. <&clk IMX8MN_CLK_IPG_AUDIO_ROOT>,
  569. <&clk IMX8MN_SYS_PLL3>,
  570. <&clk IMX8MN_AUDIO_PLL1>,
  571. <&clk IMX8MN_AUDIO_PLL2>;
  572. assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_800M>,
  573. <&clk IMX8MN_ARM_PLL_OUT>,
  574. <&clk IMX8MN_SYS_PLL3_OUT>,
  575. <&clk IMX8MN_SYS_PLL1_800M>;
  576. assigned-clock-rates = <0>, <0>, <0>,
  577. <400000000>,
  578. <400000000>,
  579. <600000000>,
  580. <393216000>,
  581. <361267200>;
  582. };
  583. src: reset-controller@30390000 {
  584. compatible = "fsl,imx8mn-src", "fsl,imx8mq-src", "syscon";
  585. reg = <0x30390000 0x10000>;
  586. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  587. #reset-cells = <1>;
  588. };
  589. gpc: gpc@303a0000 {
  590. compatible = "fsl,imx8mn-gpc";
  591. reg = <0x303a0000 0x10000>;
  592. interrupt-parent = <&gic>;
  593. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  594. pgc {
  595. #address-cells = <1>;
  596. #size-cells = <0>;
  597. pgc_hsiomix: power-domain@0 {
  598. #power-domain-cells = <0>;
  599. reg = <IMX8MN_POWER_DOMAIN_HSIOMIX>;
  600. clocks = <&clk IMX8MN_CLK_USB_BUS>;
  601. };
  602. pgc_otg1: power-domain@1 {
  603. #power-domain-cells = <0>;
  604. reg = <IMX8MN_POWER_DOMAIN_OTG1>;
  605. };
  606. pgc_gpumix: power-domain@2 {
  607. #power-domain-cells = <0>;
  608. reg = <IMX8MN_POWER_DOMAIN_GPUMIX>;
  609. clocks = <&clk IMX8MN_CLK_GPU_CORE_ROOT>,
  610. <&clk IMX8MN_CLK_GPU_SHADER>,
  611. <&clk IMX8MN_CLK_GPU_BUS_ROOT>,
  612. <&clk IMX8MN_CLK_GPU_AHB>;
  613. };
  614. pgc_dispmix: power-domain@3 {
  615. #power-domain-cells = <0>;
  616. reg = <IMX8MN_POWER_DOMAIN_DISPMIX>;
  617. clocks = <&clk IMX8MN_CLK_DISP_AXI_ROOT>,
  618. <&clk IMX8MN_CLK_DISP_APB_ROOT>;
  619. };
  620. pgc_mipi: power-domain@4 {
  621. #power-domain-cells = <0>;
  622. reg = <IMX8MN_POWER_DOMAIN_MIPI>;
  623. power-domains = <&pgc_dispmix>;
  624. };
  625. };
  626. };
  627. };
  628. aips2: bus@30400000 {
  629. compatible = "fsl,aips-bus", "simple-bus";
  630. reg = <0x30400000 0x400000>;
  631. #address-cells = <1>;
  632. #size-cells = <1>;
  633. ranges;
  634. pwm1: pwm@30660000 {
  635. compatible = "fsl,imx8mn-pwm", "fsl,imx27-pwm";
  636. reg = <0x30660000 0x10000>;
  637. interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
  638. clocks = <&clk IMX8MN_CLK_PWM1_ROOT>,
  639. <&clk IMX8MN_CLK_PWM1_ROOT>;
  640. clock-names = "ipg", "per";
  641. #pwm-cells = <3>;
  642. status = "disabled";
  643. };
  644. pwm2: pwm@30670000 {
  645. compatible = "fsl,imx8mn-pwm", "fsl,imx27-pwm";
  646. reg = <0x30670000 0x10000>;
  647. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  648. clocks = <&clk IMX8MN_CLK_PWM2_ROOT>,
  649. <&clk IMX8MN_CLK_PWM2_ROOT>;
  650. clock-names = "ipg", "per";
  651. #pwm-cells = <3>;
  652. status = "disabled";
  653. };
  654. pwm3: pwm@30680000 {
  655. compatible = "fsl,imx8mn-pwm", "fsl,imx27-pwm";
  656. reg = <0x30680000 0x10000>;
  657. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  658. clocks = <&clk IMX8MN_CLK_PWM3_ROOT>,
  659. <&clk IMX8MN_CLK_PWM3_ROOT>;
  660. clock-names = "ipg", "per";
  661. #pwm-cells = <3>;
  662. status = "disabled";
  663. };
  664. pwm4: pwm@30690000 {
  665. compatible = "fsl,imx8mn-pwm", "fsl,imx27-pwm";
  666. reg = <0x30690000 0x10000>;
  667. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  668. clocks = <&clk IMX8MN_CLK_PWM4_ROOT>,
  669. <&clk IMX8MN_CLK_PWM4_ROOT>;
  670. clock-names = "ipg", "per";
  671. #pwm-cells = <3>;
  672. status = "disabled";
  673. };
  674. system_counter: timer@306a0000 {
  675. compatible = "nxp,sysctr-timer";
  676. reg = <0x306a0000 0x20000>;
  677. interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  678. clocks = <&osc_24m>;
  679. clock-names = "per";
  680. };
  681. };
  682. aips3: bus@30800000 {
  683. compatible = "fsl,aips-bus", "simple-bus";
  684. reg = <0x30800000 0x400000>;
  685. #address-cells = <1>;
  686. #size-cells = <1>;
  687. ranges;
  688. spba1: spba-bus@30800000 {
  689. compatible = "fsl,spba-bus", "simple-bus";
  690. #address-cells = <1>;
  691. #size-cells = <1>;
  692. reg = <0x30800000 0x100000>;
  693. ranges;
  694. ecspi1: spi@30820000 {
  695. compatible = "fsl,imx8mn-ecspi", "fsl,imx51-ecspi";
  696. #address-cells = <1>;
  697. #size-cells = <0>;
  698. reg = <0x30820000 0x10000>;
  699. interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
  700. clocks = <&clk IMX8MN_CLK_ECSPI1_ROOT>,
  701. <&clk IMX8MN_CLK_ECSPI1_ROOT>;
  702. clock-names = "ipg", "per";
  703. dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
  704. dma-names = "rx", "tx";
  705. status = "disabled";
  706. };
  707. ecspi2: spi@30830000 {
  708. compatible = "fsl,imx8mn-ecspi", "fsl,imx51-ecspi";
  709. #address-cells = <1>;
  710. #size-cells = <0>;
  711. reg = <0x30830000 0x10000>;
  712. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  713. clocks = <&clk IMX8MN_CLK_ECSPI2_ROOT>,
  714. <&clk IMX8MN_CLK_ECSPI2_ROOT>;
  715. clock-names = "ipg", "per";
  716. dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
  717. dma-names = "rx", "tx";
  718. status = "disabled";
  719. };
  720. ecspi3: spi@30840000 {
  721. compatible = "fsl,imx8mn-ecspi", "fsl,imx51-ecspi";
  722. #address-cells = <1>;
  723. #size-cells = <0>;
  724. reg = <0x30840000 0x10000>;
  725. interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
  726. clocks = <&clk IMX8MN_CLK_ECSPI3_ROOT>,
  727. <&clk IMX8MN_CLK_ECSPI3_ROOT>;
  728. clock-names = "ipg", "per";
  729. dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
  730. dma-names = "rx", "tx";
  731. status = "disabled";
  732. };
  733. uart1: serial@30860000 {
  734. compatible = "fsl,imx8mn-uart", "fsl,imx6q-uart";
  735. reg = <0x30860000 0x10000>;
  736. interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
  737. clocks = <&clk IMX8MN_CLK_UART1_ROOT>,
  738. <&clk IMX8MN_CLK_UART1_ROOT>;
  739. clock-names = "ipg", "per";
  740. dmas = <&sdma1 22 4 0>, <&sdma1 23 4 0>;
  741. dma-names = "rx", "tx";
  742. status = "disabled";
  743. };
  744. uart3: serial@30880000 {
  745. compatible = "fsl,imx8mn-uart", "fsl,imx6q-uart";
  746. reg = <0x30880000 0x10000>;
  747. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  748. clocks = <&clk IMX8MN_CLK_UART3_ROOT>,
  749. <&clk IMX8MN_CLK_UART3_ROOT>;
  750. clock-names = "ipg", "per";
  751. dmas = <&sdma1 26 4 0>, <&sdma1 27 4 0>;
  752. dma-names = "rx", "tx";
  753. status = "disabled";
  754. };
  755. uart2: serial@30890000 {
  756. compatible = "fsl,imx8mn-uart", "fsl,imx6q-uart";
  757. reg = <0x30890000 0x10000>;
  758. interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
  759. clocks = <&clk IMX8MN_CLK_UART2_ROOT>,
  760. <&clk IMX8MN_CLK_UART2_ROOT>;
  761. clock-names = "ipg", "per";
  762. status = "disabled";
  763. };
  764. };
  765. crypto: crypto@30900000 {
  766. compatible = "fsl,sec-v4.0";
  767. #address-cells = <1>;
  768. #size-cells = <1>;
  769. reg = <0x30900000 0x40000>;
  770. ranges = <0 0x30900000 0x40000>;
  771. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  772. clocks = <&clk IMX8MN_CLK_AHB>,
  773. <&clk IMX8MN_CLK_IPG_ROOT>;
  774. clock-names = "aclk", "ipg";
  775. sec_jr0: jr@1000 {
  776. compatible = "fsl,sec-v4.0-job-ring";
  777. reg = <0x1000 0x1000>;
  778. interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
  779. status = "disabled";
  780. };
  781. sec_jr1: jr@2000 {
  782. compatible = "fsl,sec-v4.0-job-ring";
  783. reg = <0x2000 0x1000>;
  784. interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
  785. };
  786. sec_jr2: jr@3000 {
  787. compatible = "fsl,sec-v4.0-job-ring";
  788. reg = <0x3000 0x1000>;
  789. interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
  790. };
  791. };
  792. i2c1: i2c@30a20000 {
  793. compatible = "fsl,imx8mn-i2c", "fsl,imx21-i2c";
  794. #address-cells = <1>;
  795. #size-cells = <0>;
  796. reg = <0x30a20000 0x10000>;
  797. interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
  798. clocks = <&clk IMX8MN_CLK_I2C1_ROOT>;
  799. status = "disabled";
  800. };
  801. i2c2: i2c@30a30000 {
  802. compatible = "fsl,imx8mn-i2c", "fsl,imx21-i2c";
  803. #address-cells = <1>;
  804. #size-cells = <0>;
  805. reg = <0x30a30000 0x10000>;
  806. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
  807. clocks = <&clk IMX8MN_CLK_I2C2_ROOT>;
  808. status = "disabled";
  809. };
  810. i2c3: i2c@30a40000 {
  811. #address-cells = <1>;
  812. #size-cells = <0>;
  813. compatible = "fsl,imx8mn-i2c", "fsl,imx21-i2c";
  814. reg = <0x30a40000 0x10000>;
  815. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  816. clocks = <&clk IMX8MN_CLK_I2C3_ROOT>;
  817. status = "disabled";
  818. };
  819. i2c4: i2c@30a50000 {
  820. compatible = "fsl,imx8mn-i2c", "fsl,imx21-i2c";
  821. #address-cells = <1>;
  822. #size-cells = <0>;
  823. reg = <0x30a50000 0x10000>;
  824. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  825. clocks = <&clk IMX8MN_CLK_I2C4_ROOT>;
  826. status = "disabled";
  827. };
  828. uart4: serial@30a60000 {
  829. compatible = "fsl,imx8mn-uart", "fsl,imx6q-uart";
  830. reg = <0x30a60000 0x10000>;
  831. interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
  832. clocks = <&clk IMX8MN_CLK_UART4_ROOT>,
  833. <&clk IMX8MN_CLK_UART4_ROOT>;
  834. clock-names = "ipg", "per";
  835. dmas = <&sdma1 28 4 0>, <&sdma1 29 4 0>;
  836. dma-names = "rx", "tx";
  837. status = "disabled";
  838. };
  839. mu: mailbox@30aa0000 {
  840. compatible = "fsl,imx8mn-mu", "fsl,imx6sx-mu";
  841. reg = <0x30aa0000 0x10000>;
  842. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  843. clocks = <&clk IMX8MN_CLK_MU_ROOT>;
  844. #mbox-cells = <2>;
  845. };
  846. usdhc1: mmc@30b40000 {
  847. compatible = "fsl,imx8mn-usdhc", "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc";
  848. reg = <0x30b40000 0x10000>;
  849. interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
  850. clocks = <&clk IMX8MN_CLK_IPG_ROOT>,
  851. <&clk IMX8MN_CLK_NAND_USDHC_BUS>,
  852. <&clk IMX8MN_CLK_USDHC1_ROOT>;
  853. clock-names = "ipg", "ahb", "per";
  854. fsl,tuning-start-tap = <20>;
  855. fsl,tuning-step = <2>;
  856. bus-width = <4>;
  857. status = "disabled";
  858. };
  859. usdhc2: mmc@30b50000 {
  860. compatible = "fsl,imx8mn-usdhc", "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc";
  861. reg = <0x30b50000 0x10000>;
  862. interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  863. clocks = <&clk IMX8MN_CLK_IPG_ROOT>,
  864. <&clk IMX8MN_CLK_NAND_USDHC_BUS>,
  865. <&clk IMX8MN_CLK_USDHC2_ROOT>;
  866. clock-names = "ipg", "ahb", "per";
  867. fsl,tuning-start-tap = <20>;
  868. fsl,tuning-step = <2>;
  869. bus-width = <4>;
  870. status = "disabled";
  871. };
  872. usdhc3: mmc@30b60000 {
  873. compatible = "fsl,imx8mn-usdhc", "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc";
  874. reg = <0x30b60000 0x10000>;
  875. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  876. clocks = <&clk IMX8MN_CLK_IPG_ROOT>,
  877. <&clk IMX8MN_CLK_NAND_USDHC_BUS>,
  878. <&clk IMX8MN_CLK_USDHC3_ROOT>;
  879. clock-names = "ipg", "ahb", "per";
  880. fsl,tuning-start-tap = <20>;
  881. fsl,tuning-step = <2>;
  882. bus-width = <4>;
  883. status = "disabled";
  884. };
  885. flexspi: spi@30bb0000 {
  886. #address-cells = <1>;
  887. #size-cells = <0>;
  888. compatible = "nxp,imx8mm-fspi";
  889. reg = <0x30bb0000 0x10000>, <0x8000000 0x10000000>;
  890. reg-names = "fspi_base", "fspi_mmap";
  891. interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
  892. clocks = <&clk IMX8MN_CLK_QSPI_ROOT>,
  893. <&clk IMX8MN_CLK_QSPI_ROOT>;
  894. clock-names = "fspi_en", "fspi";
  895. status = "disabled";
  896. };
  897. sdma1: dma-controller@30bd0000 {
  898. compatible = "fsl,imx8mn-sdma", "fsl,imx8mq-sdma";
  899. reg = <0x30bd0000 0x10000>;
  900. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  901. clocks = <&clk IMX8MN_CLK_SDMA1_ROOT>,
  902. <&clk IMX8MN_CLK_AHB>;
  903. clock-names = "ipg", "ahb";
  904. #dma-cells = <3>;
  905. fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
  906. };
  907. fec1: ethernet@30be0000 {
  908. compatible = "fsl,imx8mn-fec", "fsl,imx8mq-fec", "fsl,imx6sx-fec";
  909. reg = <0x30be0000 0x10000>;
  910. interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
  911. <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
  912. <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
  913. <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
  914. clocks = <&clk IMX8MN_CLK_ENET1_ROOT>,
  915. <&clk IMX8MN_CLK_ENET1_ROOT>,
  916. <&clk IMX8MN_CLK_ENET_TIMER>,
  917. <&clk IMX8MN_CLK_ENET_REF>,
  918. <&clk IMX8MN_CLK_ENET_PHY_REF>;
  919. clock-names = "ipg", "ahb", "ptp",
  920. "enet_clk_ref", "enet_out";
  921. assigned-clocks = <&clk IMX8MN_CLK_ENET_AXI>,
  922. <&clk IMX8MN_CLK_ENET_TIMER>,
  923. <&clk IMX8MN_CLK_ENET_REF>,
  924. <&clk IMX8MN_CLK_ENET_PHY_REF>;
  925. assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_266M>,
  926. <&clk IMX8MN_SYS_PLL2_100M>,
  927. <&clk IMX8MN_SYS_PLL2_125M>,
  928. <&clk IMX8MN_SYS_PLL2_50M>;
  929. assigned-clock-rates = <0>, <100000000>, <125000000>, <0>;
  930. fsl,num-tx-queues = <3>;
  931. fsl,num-rx-queues = <3>;
  932. nvmem-cells = <&fec_mac_address>;
  933. nvmem-cell-names = "mac-address";
  934. fsl,stop-mode = <&gpr 0x10 3>;
  935. status = "disabled";
  936. };
  937. };
  938. aips4: bus@32c00000 {
  939. compatible = "fsl,aips-bus", "simple-bus";
  940. reg = <0x32c00000 0x400000>;
  941. #address-cells = <1>;
  942. #size-cells = <1>;
  943. ranges;
  944. disp_blk_ctrl: blk-ctrl@32e28000 {
  945. compatible = "fsl,imx8mn-disp-blk-ctrl", "syscon";
  946. reg = <0x32e28000 0x100>;
  947. power-domains = <&pgc_dispmix>, <&pgc_dispmix>,
  948. <&pgc_dispmix>, <&pgc_mipi>,
  949. <&pgc_mipi>;
  950. power-domain-names = "bus", "isi",
  951. "lcdif", "mipi-dsi",
  952. "mipi-csi";
  953. clocks = <&clk IMX8MN_CLK_DISP_AXI>,
  954. <&clk IMX8MN_CLK_DISP_APB>,
  955. <&clk IMX8MN_CLK_DISP_AXI_ROOT>,
  956. <&clk IMX8MN_CLK_DISP_APB_ROOT>,
  957. <&clk IMX8MN_CLK_DISP_AXI_ROOT>,
  958. <&clk IMX8MN_CLK_DISP_APB_ROOT>,
  959. <&clk IMX8MN_CLK_DISP_PIXEL_ROOT>,
  960. <&clk IMX8MN_CLK_DSI_CORE>,
  961. <&clk IMX8MN_CLK_DSI_PHY_REF>,
  962. <&clk IMX8MN_CLK_CSI1_PHY_REF>,
  963. <&clk IMX8MN_CLK_CAMERA_PIXEL_ROOT>;
  964. clock-names = "disp_axi", "disp_apb",
  965. "disp_axi_root", "disp_apb_root",
  966. "lcdif-axi", "lcdif-apb", "lcdif-pix",
  967. "dsi-pclk", "dsi-ref",
  968. "csi-aclk", "csi-pclk";
  969. #power-domain-cells = <1>;
  970. };
  971. usbotg1: usb@32e40000 {
  972. compatible = "fsl,imx8mn-usb", "fsl,imx7d-usb";
  973. reg = <0x32e40000 0x200>;
  974. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  975. clocks = <&clk IMX8MN_CLK_USB1_CTRL_ROOT>;
  976. clock-names = "usb1_ctrl_root_clk";
  977. assigned-clocks = <&clk IMX8MN_CLK_USB_BUS>;
  978. assigned-clock-parents = <&clk IMX8MN_SYS_PLL2_500M>;
  979. phys = <&usbphynop1>;
  980. fsl,usbmisc = <&usbmisc1 0>;
  981. power-domains = <&pgc_hsiomix>;
  982. status = "disabled";
  983. };
  984. usbmisc1: usbmisc@32e40200 {
  985. compatible = "fsl,imx8mn-usbmisc", "fsl,imx7d-usbmisc";
  986. #index-cells = <1>;
  987. reg = <0x32e40200 0x200>;
  988. };
  989. };
  990. dma_apbh: dma-controller@33000000 {
  991. compatible = "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh";
  992. reg = <0x33000000 0x2000>;
  993. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  994. <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  995. <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  996. <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  997. interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
  998. #dma-cells = <1>;
  999. dma-channels = <4>;
  1000. clocks = <&clk IMX8MN_CLK_NAND_USDHC_BUS_RAWNAND_CLK>;
  1001. };
  1002. gpmi: nand-controller@33002000 {
  1003. compatible = "fsl,imx8mn-gpmi-nand", "fsl,imx7d-gpmi-nand";
  1004. #address-cells = <1>;
  1005. #size-cells = <0>;
  1006. reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
  1007. reg-names = "gpmi-nand", "bch";
  1008. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  1009. interrupt-names = "bch";
  1010. clocks = <&clk IMX8MN_CLK_NAND_ROOT>,
  1011. <&clk IMX8MN_CLK_NAND_USDHC_BUS_RAWNAND_CLK>;
  1012. clock-names = "gpmi_io", "gpmi_bch_apb";
  1013. dmas = <&dma_apbh 0>;
  1014. dma-names = "rx-tx";
  1015. status = "disabled";
  1016. };
  1017. gpu: gpu@38000000 {
  1018. compatible = "vivante,gc";
  1019. reg = <0x38000000 0x8000>;
  1020. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  1021. clocks = <&clk IMX8MN_CLK_GPU_AHB>,
  1022. <&clk IMX8MN_CLK_GPU_BUS_ROOT>,
  1023. <&clk IMX8MN_CLK_GPU_CORE_ROOT>,
  1024. <&clk IMX8MN_CLK_GPU_SHADER>;
  1025. clock-names = "reg", "bus", "core", "shader";
  1026. assigned-clocks = <&clk IMX8MN_CLK_GPU_CORE>,
  1027. <&clk IMX8MN_CLK_GPU_SHADER>,
  1028. <&clk IMX8MN_CLK_GPU_AXI>,
  1029. <&clk IMX8MN_CLK_GPU_AHB>,
  1030. <&clk IMX8MN_GPU_PLL>;
  1031. assigned-clock-parents = <&clk IMX8MN_GPU_PLL_OUT>,
  1032. <&clk IMX8MN_GPU_PLL_OUT>,
  1033. <&clk IMX8MN_SYS_PLL1_800M>,
  1034. <&clk IMX8MN_SYS_PLL1_800M>;
  1035. assigned-clock-rates = <400000000>,
  1036. <400000000>,
  1037. <800000000>,
  1038. <400000000>,
  1039. <1200000000>;
  1040. power-domains = <&pgc_gpumix>;
  1041. };
  1042. gic: interrupt-controller@38800000 {
  1043. compatible = "arm,gic-v3";
  1044. reg = <0x38800000 0x10000>,
  1045. <0x38880000 0xc0000>;
  1046. #interrupt-cells = <3>;
  1047. interrupt-controller;
  1048. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  1049. };
  1050. ddrc: memory-controller@3d400000 {
  1051. compatible = "fsl,imx8mn-ddrc", "fsl,imx8m-ddrc";
  1052. reg = <0x3d400000 0x400000>;
  1053. clock-names = "core", "pll", "alt", "apb";
  1054. clocks = <&clk IMX8MN_CLK_DRAM_CORE>,
  1055. <&clk IMX8MN_DRAM_PLL>,
  1056. <&clk IMX8MN_CLK_DRAM_ALT>,
  1057. <&clk IMX8MN_CLK_DRAM_APB>;
  1058. };
  1059. ddr-pmu@3d800000 {
  1060. compatible = "fsl,imx8mn-ddr-pmu", "fsl,imx8m-ddr-pmu";
  1061. reg = <0x3d800000 0x400000>;
  1062. interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  1063. };
  1064. };
  1065. usbphynop1: usbphynop1 {
  1066. #phy-cells = <0>;
  1067. compatible = "usb-nop-xceiv";
  1068. clocks = <&clk IMX8MN_CLK_USB_PHY_REF>;
  1069. assigned-clocks = <&clk IMX8MN_CLK_USB_PHY_REF>;
  1070. assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>;
  1071. clock-names = "main_clk";
  1072. power-domains = <&pgc_otg1>;
  1073. };
  1074. };