imx8mm.dtsi 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Copyright 2019 NXP
  4. */
  5. #include <dt-bindings/clock/imx8mm-clock.h>
  6. #include <dt-bindings/gpio/gpio.h>
  7. #include <dt-bindings/input/input.h>
  8. #include <dt-bindings/interrupt-controller/arm-gic.h>
  9. #include <dt-bindings/power/imx8mm-power.h>
  10. #include <dt-bindings/reset/imx8mq-reset.h>
  11. #include <dt-bindings/thermal/thermal.h>
  12. #include "imx8mm-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>; /* two CLK32 periods */
  58. clocks = <&clk IMX8MM_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>; /* two CLK32 periods */
  78. clocks = <&clk IMX8MM_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>; /* two CLK32 periods */
  96. clocks = <&clk IMX8MM_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>; /* two CLK32 periods */
  114. clocks = <&clk IMX8MM_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 = <0xe>, <0x7>;
  142. clock-latency-ns = <150000>;
  143. opp-suspend;
  144. };
  145. opp-1600000000 {
  146. opp-hz = /bits/ 64 <1600000000>;
  147. opp-microvolt = <950000>;
  148. opp-supported-hw = <0xc>, <0x7>;
  149. clock-latency-ns = <150000>;
  150. opp-suspend;
  151. };
  152. opp-1800000000 {
  153. opp-hz = /bits/ 64 <1800000000>;
  154. opp-microvolt = <1000000>;
  155. opp-supported-hw = <0x8>, <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. psci {
  197. compatible = "arm,psci-1.0";
  198. method = "smc";
  199. };
  200. pmu {
  201. compatible = "arm,cortex-a53-pmu";
  202. interrupts = <GIC_PPI 7
  203. (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  204. };
  205. timer {
  206. compatible = "arm,armv8-timer";
  207. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Secure */
  208. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Non-Secure */
  209. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, /* Virtual */
  210. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; /* Hypervisor */
  211. clock-frequency = <8000000>;
  212. arm,no-tick-in-suspend;
  213. };
  214. thermal-zones {
  215. cpu-thermal {
  216. polling-delay-passive = <250>;
  217. polling-delay = <2000>;
  218. thermal-sensors = <&tmu>;
  219. trips {
  220. cpu_alert0: trip0 {
  221. temperature = <85000>;
  222. hysteresis = <2000>;
  223. type = "passive";
  224. };
  225. cpu_crit0: trip1 {
  226. temperature = <95000>;
  227. hysteresis = <2000>;
  228. type = "critical";
  229. };
  230. };
  231. cooling-maps {
  232. map0 {
  233. trip = <&cpu_alert0>;
  234. cooling-device =
  235. <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  236. <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  237. <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  238. <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  239. };
  240. };
  241. };
  242. };
  243. usbphynop1: usbphynop1 {
  244. #phy-cells = <0>;
  245. compatible = "usb-nop-xceiv";
  246. clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
  247. assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
  248. assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
  249. clock-names = "main_clk";
  250. power-domains = <&pgc_otg1>;
  251. };
  252. usbphynop2: usbphynop2 {
  253. #phy-cells = <0>;
  254. compatible = "usb-nop-xceiv";
  255. clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
  256. assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
  257. assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
  258. clock-names = "main_clk";
  259. power-domains = <&pgc_otg2>;
  260. };
  261. soc: soc@0 {
  262. compatible = "fsl,imx8mm-soc", "simple-bus";
  263. #address-cells = <1>;
  264. #size-cells = <1>;
  265. ranges = <0x0 0x0 0x0 0x3e000000>;
  266. dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
  267. nvmem-cells = <&imx8mm_uid>;
  268. nvmem-cell-names = "soc_unique_id";
  269. aips1: bus@30000000 {
  270. compatible = "fsl,aips-bus", "simple-bus";
  271. reg = <0x30000000 0x400000>;
  272. #address-cells = <1>;
  273. #size-cells = <1>;
  274. ranges = <0x30000000 0x30000000 0x400000>;
  275. spba2: spba-bus@30000000 {
  276. compatible = "fsl,spba-bus", "simple-bus";
  277. #address-cells = <1>;
  278. #size-cells = <1>;
  279. reg = <0x30000000 0x100000>;
  280. ranges;
  281. sai1: sai@30010000 {
  282. #sound-dai-cells = <0>;
  283. compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
  284. reg = <0x30010000 0x10000>;
  285. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  286. clocks = <&clk IMX8MM_CLK_SAI1_IPG>,
  287. <&clk IMX8MM_CLK_SAI1_ROOT>,
  288. <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
  289. clock-names = "bus", "mclk1", "mclk2", "mclk3";
  290. dmas = <&sdma2 0 2 0>, <&sdma2 1 2 0>;
  291. dma-names = "rx", "tx";
  292. status = "disabled";
  293. };
  294. sai2: sai@30020000 {
  295. #sound-dai-cells = <0>;
  296. compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
  297. reg = <0x30020000 0x10000>;
  298. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  299. clocks = <&clk IMX8MM_CLK_SAI2_IPG>,
  300. <&clk IMX8MM_CLK_SAI2_ROOT>,
  301. <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
  302. clock-names = "bus", "mclk1", "mclk2", "mclk3";
  303. dmas = <&sdma2 2 2 0>, <&sdma2 3 2 0>;
  304. dma-names = "rx", "tx";
  305. status = "disabled";
  306. };
  307. sai3: sai@30030000 {
  308. #sound-dai-cells = <0>;
  309. compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
  310. reg = <0x30030000 0x10000>;
  311. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  312. clocks = <&clk IMX8MM_CLK_SAI3_IPG>,
  313. <&clk IMX8MM_CLK_SAI3_ROOT>,
  314. <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
  315. clock-names = "bus", "mclk1", "mclk2", "mclk3";
  316. dmas = <&sdma2 4 2 0>, <&sdma2 5 2 0>;
  317. dma-names = "rx", "tx";
  318. status = "disabled";
  319. };
  320. sai5: sai@30050000 {
  321. #sound-dai-cells = <0>;
  322. compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
  323. reg = <0x30050000 0x10000>;
  324. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  325. clocks = <&clk IMX8MM_CLK_SAI5_IPG>,
  326. <&clk IMX8MM_CLK_SAI5_ROOT>,
  327. <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
  328. clock-names = "bus", "mclk1", "mclk2", "mclk3";
  329. dmas = <&sdma2 8 2 0>, <&sdma2 9 2 0>;
  330. dma-names = "rx", "tx";
  331. status = "disabled";
  332. };
  333. sai6: sai@30060000 {
  334. #sound-dai-cells = <0>;
  335. compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
  336. reg = <0x30060000 0x10000>;
  337. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  338. clocks = <&clk IMX8MM_CLK_SAI6_IPG>,
  339. <&clk IMX8MM_CLK_SAI6_ROOT>,
  340. <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
  341. clock-names = "bus", "mclk1", "mclk2", "mclk3";
  342. dmas = <&sdma2 10 2 0>, <&sdma2 11 2 0>;
  343. dma-names = "rx", "tx";
  344. status = "disabled";
  345. };
  346. micfil: audio-controller@30080000 {
  347. compatible = "fsl,imx8mm-micfil";
  348. reg = <0x30080000 0x10000>;
  349. interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
  350. <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
  351. <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
  352. <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  353. clocks = <&clk IMX8MM_CLK_PDM_IPG>,
  354. <&clk IMX8MM_CLK_PDM_ROOT>,
  355. <&clk IMX8MM_AUDIO_PLL1_OUT>,
  356. <&clk IMX8MM_AUDIO_PLL2_OUT>,
  357. <&clk IMX8MM_CLK_EXT3>;
  358. clock-names = "ipg_clk", "ipg_clk_app",
  359. "pll8k", "pll11k", "clkext3";
  360. dmas = <&sdma2 24 25 0x80000000>;
  361. dma-names = "rx";
  362. #sound-dai-cells = <0>;
  363. status = "disabled";
  364. };
  365. spdif1: spdif@30090000 {
  366. compatible = "fsl,imx35-spdif";
  367. reg = <0x30090000 0x10000>;
  368. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  369. clocks = <&clk IMX8MM_CLK_AUDIO_AHB>, /* core */
  370. <&clk IMX8MM_CLK_24M>, /* rxtx0 */
  371. <&clk IMX8MM_CLK_SPDIF1>, /* rxtx1 */
  372. <&clk IMX8MM_CLK_DUMMY>, /* rxtx2 */
  373. <&clk IMX8MM_CLK_DUMMY>, /* rxtx3 */
  374. <&clk IMX8MM_CLK_DUMMY>, /* rxtx4 */
  375. <&clk IMX8MM_CLK_AUDIO_AHB>, /* rxtx5 */
  376. <&clk IMX8MM_CLK_DUMMY>, /* rxtx6 */
  377. <&clk IMX8MM_CLK_DUMMY>, /* rxtx7 */
  378. <&clk IMX8MM_CLK_DUMMY>; /* spba */
  379. clock-names = "core", "rxtx0",
  380. "rxtx1", "rxtx2",
  381. "rxtx3", "rxtx4",
  382. "rxtx5", "rxtx6",
  383. "rxtx7", "spba";
  384. dmas = <&sdma2 28 18 0>, <&sdma2 29 18 0>;
  385. dma-names = "rx", "tx";
  386. status = "disabled";
  387. };
  388. };
  389. gpio1: gpio@30200000 {
  390. compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
  391. reg = <0x30200000 0x10000>;
  392. interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
  393. <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  394. clocks = <&clk IMX8MM_CLK_GPIO1_ROOT>;
  395. gpio-controller;
  396. #gpio-cells = <2>;
  397. interrupt-controller;
  398. #interrupt-cells = <2>;
  399. gpio-ranges = <&iomuxc 0 10 30>;
  400. };
  401. gpio2: gpio@30210000 {
  402. compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
  403. reg = <0x30210000 0x10000>;
  404. interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
  405. <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  406. clocks = <&clk IMX8MM_CLK_GPIO2_ROOT>;
  407. gpio-controller;
  408. #gpio-cells = <2>;
  409. interrupt-controller;
  410. #interrupt-cells = <2>;
  411. gpio-ranges = <&iomuxc 0 40 21>;
  412. };
  413. gpio3: gpio@30220000 {
  414. compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
  415. reg = <0x30220000 0x10000>;
  416. interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
  417. <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
  418. clocks = <&clk IMX8MM_CLK_GPIO3_ROOT>;
  419. gpio-controller;
  420. #gpio-cells = <2>;
  421. interrupt-controller;
  422. #interrupt-cells = <2>;
  423. gpio-ranges = <&iomuxc 0 61 26>;
  424. };
  425. gpio4: gpio@30230000 {
  426. compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
  427. reg = <0x30230000 0x10000>;
  428. interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
  429. <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  430. clocks = <&clk IMX8MM_CLK_GPIO4_ROOT>;
  431. gpio-controller;
  432. #gpio-cells = <2>;
  433. interrupt-controller;
  434. #interrupt-cells = <2>;
  435. gpio-ranges = <&iomuxc 0 87 32>;
  436. };
  437. gpio5: gpio@30240000 {
  438. compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
  439. reg = <0x30240000 0x10000>;
  440. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
  441. <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  442. clocks = <&clk IMX8MM_CLK_GPIO5_ROOT>;
  443. gpio-controller;
  444. #gpio-cells = <2>;
  445. interrupt-controller;
  446. #interrupt-cells = <2>;
  447. gpio-ranges = <&iomuxc 0 119 30>;
  448. };
  449. tmu: tmu@30260000 {
  450. compatible = "fsl,imx8mm-tmu";
  451. reg = <0x30260000 0x10000>;
  452. clocks = <&clk IMX8MM_CLK_TMU_ROOT>;
  453. #thermal-sensor-cells = <0>;
  454. };
  455. wdog1: watchdog@30280000 {
  456. compatible = "fsl,imx8mm-wdt", "fsl,imx21-wdt";
  457. reg = <0x30280000 0x10000>;
  458. interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
  459. clocks = <&clk IMX8MM_CLK_WDOG1_ROOT>;
  460. status = "disabled";
  461. };
  462. wdog2: watchdog@30290000 {
  463. compatible = "fsl,imx8mm-wdt", "fsl,imx21-wdt";
  464. reg = <0x30290000 0x10000>;
  465. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
  466. clocks = <&clk IMX8MM_CLK_WDOG2_ROOT>;
  467. status = "disabled";
  468. };
  469. wdog3: watchdog@302a0000 {
  470. compatible = "fsl,imx8mm-wdt", "fsl,imx21-wdt";
  471. reg = <0x302a0000 0x10000>;
  472. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  473. clocks = <&clk IMX8MM_CLK_WDOG3_ROOT>;
  474. status = "disabled";
  475. };
  476. sdma2: dma-controller@302c0000 {
  477. compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
  478. reg = <0x302c0000 0x10000>;
  479. interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
  480. clocks = <&clk IMX8MM_CLK_SDMA2_ROOT>,
  481. <&clk IMX8MM_CLK_SDMA2_ROOT>;
  482. clock-names = "ipg", "ahb";
  483. #dma-cells = <3>;
  484. fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
  485. };
  486. sdma3: dma-controller@302b0000 {
  487. compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
  488. reg = <0x302b0000 0x10000>;
  489. interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
  490. clocks = <&clk IMX8MM_CLK_SDMA3_ROOT>,
  491. <&clk IMX8MM_CLK_SDMA3_ROOT>;
  492. clock-names = "ipg", "ahb";
  493. #dma-cells = <3>;
  494. fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
  495. };
  496. iomuxc: pinctrl@30330000 {
  497. compatible = "fsl,imx8mm-iomuxc";
  498. reg = <0x30330000 0x10000>;
  499. };
  500. gpr: iomuxc-gpr@30340000 {
  501. compatible = "fsl,imx8mm-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr", "syscon";
  502. reg = <0x30340000 0x10000>;
  503. };
  504. ocotp: efuse@30350000 {
  505. compatible = "fsl,imx8mm-ocotp", "syscon";
  506. reg = <0x30350000 0x10000>;
  507. clocks = <&clk IMX8MM_CLK_OCOTP_ROOT>;
  508. /* For nvmem subnodes */
  509. #address-cells = <1>;
  510. #size-cells = <1>;
  511. imx8mm_uid: unique-id@4 {
  512. reg = <0x4 0x8>;
  513. };
  514. cpu_speed_grade: speed-grade@10 {
  515. reg = <0x10 4>;
  516. };
  517. fec_mac_address: mac-address@90 {
  518. reg = <0x90 6>;
  519. };
  520. };
  521. anatop: anatop@30360000 {
  522. compatible = "fsl,imx8mm-anatop", "syscon";
  523. reg = <0x30360000 0x10000>;
  524. };
  525. snvs: snvs@30370000 {
  526. compatible = "fsl,sec-v4.0-mon","syscon", "simple-mfd";
  527. reg = <0x30370000 0x10000>;
  528. snvs_rtc: snvs-rtc-lp {
  529. compatible = "fsl,sec-v4.0-mon-rtc-lp";
  530. regmap = <&snvs>;
  531. offset = <0x34>;
  532. interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
  533. <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
  534. clocks = <&clk IMX8MM_CLK_SNVS_ROOT>;
  535. clock-names = "snvs-rtc";
  536. };
  537. snvs_pwrkey: snvs-powerkey {
  538. compatible = "fsl,sec-v4.0-pwrkey";
  539. regmap = <&snvs>;
  540. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  541. clocks = <&clk IMX8MM_CLK_SNVS_ROOT>;
  542. clock-names = "snvs-pwrkey";
  543. linux,keycode = <KEY_POWER>;
  544. wakeup-source;
  545. status = "disabled";
  546. };
  547. snvs_lpgpr: snvs-lpgpr {
  548. compatible = "fsl,imx8mm-snvs-lpgpr",
  549. "fsl,imx7d-snvs-lpgpr";
  550. };
  551. };
  552. clk: clock-controller@30380000 {
  553. compatible = "fsl,imx8mm-ccm";
  554. reg = <0x30380000 0x10000>;
  555. #clock-cells = <1>;
  556. clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
  557. <&clk_ext3>, <&clk_ext4>;
  558. clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
  559. "clk_ext3", "clk_ext4";
  560. assigned-clocks = <&clk IMX8MM_CLK_A53_SRC>,
  561. <&clk IMX8MM_CLK_A53_CORE>,
  562. <&clk IMX8MM_CLK_NOC>,
  563. <&clk IMX8MM_CLK_AUDIO_AHB>,
  564. <&clk IMX8MM_CLK_IPG_AUDIO_ROOT>,
  565. <&clk IMX8MM_SYS_PLL3>,
  566. <&clk IMX8MM_VIDEO_PLL1>,
  567. <&clk IMX8MM_AUDIO_PLL1>;
  568. assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_800M>,
  569. <&clk IMX8MM_ARM_PLL_OUT>,
  570. <&clk IMX8MM_SYS_PLL3_OUT>,
  571. <&clk IMX8MM_SYS_PLL1_800M>;
  572. assigned-clock-rates = <0>, <0>, <0>,
  573. <400000000>,
  574. <400000000>,
  575. <750000000>,
  576. <594000000>,
  577. <393216000>;
  578. };
  579. src: reset-controller@30390000 {
  580. compatible = "fsl,imx8mm-src", "fsl,imx8mq-src", "syscon";
  581. reg = <0x30390000 0x10000>;
  582. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  583. #reset-cells = <1>;
  584. };
  585. gpc: gpc@303a0000 {
  586. compatible = "fsl,imx8mm-gpc";
  587. reg = <0x303a0000 0x10000>;
  588. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  589. interrupt-parent = <&gic>;
  590. interrupt-controller;
  591. #interrupt-cells = <3>;
  592. pgc {
  593. #address-cells = <1>;
  594. #size-cells = <0>;
  595. pgc_hsiomix: power-domain@0 {
  596. #power-domain-cells = <0>;
  597. reg = <IMX8MM_POWER_DOMAIN_HSIOMIX>;
  598. clocks = <&clk IMX8MM_CLK_USB_BUS>;
  599. assigned-clocks = <&clk IMX8MM_CLK_USB_BUS>;
  600. assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
  601. };
  602. pgc_pcie: power-domain@1 {
  603. #power-domain-cells = <0>;
  604. reg = <IMX8MM_POWER_DOMAIN_PCIE>;
  605. power-domains = <&pgc_hsiomix>;
  606. clocks = <&clk IMX8MM_CLK_PCIE1_ROOT>;
  607. };
  608. pgc_otg1: power-domain@2 {
  609. #power-domain-cells = <0>;
  610. reg = <IMX8MM_POWER_DOMAIN_OTG1>;
  611. };
  612. pgc_otg2: power-domain@3 {
  613. #power-domain-cells = <0>;
  614. reg = <IMX8MM_POWER_DOMAIN_OTG2>;
  615. };
  616. pgc_gpumix: power-domain@4 {
  617. #power-domain-cells = <0>;
  618. reg = <IMX8MM_POWER_DOMAIN_GPUMIX>;
  619. clocks = <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
  620. <&clk IMX8MM_CLK_GPU_AHB>;
  621. assigned-clocks = <&clk IMX8MM_CLK_GPU_AXI>,
  622. <&clk IMX8MM_CLK_GPU_AHB>;
  623. assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_800M>,
  624. <&clk IMX8MM_SYS_PLL1_800M>;
  625. assigned-clock-rates = <800000000>, <400000000>;
  626. };
  627. pgc_gpu: power-domain@5 {
  628. #power-domain-cells = <0>;
  629. reg = <IMX8MM_POWER_DOMAIN_GPU>;
  630. clocks = <&clk IMX8MM_CLK_GPU_AHB>,
  631. <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
  632. <&clk IMX8MM_CLK_GPU2D_ROOT>,
  633. <&clk IMX8MM_CLK_GPU3D_ROOT>;
  634. resets = <&src IMX8MQ_RESET_GPU_RESET>;
  635. power-domains = <&pgc_gpumix>;
  636. };
  637. pgc_vpumix: power-domain@6 {
  638. #power-domain-cells = <0>;
  639. reg = <IMX8MM_POWER_DOMAIN_VPUMIX>;
  640. clocks = <&clk IMX8MM_CLK_VPU_DEC_ROOT>;
  641. assigned-clocks = <&clk IMX8MM_CLK_VPU_BUS>;
  642. assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_800M>;
  643. };
  644. pgc_vpu_g1: power-domain@7 {
  645. #power-domain-cells = <0>;
  646. reg = <IMX8MM_POWER_DOMAIN_VPUG1>;
  647. };
  648. pgc_vpu_g2: power-domain@8 {
  649. #power-domain-cells = <0>;
  650. reg = <IMX8MM_POWER_DOMAIN_VPUG2>;
  651. };
  652. pgc_vpu_h1: power-domain@9 {
  653. #power-domain-cells = <0>;
  654. reg = <IMX8MM_POWER_DOMAIN_VPUH1>;
  655. };
  656. pgc_dispmix: power-domain@10 {
  657. #power-domain-cells = <0>;
  658. reg = <IMX8MM_POWER_DOMAIN_DISPMIX>;
  659. clocks = <&clk IMX8MM_CLK_DISP_APB_ROOT>,
  660. <&clk IMX8MM_CLK_DISP_AXI_ROOT>;
  661. assigned-clocks = <&clk IMX8MM_CLK_DISP_AXI>,
  662. <&clk IMX8MM_CLK_DISP_APB>;
  663. assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_1000M>,
  664. <&clk IMX8MM_SYS_PLL1_800M>;
  665. assigned-clock-rates = <500000000>, <200000000>;
  666. };
  667. pgc_mipi: power-domain@11 {
  668. #power-domain-cells = <0>;
  669. reg = <IMX8MM_POWER_DOMAIN_MIPI>;
  670. };
  671. };
  672. };
  673. };
  674. aips2: bus@30400000 {
  675. compatible = "fsl,aips-bus", "simple-bus";
  676. reg = <0x30400000 0x400000>;
  677. #address-cells = <1>;
  678. #size-cells = <1>;
  679. ranges = <0x30400000 0x30400000 0x400000>;
  680. pwm1: pwm@30660000 {
  681. compatible = "fsl,imx8mm-pwm", "fsl,imx27-pwm";
  682. reg = <0x30660000 0x10000>;
  683. interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
  684. clocks = <&clk IMX8MM_CLK_PWM1_ROOT>,
  685. <&clk IMX8MM_CLK_PWM1_ROOT>;
  686. clock-names = "ipg", "per";
  687. #pwm-cells = <3>;
  688. status = "disabled";
  689. };
  690. pwm2: pwm@30670000 {
  691. compatible = "fsl,imx8mm-pwm", "fsl,imx27-pwm";
  692. reg = <0x30670000 0x10000>;
  693. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  694. clocks = <&clk IMX8MM_CLK_PWM2_ROOT>,
  695. <&clk IMX8MM_CLK_PWM2_ROOT>;
  696. clock-names = "ipg", "per";
  697. #pwm-cells = <3>;
  698. status = "disabled";
  699. };
  700. pwm3: pwm@30680000 {
  701. compatible = "fsl,imx8mm-pwm", "fsl,imx27-pwm";
  702. reg = <0x30680000 0x10000>;
  703. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  704. clocks = <&clk IMX8MM_CLK_PWM3_ROOT>,
  705. <&clk IMX8MM_CLK_PWM3_ROOT>;
  706. clock-names = "ipg", "per";
  707. #pwm-cells = <3>;
  708. status = "disabled";
  709. };
  710. pwm4: pwm@30690000 {
  711. compatible = "fsl,imx8mm-pwm", "fsl,imx27-pwm";
  712. reg = <0x30690000 0x10000>;
  713. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  714. clocks = <&clk IMX8MM_CLK_PWM4_ROOT>,
  715. <&clk IMX8MM_CLK_PWM4_ROOT>;
  716. clock-names = "ipg", "per";
  717. #pwm-cells = <3>;
  718. status = "disabled";
  719. };
  720. system_counter: timer@306a0000 {
  721. compatible = "nxp,sysctr-timer";
  722. reg = <0x306a0000 0x20000>;
  723. interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  724. clocks = <&osc_24m>;
  725. clock-names = "per";
  726. };
  727. };
  728. aips3: bus@30800000 {
  729. compatible = "fsl,aips-bus", "simple-bus";
  730. reg = <0x30800000 0x400000>;
  731. #address-cells = <1>;
  732. #size-cells = <1>;
  733. ranges = <0x30800000 0x30800000 0x400000>,
  734. <0x8000000 0x8000000 0x10000000>;
  735. spba1: spba-bus@30800000 {
  736. compatible = "fsl,spba-bus", "simple-bus";
  737. #address-cells = <1>;
  738. #size-cells = <1>;
  739. reg = <0x30800000 0x100000>;
  740. ranges;
  741. ecspi1: spi@30820000 {
  742. compatible = "fsl,imx8mm-ecspi", "fsl,imx51-ecspi";
  743. #address-cells = <1>;
  744. #size-cells = <0>;
  745. reg = <0x30820000 0x10000>;
  746. interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
  747. clocks = <&clk IMX8MM_CLK_ECSPI1_ROOT>,
  748. <&clk IMX8MM_CLK_ECSPI1_ROOT>;
  749. clock-names = "ipg", "per";
  750. dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
  751. dma-names = "rx", "tx";
  752. status = "disabled";
  753. };
  754. ecspi2: spi@30830000 {
  755. compatible = "fsl,imx8mm-ecspi", "fsl,imx51-ecspi";
  756. #address-cells = <1>;
  757. #size-cells = <0>;
  758. reg = <0x30830000 0x10000>;
  759. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  760. clocks = <&clk IMX8MM_CLK_ECSPI2_ROOT>,
  761. <&clk IMX8MM_CLK_ECSPI2_ROOT>;
  762. clock-names = "ipg", "per";
  763. dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
  764. dma-names = "rx", "tx";
  765. status = "disabled";
  766. };
  767. ecspi3: spi@30840000 {
  768. compatible = "fsl,imx8mm-ecspi", "fsl,imx51-ecspi";
  769. #address-cells = <1>;
  770. #size-cells = <0>;
  771. reg = <0x30840000 0x10000>;
  772. interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
  773. clocks = <&clk IMX8MM_CLK_ECSPI3_ROOT>,
  774. <&clk IMX8MM_CLK_ECSPI3_ROOT>;
  775. clock-names = "ipg", "per";
  776. dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
  777. dma-names = "rx", "tx";
  778. status = "disabled";
  779. };
  780. uart1: serial@30860000 {
  781. compatible = "fsl,imx8mm-uart", "fsl,imx6q-uart";
  782. reg = <0x30860000 0x10000>;
  783. interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
  784. clocks = <&clk IMX8MM_CLK_UART1_ROOT>,
  785. <&clk IMX8MM_CLK_UART1_ROOT>;
  786. clock-names = "ipg", "per";
  787. dmas = <&sdma1 22 4 0>, <&sdma1 23 4 0>;
  788. dma-names = "rx", "tx";
  789. status = "disabled";
  790. };
  791. uart3: serial@30880000 {
  792. compatible = "fsl,imx8mm-uart", "fsl,imx6q-uart";
  793. reg = <0x30880000 0x10000>;
  794. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  795. clocks = <&clk IMX8MM_CLK_UART3_ROOT>,
  796. <&clk IMX8MM_CLK_UART3_ROOT>;
  797. clock-names = "ipg", "per";
  798. dmas = <&sdma1 26 4 0>, <&sdma1 27 4 0>;
  799. dma-names = "rx", "tx";
  800. status = "disabled";
  801. };
  802. uart2: serial@30890000 {
  803. compatible = "fsl,imx8mm-uart", "fsl,imx6q-uart";
  804. reg = <0x30890000 0x10000>;
  805. interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
  806. clocks = <&clk IMX8MM_CLK_UART2_ROOT>,
  807. <&clk IMX8MM_CLK_UART2_ROOT>;
  808. clock-names = "ipg", "per";
  809. status = "disabled";
  810. };
  811. };
  812. crypto: crypto@30900000 {
  813. compatible = "fsl,sec-v4.0";
  814. #address-cells = <1>;
  815. #size-cells = <1>;
  816. reg = <0x30900000 0x40000>;
  817. ranges = <0 0x30900000 0x40000>;
  818. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  819. clocks = <&clk IMX8MM_CLK_AHB>,
  820. <&clk IMX8MM_CLK_IPG_ROOT>;
  821. clock-names = "aclk", "ipg";
  822. sec_jr0: jr@1000 {
  823. compatible = "fsl,sec-v4.0-job-ring";
  824. reg = <0x1000 0x1000>;
  825. interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
  826. status = "disabled";
  827. };
  828. sec_jr1: jr@2000 {
  829. compatible = "fsl,sec-v4.0-job-ring";
  830. reg = <0x2000 0x1000>;
  831. interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
  832. };
  833. sec_jr2: jr@3000 {
  834. compatible = "fsl,sec-v4.0-job-ring";
  835. reg = <0x3000 0x1000>;
  836. interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
  837. };
  838. };
  839. i2c1: i2c@30a20000 {
  840. compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
  841. #address-cells = <1>;
  842. #size-cells = <0>;
  843. reg = <0x30a20000 0x10000>;
  844. interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
  845. clocks = <&clk IMX8MM_CLK_I2C1_ROOT>;
  846. status = "disabled";
  847. };
  848. i2c2: i2c@30a30000 {
  849. compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
  850. #address-cells = <1>;
  851. #size-cells = <0>;
  852. reg = <0x30a30000 0x10000>;
  853. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
  854. clocks = <&clk IMX8MM_CLK_I2C2_ROOT>;
  855. status = "disabled";
  856. };
  857. i2c3: i2c@30a40000 {
  858. #address-cells = <1>;
  859. #size-cells = <0>;
  860. compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
  861. reg = <0x30a40000 0x10000>;
  862. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  863. clocks = <&clk IMX8MM_CLK_I2C3_ROOT>;
  864. status = "disabled";
  865. };
  866. i2c4: i2c@30a50000 {
  867. compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
  868. #address-cells = <1>;
  869. #size-cells = <0>;
  870. reg = <0x30a50000 0x10000>;
  871. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  872. clocks = <&clk IMX8MM_CLK_I2C4_ROOT>;
  873. status = "disabled";
  874. };
  875. uart4: serial@30a60000 {
  876. compatible = "fsl,imx8mm-uart", "fsl,imx6q-uart";
  877. reg = <0x30a60000 0x10000>;
  878. interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
  879. clocks = <&clk IMX8MM_CLK_UART4_ROOT>,
  880. <&clk IMX8MM_CLK_UART4_ROOT>;
  881. clock-names = "ipg", "per";
  882. dmas = <&sdma1 28 4 0>, <&sdma1 29 4 0>;
  883. dma-names = "rx", "tx";
  884. status = "disabled";
  885. };
  886. mu: mailbox@30aa0000 {
  887. compatible = "fsl,imx8mm-mu", "fsl,imx6sx-mu";
  888. reg = <0x30aa0000 0x10000>;
  889. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  890. clocks = <&clk IMX8MM_CLK_MU_ROOT>;
  891. #mbox-cells = <2>;
  892. };
  893. usdhc1: mmc@30b40000 {
  894. compatible = "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc";
  895. reg = <0x30b40000 0x10000>;
  896. interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
  897. clocks = <&clk IMX8MM_CLK_IPG_ROOT>,
  898. <&clk IMX8MM_CLK_NAND_USDHC_BUS>,
  899. <&clk IMX8MM_CLK_USDHC1_ROOT>;
  900. clock-names = "ipg", "ahb", "per";
  901. fsl,tuning-start-tap = <20>;
  902. fsl,tuning-step = <2>;
  903. bus-width = <4>;
  904. status = "disabled";
  905. };
  906. usdhc2: mmc@30b50000 {
  907. compatible = "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc";
  908. reg = <0x30b50000 0x10000>;
  909. interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  910. clocks = <&clk IMX8MM_CLK_IPG_ROOT>,
  911. <&clk IMX8MM_CLK_NAND_USDHC_BUS>,
  912. <&clk IMX8MM_CLK_USDHC2_ROOT>;
  913. clock-names = "ipg", "ahb", "per";
  914. fsl,tuning-start-tap = <20>;
  915. fsl,tuning-step = <2>;
  916. bus-width = <4>;
  917. status = "disabled";
  918. };
  919. usdhc3: mmc@30b60000 {
  920. compatible = "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc";
  921. reg = <0x30b60000 0x10000>;
  922. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  923. clocks = <&clk IMX8MM_CLK_IPG_ROOT>,
  924. <&clk IMX8MM_CLK_NAND_USDHC_BUS>,
  925. <&clk IMX8MM_CLK_USDHC3_ROOT>;
  926. clock-names = "ipg", "ahb", "per";
  927. fsl,tuning-start-tap = <20>;
  928. fsl,tuning-step = <2>;
  929. bus-width = <4>;
  930. status = "disabled";
  931. };
  932. flexspi: spi@30bb0000 {
  933. #address-cells = <1>;
  934. #size-cells = <0>;
  935. compatible = "nxp,imx8mm-fspi";
  936. reg = <0x30bb0000 0x10000>, <0x8000000 0x10000000>;
  937. reg-names = "fspi_base", "fspi_mmap";
  938. interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
  939. clocks = <&clk IMX8MM_CLK_QSPI_ROOT>,
  940. <&clk IMX8MM_CLK_QSPI_ROOT>;
  941. clock-names = "fspi_en", "fspi";
  942. status = "disabled";
  943. };
  944. sdma1: dma-controller@30bd0000 {
  945. compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
  946. reg = <0x30bd0000 0x10000>;
  947. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  948. clocks = <&clk IMX8MM_CLK_SDMA1_ROOT>,
  949. <&clk IMX8MM_CLK_AHB>;
  950. clock-names = "ipg", "ahb";
  951. #dma-cells = <3>;
  952. fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
  953. };
  954. fec1: ethernet@30be0000 {
  955. compatible = "fsl,imx8mm-fec", "fsl,imx8mq-fec", "fsl,imx6sx-fec";
  956. reg = <0x30be0000 0x10000>;
  957. interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
  958. <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
  959. <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
  960. <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
  961. clocks = <&clk IMX8MM_CLK_ENET1_ROOT>,
  962. <&clk IMX8MM_CLK_ENET1_ROOT>,
  963. <&clk IMX8MM_CLK_ENET_TIMER>,
  964. <&clk IMX8MM_CLK_ENET_REF>,
  965. <&clk IMX8MM_CLK_ENET_PHY_REF>;
  966. clock-names = "ipg", "ahb", "ptp",
  967. "enet_clk_ref", "enet_out";
  968. assigned-clocks = <&clk IMX8MM_CLK_ENET_AXI>,
  969. <&clk IMX8MM_CLK_ENET_TIMER>,
  970. <&clk IMX8MM_CLK_ENET_REF>,
  971. <&clk IMX8MM_CLK_ENET_PHY_REF>;
  972. assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_266M>,
  973. <&clk IMX8MM_SYS_PLL2_100M>,
  974. <&clk IMX8MM_SYS_PLL2_125M>,
  975. <&clk IMX8MM_SYS_PLL2_50M>;
  976. assigned-clock-rates = <0>, <100000000>, <125000000>, <0>;
  977. fsl,num-tx-queues = <3>;
  978. fsl,num-rx-queues = <3>;
  979. nvmem-cells = <&fec_mac_address>;
  980. nvmem-cell-names = "mac-address";
  981. fsl,stop-mode = <&gpr 0x10 3>;
  982. status = "disabled";
  983. };
  984. };
  985. aips4: bus@32c00000 {
  986. compatible = "fsl,aips-bus", "simple-bus";
  987. reg = <0x32c00000 0x400000>;
  988. #address-cells = <1>;
  989. #size-cells = <1>;
  990. ranges = <0x32c00000 0x32c00000 0x400000>;
  991. csi: csi@32e20000 {
  992. compatible = "fsl,imx8mm-csi", "fsl,imx7-csi";
  993. reg = <0x32e20000 0x1000>;
  994. interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
  995. clocks = <&clk IMX8MM_CLK_CSI1_ROOT>;
  996. clock-names = "mclk";
  997. power-domains = <&disp_blk_ctrl IMX8MM_DISPBLK_PD_CSI_BRIDGE>;
  998. status = "disabled";
  999. port {
  1000. csi_in: endpoint {
  1001. remote-endpoint = <&imx8mm_mipi_csi_out>;
  1002. };
  1003. };
  1004. };
  1005. disp_blk_ctrl: blk-ctrl@32e28000 {
  1006. compatible = "fsl,imx8mm-disp-blk-ctrl", "syscon";
  1007. reg = <0x32e28000 0x100>;
  1008. power-domains = <&pgc_dispmix>, <&pgc_dispmix>,
  1009. <&pgc_dispmix>, <&pgc_mipi>,
  1010. <&pgc_mipi>;
  1011. power-domain-names = "bus", "csi-bridge",
  1012. "lcdif", "mipi-dsi",
  1013. "mipi-csi";
  1014. clocks = <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
  1015. <&clk IMX8MM_CLK_DISP_APB_ROOT>,
  1016. <&clk IMX8MM_CLK_CSI1_ROOT>,
  1017. <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
  1018. <&clk IMX8MM_CLK_DISP_APB_ROOT>,
  1019. <&clk IMX8MM_CLK_DISP_ROOT>,
  1020. <&clk IMX8MM_CLK_DSI_CORE>,
  1021. <&clk IMX8MM_CLK_DSI_PHY_REF>,
  1022. <&clk IMX8MM_CLK_CSI1_CORE>,
  1023. <&clk IMX8MM_CLK_CSI1_PHY_REF>;
  1024. clock-names = "csi-bridge-axi","csi-bridge-apb",
  1025. "csi-bridge-core", "lcdif-axi",
  1026. "lcdif-apb", "lcdif-pix",
  1027. "dsi-pclk", "dsi-ref",
  1028. "csi-aclk", "csi-pclk";
  1029. #power-domain-cells = <1>;
  1030. };
  1031. mipi_csi: mipi-csi@32e30000 {
  1032. compatible = "fsl,imx8mm-mipi-csi2";
  1033. reg = <0x32e30000 0x1000>;
  1034. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  1035. assigned-clocks = <&clk IMX8MM_CLK_CSI1_CORE>;
  1036. assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_1000M>;
  1037. clock-frequency = <333000000>;
  1038. clocks = <&clk IMX8MM_CLK_DISP_APB_ROOT>,
  1039. <&clk IMX8MM_CLK_CSI1_ROOT>,
  1040. <&clk IMX8MM_CLK_CSI1_PHY_REF>,
  1041. <&clk IMX8MM_CLK_DISP_AXI_ROOT>;
  1042. clock-names = "pclk", "wrap", "phy", "axi";
  1043. power-domains = <&disp_blk_ctrl IMX8MM_DISPBLK_PD_MIPI_CSI>;
  1044. status = "disabled";
  1045. ports {
  1046. #address-cells = <1>;
  1047. #size-cells = <0>;
  1048. port@0 {
  1049. reg = <0>;
  1050. };
  1051. port@1 {
  1052. reg = <1>;
  1053. imx8mm_mipi_csi_out: endpoint {
  1054. remote-endpoint = <&csi_in>;
  1055. };
  1056. };
  1057. };
  1058. };
  1059. usbotg1: usb@32e40000 {
  1060. compatible = "fsl,imx8mm-usb", "fsl,imx7d-usb";
  1061. reg = <0x32e40000 0x200>;
  1062. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  1063. clocks = <&clk IMX8MM_CLK_USB1_CTRL_ROOT>;
  1064. clock-names = "usb1_ctrl_root_clk";
  1065. assigned-clocks = <&clk IMX8MM_CLK_USB_BUS>;
  1066. assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
  1067. phys = <&usbphynop1>;
  1068. fsl,usbmisc = <&usbmisc1 0>;
  1069. power-domains = <&pgc_hsiomix>;
  1070. status = "disabled";
  1071. };
  1072. usbmisc1: usbmisc@32e40200 {
  1073. compatible = "fsl,imx8mm-usbmisc", "fsl,imx7d-usbmisc";
  1074. #index-cells = <1>;
  1075. reg = <0x32e40200 0x200>;
  1076. };
  1077. usbotg2: usb@32e50000 {
  1078. compatible = "fsl,imx8mm-usb", "fsl,imx7d-usb";
  1079. reg = <0x32e50000 0x200>;
  1080. interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  1081. clocks = <&clk IMX8MM_CLK_USB1_CTRL_ROOT>;
  1082. clock-names = "usb1_ctrl_root_clk";
  1083. assigned-clocks = <&clk IMX8MM_CLK_USB_BUS>;
  1084. assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
  1085. phys = <&usbphynop2>;
  1086. fsl,usbmisc = <&usbmisc2 0>;
  1087. power-domains = <&pgc_hsiomix>;
  1088. status = "disabled";
  1089. };
  1090. usbmisc2: usbmisc@32e50200 {
  1091. compatible = "fsl,imx8mm-usbmisc", "fsl,imx7d-usbmisc";
  1092. #index-cells = <1>;
  1093. reg = <0x32e50200 0x200>;
  1094. };
  1095. pcie_phy: pcie-phy@32f00000 {
  1096. compatible = "fsl,imx8mm-pcie-phy";
  1097. reg = <0x32f00000 0x10000>;
  1098. clocks = <&clk IMX8MM_CLK_PCIE1_PHY>;
  1099. clock-names = "ref";
  1100. assigned-clocks = <&clk IMX8MM_CLK_PCIE1_PHY>;
  1101. assigned-clock-rates = <100000000>;
  1102. assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_100M>;
  1103. resets = <&src IMX8MQ_RESET_PCIEPHY>;
  1104. reset-names = "pciephy";
  1105. #phy-cells = <0>;
  1106. status = "disabled";
  1107. };
  1108. };
  1109. dma_apbh: dma-controller@33000000 {
  1110. compatible = "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh";
  1111. reg = <0x33000000 0x2000>;
  1112. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  1113. <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  1114. <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  1115. <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  1116. interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
  1117. #dma-cells = <1>;
  1118. dma-channels = <4>;
  1119. clocks = <&clk IMX8MM_CLK_NAND_USDHC_BUS_RAWNAND_CLK>;
  1120. };
  1121. gpmi: nand-controller@33002000 {
  1122. compatible = "fsl,imx8mm-gpmi-nand", "fsl,imx7d-gpmi-nand";
  1123. #address-cells = <1>;
  1124. #size-cells = <0>;
  1125. reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
  1126. reg-names = "gpmi-nand", "bch";
  1127. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  1128. interrupt-names = "bch";
  1129. clocks = <&clk IMX8MM_CLK_NAND_ROOT>,
  1130. <&clk IMX8MM_CLK_NAND_USDHC_BUS_RAWNAND_CLK>;
  1131. clock-names = "gpmi_io", "gpmi_bch_apb";
  1132. dmas = <&dma_apbh 0>;
  1133. dma-names = "rx-tx";
  1134. status = "disabled";
  1135. };
  1136. pcie0: pcie@33800000 {
  1137. compatible = "fsl,imx8mm-pcie";
  1138. reg = <0x33800000 0x400000>, <0x1ff00000 0x80000>;
  1139. reg-names = "dbi", "config";
  1140. #address-cells = <3>;
  1141. #size-cells = <2>;
  1142. device_type = "pci";
  1143. bus-range = <0x00 0xff>;
  1144. ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
  1145. 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
  1146. num-lanes = <1>;
  1147. num-viewport = <4>;
  1148. interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
  1149. interrupt-names = "msi";
  1150. #interrupt-cells = <1>;
  1151. interrupt-map-mask = <0 0 0 0x7>;
  1152. interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
  1153. <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
  1154. <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
  1155. <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
  1156. fsl,max-link-speed = <2>;
  1157. linux,pci-domain = <0>;
  1158. power-domains = <&pgc_pcie>;
  1159. resets = <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
  1160. <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
  1161. reset-names = "apps", "turnoff";
  1162. phys = <&pcie_phy>;
  1163. phy-names = "pcie-phy";
  1164. status = "disabled";
  1165. };
  1166. gpu_3d: gpu@38000000 {
  1167. compatible = "vivante,gc";
  1168. reg = <0x38000000 0x8000>;
  1169. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  1170. clocks = <&clk IMX8MM_CLK_GPU_AHB>,
  1171. <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
  1172. <&clk IMX8MM_CLK_GPU3D_ROOT>,
  1173. <&clk IMX8MM_CLK_GPU3D_ROOT>;
  1174. clock-names = "reg", "bus", "core", "shader";
  1175. assigned-clocks = <&clk IMX8MM_CLK_GPU3D_CORE>,
  1176. <&clk IMX8MM_GPU_PLL_OUT>;
  1177. assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
  1178. assigned-clock-rates = <0>, <1000000000>;
  1179. power-domains = <&pgc_gpu>;
  1180. };
  1181. gpu_2d: gpu@38008000 {
  1182. compatible = "vivante,gc";
  1183. reg = <0x38008000 0x8000>;
  1184. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  1185. clocks = <&clk IMX8MM_CLK_GPU_AHB>,
  1186. <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
  1187. <&clk IMX8MM_CLK_GPU2D_ROOT>;
  1188. clock-names = "reg", "bus", "core";
  1189. assigned-clocks = <&clk IMX8MM_CLK_GPU2D_CORE>,
  1190. <&clk IMX8MM_GPU_PLL_OUT>;
  1191. assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
  1192. assigned-clock-rates = <0>, <1000000000>;
  1193. power-domains = <&pgc_gpu>;
  1194. };
  1195. vpu_g1: video-codec@38300000 {
  1196. compatible = "nxp,imx8mm-vpu-g1";
  1197. reg = <0x38300000 0x10000>;
  1198. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  1199. clocks = <&clk IMX8MM_CLK_VPU_G1_ROOT>;
  1200. power-domains = <&vpu_blk_ctrl IMX8MM_VPUBLK_PD_G1>;
  1201. };
  1202. vpu_g2: video-codec@38310000 {
  1203. compatible = "nxp,imx8mq-vpu-g2";
  1204. reg = <0x38310000 0x10000>;
  1205. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  1206. clocks = <&clk IMX8MM_CLK_VPU_G2_ROOT>;
  1207. power-domains = <&vpu_blk_ctrl IMX8MM_VPUBLK_PD_G2>;
  1208. };
  1209. vpu_blk_ctrl: blk-ctrl@38330000 {
  1210. compatible = "fsl,imx8mm-vpu-blk-ctrl", "syscon";
  1211. reg = <0x38330000 0x100>;
  1212. power-domains = <&pgc_vpumix>, <&pgc_vpu_g1>,
  1213. <&pgc_vpu_g2>, <&pgc_vpu_h1>;
  1214. power-domain-names = "bus", "g1", "g2", "h1";
  1215. clocks = <&clk IMX8MM_CLK_VPU_G1_ROOT>,
  1216. <&clk IMX8MM_CLK_VPU_G2_ROOT>,
  1217. <&clk IMX8MM_CLK_VPU_H1_ROOT>;
  1218. clock-names = "g1", "g2", "h1";
  1219. assigned-clocks = <&clk IMX8MM_CLK_VPU_G1>,
  1220. <&clk IMX8MM_CLK_VPU_G2>;
  1221. assigned-clock-parents = <&clk IMX8MM_VPU_PLL_OUT>,
  1222. <&clk IMX8MM_VPU_PLL_OUT>;
  1223. assigned-clock-rates = <600000000>,
  1224. <600000000>;
  1225. #power-domain-cells = <1>;
  1226. };
  1227. gic: interrupt-controller@38800000 {
  1228. compatible = "arm,gic-v3";
  1229. reg = <0x38800000 0x10000>, /* GIC Dist */
  1230. <0x38880000 0xc0000>; /* GICR (RD_base + SGI_base) */
  1231. #interrupt-cells = <3>;
  1232. interrupt-controller;
  1233. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  1234. };
  1235. ddrc: memory-controller@3d400000 {
  1236. compatible = "fsl,imx8mm-ddrc", "fsl,imx8m-ddrc";
  1237. reg = <0x3d400000 0x400000>;
  1238. clock-names = "core", "pll", "alt", "apb";
  1239. clocks = <&clk IMX8MM_CLK_DRAM_CORE>,
  1240. <&clk IMX8MM_DRAM_PLL>,
  1241. <&clk IMX8MM_CLK_DRAM_ALT>,
  1242. <&clk IMX8MM_CLK_DRAM_APB>;
  1243. };
  1244. ddr-pmu@3d800000 {
  1245. compatible = "fsl,imx8mm-ddr-pmu", "fsl,imx8m-ddr-pmu";
  1246. reg = <0x3d800000 0x400000>;
  1247. interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  1248. };
  1249. };
  1250. };