zynqmp.dtsi 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059
  1. /*
  2. * dts file for Xilinx ZynqMP
  3. *
  4. * (C) Copyright 2014 - 2015, Xilinx, Inc.
  5. *
  6. * Michal Simek <michal.simek@xilinx.com>
  7. *
  8. * SPDX-License-Identifier: GPL-2.0+
  9. */
  10. / {
  11. compatible = "xlnx,zynqmp";
  12. #address-cells = <2>;
  13. #size-cells = <2>;
  14. cpus {
  15. #address-cells = <1>;
  16. #size-cells = <0>;
  17. cpu@0 {
  18. compatible = "arm,cortex-a53", "arm,armv8";
  19. device_type = "cpu";
  20. enable-method = "psci";
  21. reg = <0x0>;
  22. };
  23. cpu@1 {
  24. compatible = "arm,cortex-a53", "arm,armv8";
  25. device_type = "cpu";
  26. enable-method = "psci";
  27. reg = <0x1>;
  28. };
  29. cpu@2 {
  30. compatible = "arm,cortex-a53", "arm,armv8";
  31. device_type = "cpu";
  32. enable-method = "psci";
  33. reg = <0x2>;
  34. };
  35. cpu@3 {
  36. compatible = "arm,cortex-a53", "arm,armv8";
  37. device_type = "cpu";
  38. enable-method = "psci";
  39. reg = <0x3>;
  40. };
  41. };
  42. dcc: dcc {
  43. compatible = "arm,dcc";
  44. status = "disabled";
  45. u-boot,dm-pre-reloc;
  46. };
  47. power-domains {
  48. compatible = "xlnx,zynqmp-genpd";
  49. pd_usb0: pd-usb0 {
  50. #power-domain-cells = <0x0>;
  51. pd-id = <0x16>;
  52. };
  53. pd_usb1: pd-usb1 {
  54. #power-domain-cells = <0x0>;
  55. pd-id = <0x17>;
  56. };
  57. pd_sata: pd-sata {
  58. #power-domain-cells = <0x0>;
  59. pd-id = <0x1c>;
  60. };
  61. pd_spi0: pd-spi0 {
  62. #power-domain-cells = <0x0>;
  63. pd-id = <0x23>;
  64. };
  65. pd_spi1: pd-spi1 {
  66. #power-domain-cells = <0x0>;
  67. pd-id = <0x24>;
  68. };
  69. pd_uart0: pd-uart0 {
  70. #power-domain-cells = <0x0>;
  71. pd-id = <0x21>;
  72. };
  73. pd_uart1: pd-uart1 {
  74. #power-domain-cells = <0x0>;
  75. pd-id = <0x22>;
  76. };
  77. pd_eth0: pd-eth0 {
  78. #power-domain-cells = <0x0>;
  79. pd-id = <0x1d>;
  80. };
  81. pd_eth1: pd-eth1 {
  82. #power-domain-cells = <0x0>;
  83. pd-id = <0x1e>;
  84. };
  85. pd_eth2: pd-eth2 {
  86. #power-domain-cells = <0x0>;
  87. pd-id = <0x1f>;
  88. };
  89. pd_eth3: pd-eth3 {
  90. #power-domain-cells = <0x0>;
  91. pd-id = <0x20>;
  92. };
  93. pd_i2c0: pd-i2c0 {
  94. #power-domain-cells = <0x0>;
  95. pd-id = <0x25>;
  96. };
  97. pd_i2c1: pd-i2c1 {
  98. #power-domain-cells = <0x0>;
  99. pd-id = <0x26>;
  100. };
  101. pd_dp: pd-dp {
  102. /* fixme: what to attach to */
  103. #power-domain-cells = <0x0>;
  104. pd-id = <0x29>;
  105. };
  106. pd_gdma: pd-gdma {
  107. #power-domain-cells = <0x0>;
  108. pd-id = <0x2a>;
  109. };
  110. pd_adma: pd-adma {
  111. #power-domain-cells = <0x0>;
  112. pd-id = <0x2b>;
  113. };
  114. pd_ttc0: pd-ttc0 {
  115. #power-domain-cells = <0x0>;
  116. pd-id = <0x18>;
  117. };
  118. pd_ttc1: pd-ttc1 {
  119. #power-domain-cells = <0x0>;
  120. pd-id = <0x19>;
  121. };
  122. pd_ttc2: pd-ttc2 {
  123. #power-domain-cells = <0x0>;
  124. pd-id = <0x1a>;
  125. };
  126. pd_ttc3: pd-ttc3 {
  127. #power-domain-cells = <0x0>;
  128. pd-id = <0x1b>;
  129. };
  130. pd_sd0: pd-sd0 {
  131. #power-domain-cells = <0x0>;
  132. pd-id = <0x27>;
  133. };
  134. pd_sd1: pd-sd1 {
  135. #power-domain-cells = <0x0>;
  136. pd-id = <0x28>;
  137. };
  138. pd_nand: pd-nand {
  139. #power-domain-cells = <0x0>;
  140. pd-id = <0x2c>;
  141. };
  142. pd_qspi: pd-qspi {
  143. #power-domain-cells = <0x0>;
  144. pd-id = <0x2d>;
  145. };
  146. pd_gpio: pd-gpio {
  147. #power-domain-cells = <0x0>;
  148. pd-id = <0x2e>;
  149. };
  150. pd_can0: pd-can0 {
  151. #power-domain-cells = <0x0>;
  152. pd-id = <0x2f>;
  153. };
  154. pd_can1: pd-can1 {
  155. #power-domain-cells = <0x0>;
  156. pd-id = <0x30>;
  157. };
  158. pd_pcie: pd-pcie {
  159. #power-domain-cells = <0x0>;
  160. pd-id = <0x3b>;
  161. };
  162. pd_gpu: pd-gpu {
  163. #power-domain-cells = <0x0>;
  164. pd-id = <0x3a 0x14 0x15>;
  165. };
  166. };
  167. pmu {
  168. compatible = "arm,armv8-pmuv3";
  169. interrupt-parent = <&gic>;
  170. interrupts = <0 143 4>,
  171. <0 144 4>,
  172. <0 145 4>,
  173. <0 146 4>;
  174. };
  175. psci {
  176. compatible = "arm,psci-0.2";
  177. method = "smc";
  178. };
  179. firmware {
  180. compatible = "xlnx,zynqmp-pm";
  181. method = "smc";
  182. };
  183. timer {
  184. compatible = "arm,armv8-timer";
  185. interrupt-parent = <&gic>;
  186. interrupts = <1 13 0xf01>,
  187. <1 14 0xf01>,
  188. <1 11 0xf01>,
  189. <1 10 0xf01>;
  190. };
  191. edac {
  192. compatible = "arm,cortex-a53-edac";
  193. };
  194. pcap {
  195. compatible = "xlnx,zynqmp-pcap-fpga";
  196. };
  197. amba_apu: amba_apu@0 {
  198. compatible = "simple-bus";
  199. #address-cells = <2>;
  200. #size-cells = <1>;
  201. ranges = <0 0 0 0 0xffffffff>;
  202. gic: interrupt-controller@f9010000 {
  203. compatible = "arm,gic-400", "arm,cortex-a15-gic";
  204. #interrupt-cells = <3>;
  205. reg = <0x0 0xf9010000 0x10000>,
  206. <0x0 0xf9020000 0x20000>,
  207. <0x0 0xf9040000 0x20000>,
  208. <0x0 0xf9060000 0x20000>;
  209. interrupt-controller;
  210. interrupt-parent = <&gic>;
  211. interrupts = <1 9 0xf04>;
  212. };
  213. };
  214. amba: amba {
  215. compatible = "simple-bus";
  216. u-boot,dm-pre-reloc;
  217. #address-cells = <2>;
  218. #size-cells = <2>;
  219. ranges;
  220. can0: can@ff060000 {
  221. compatible = "xlnx,zynq-can-1.0";
  222. status = "disabled";
  223. clock-names = "can_clk", "pclk";
  224. reg = <0x0 0xff060000 0x0 0x1000>;
  225. interrupts = <0 23 4>;
  226. interrupt-parent = <&gic>;
  227. tx-fifo-depth = <0x40>;
  228. rx-fifo-depth = <0x40>;
  229. power-domains = <&pd_can0>;
  230. };
  231. can1: can@ff070000 {
  232. compatible = "xlnx,zynq-can-1.0";
  233. status = "disabled";
  234. clock-names = "can_clk", "pclk";
  235. reg = <0x0 0xff070000 0x0 0x1000>;
  236. interrupts = <0 24 4>;
  237. interrupt-parent = <&gic>;
  238. tx-fifo-depth = <0x40>;
  239. rx-fifo-depth = <0x40>;
  240. power-domains = <&pd_can1>;
  241. };
  242. cci: cci@fd6e0000 {
  243. compatible = "arm,cci-400";
  244. reg = <0x0 0xfd6e0000 0x0 0x9000>;
  245. ranges = <0x0 0x0 0xfd6e0000 0x10000>;
  246. #address-cells = <1>;
  247. #size-cells = <1>;
  248. pmu@9000 {
  249. compatible = "arm,cci-400-pmu,r1";
  250. reg = <0x9000 0x5000>;
  251. interrupt-parent = <&gic>;
  252. interrupts = <0 123 4>,
  253. <0 123 4>,
  254. <0 123 4>,
  255. <0 123 4>,
  256. <0 123 4>;
  257. };
  258. };
  259. /* GDMA */
  260. fpd_dma_chan1: dma@fd500000 {
  261. status = "disabled";
  262. compatible = "xlnx,zynqmp-dma-1.0";
  263. reg = <0x0 0xfd500000 0x0 0x1000>;
  264. interrupt-parent = <&gic>;
  265. interrupts = <0 124 4>;
  266. clock-names = "clk_main", "clk_apb";
  267. xlnx,bus-width = <128>;
  268. #stream-id-cells = <1>;
  269. iommus = <&smmu 0x14e8>;
  270. power-domains = <&pd_gdma>;
  271. };
  272. fpd_dma_chan2: dma@fd510000 {
  273. status = "disabled";
  274. compatible = "xlnx,zynqmp-dma-1.0";
  275. reg = <0x0 0xfd510000 0x0 0x1000>;
  276. interrupt-parent = <&gic>;
  277. interrupts = <0 125 4>;
  278. clock-names = "clk_main", "clk_apb";
  279. xlnx,bus-width = <128>;
  280. #stream-id-cells = <1>;
  281. iommus = <&smmu 0x14e9>;
  282. power-domains = <&pd_gdma>;
  283. };
  284. fpd_dma_chan3: dma@fd520000 {
  285. status = "disabled";
  286. compatible = "xlnx,zynqmp-dma-1.0";
  287. reg = <0x0 0xfd520000 0x0 0x1000>;
  288. interrupt-parent = <&gic>;
  289. interrupts = <0 126 4>;
  290. clock-names = "clk_main", "clk_apb";
  291. xlnx,bus-width = <128>;
  292. #stream-id-cells = <1>;
  293. iommus = <&smmu 0x14ea>;
  294. power-domains = <&pd_gdma>;
  295. };
  296. fpd_dma_chan4: dma@fd530000 {
  297. status = "disabled";
  298. compatible = "xlnx,zynqmp-dma-1.0";
  299. reg = <0x0 0xfd530000 0x0 0x1000>;
  300. interrupt-parent = <&gic>;
  301. interrupts = <0 127 4>;
  302. clock-names = "clk_main", "clk_apb";
  303. xlnx,bus-width = <128>;
  304. #stream-id-cells = <1>;
  305. iommus = <&smmu 0x14eb>;
  306. power-domains = <&pd_gdma>;
  307. };
  308. fpd_dma_chan5: dma@fd540000 {
  309. status = "disabled";
  310. compatible = "xlnx,zynqmp-dma-1.0";
  311. reg = <0x0 0xfd540000 0x0 0x1000>;
  312. interrupt-parent = <&gic>;
  313. interrupts = <0 128 4>;
  314. clock-names = "clk_main", "clk_apb";
  315. xlnx,bus-width = <128>;
  316. #stream-id-cells = <1>;
  317. iommus = <&smmu 0x14ec>;
  318. power-domains = <&pd_gdma>;
  319. };
  320. fpd_dma_chan6: dma@fd550000 {
  321. status = "disabled";
  322. compatible = "xlnx,zynqmp-dma-1.0";
  323. reg = <0x0 0xfd550000 0x0 0x1000>;
  324. interrupt-parent = <&gic>;
  325. interrupts = <0 129 4>;
  326. clock-names = "clk_main", "clk_apb";
  327. xlnx,bus-width = <128>;
  328. #stream-id-cells = <1>;
  329. iommus = <&smmu 0x14ed>;
  330. power-domains = <&pd_gdma>;
  331. };
  332. fpd_dma_chan7: dma@fd560000 {
  333. status = "disabled";
  334. compatible = "xlnx,zynqmp-dma-1.0";
  335. reg = <0x0 0xfd560000 0x0 0x1000>;
  336. interrupt-parent = <&gic>;
  337. interrupts = <0 130 4>;
  338. clock-names = "clk_main", "clk_apb";
  339. xlnx,bus-width = <128>;
  340. #stream-id-cells = <1>;
  341. iommus = <&smmu 0x14ee>;
  342. power-domains = <&pd_gdma>;
  343. };
  344. fpd_dma_chan8: dma@fd570000 {
  345. status = "disabled";
  346. compatible = "xlnx,zynqmp-dma-1.0";
  347. reg = <0x0 0xfd570000 0x0 0x1000>;
  348. interrupt-parent = <&gic>;
  349. interrupts = <0 131 4>;
  350. clock-names = "clk_main", "clk_apb";
  351. xlnx,bus-width = <128>;
  352. #stream-id-cells = <1>;
  353. iommus = <&smmu 0x14ef>;
  354. power-domains = <&pd_gdma>;
  355. };
  356. gpu: gpu@fd4b0000 {
  357. status = "disabled";
  358. compatible = "arm,mali-400", "arm,mali-utgard";
  359. reg = <0x0 0xfd4b0000 0x0 0x30000>;
  360. interrupt-parent = <&gic>;
  361. interrupts = <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>;
  362. interrupt-names = "IRQGP", "IRQGPMMU", "IRQPP0", "IRQPPMMU0", "IRQPP1", "IRQPPMMU1";
  363. power-domains = <&pd_gpu>;
  364. };
  365. /* LPDDMA default allows only secured access. inorder to enable
  366. * These dma channels, Users should ensure that these dma
  367. * Channels are allowed for non secure access.
  368. */
  369. lpd_dma_chan1: dma@ffa80000 {
  370. status = "disabled";
  371. compatible = "xlnx,zynqmp-dma-1.0";
  372. clock-names = "clk_main", "clk_apb";
  373. reg = <0x0 0xffa80000 0x0 0x1000>;
  374. interrupt-parent = <&gic>;
  375. interrupts = <0 77 4>;
  376. xlnx,bus-width = <64>;
  377. #stream-id-cells = <1>;
  378. iommus = <&smmu 0x868>;
  379. power-domains = <&pd_adma>;
  380. };
  381. lpd_dma_chan2: dma@ffa90000 {
  382. status = "disabled";
  383. compatible = "xlnx,zynqmp-dma-1.0";
  384. clock-names = "clk_main", "clk_apb";
  385. reg = <0x0 0xffa90000 0x0 0x1000>;
  386. interrupt-parent = <&gic>;
  387. interrupts = <0 78 4>;
  388. xlnx,bus-width = <64>;
  389. #stream-id-cells = <1>;
  390. iommus = <&smmu 0x869>;
  391. power-domains = <&pd_adma>;
  392. };
  393. lpd_dma_chan3: dma@ffaa0000 {
  394. status = "disabled";
  395. compatible = "xlnx,zynqmp-dma-1.0";
  396. clock-names = "clk_main", "clk_apb";
  397. reg = <0x0 0xffaa0000 0x0 0x1000>;
  398. interrupt-parent = <&gic>;
  399. interrupts = <0 79 4>;
  400. xlnx,bus-width = <64>;
  401. #stream-id-cells = <1>;
  402. iommus = <&smmu 0x86a>;
  403. power-domains = <&pd_adma>;
  404. };
  405. lpd_dma_chan4: dma@ffab0000 {
  406. status = "disabled";
  407. compatible = "xlnx,zynqmp-dma-1.0";
  408. clock-names = "clk_main", "clk_apb";
  409. reg = <0x0 0xffab0000 0x0 0x1000>;
  410. interrupt-parent = <&gic>;
  411. interrupts = <0 80 4>;
  412. xlnx,bus-width = <64>;
  413. #stream-id-cells = <1>;
  414. iommus = <&smmu 0x86b>;
  415. power-domains = <&pd_adma>;
  416. };
  417. lpd_dma_chan5: dma@ffac0000 {
  418. status = "disabled";
  419. compatible = "xlnx,zynqmp-dma-1.0";
  420. clock-names = "clk_main", "clk_apb";
  421. reg = <0x0 0xffac0000 0x0 0x1000>;
  422. interrupt-parent = <&gic>;
  423. interrupts = <0 81 4>;
  424. xlnx,bus-width = <64>;
  425. #stream-id-cells = <1>;
  426. iommus = <&smmu 0x86c>;
  427. power-domains = <&pd_adma>;
  428. };
  429. lpd_dma_chan6: dma@ffad0000 {
  430. status = "disabled";
  431. compatible = "xlnx,zynqmp-dma-1.0";
  432. clock-names = "clk_main", "clk_apb";
  433. reg = <0x0 0xffad0000 0x0 0x1000>;
  434. interrupt-parent = <&gic>;
  435. interrupts = <0 82 4>;
  436. xlnx,bus-width = <64>;
  437. #stream-id-cells = <1>;
  438. iommus = <&smmu 0x86d>;
  439. power-domains = <&pd_adma>;
  440. };
  441. lpd_dma_chan7: dma@ffae0000 {
  442. status = "disabled";
  443. compatible = "xlnx,zynqmp-dma-1.0";
  444. clock-names = "clk_main", "clk_apb";
  445. reg = <0x0 0xffae0000 0x0 0x1000>;
  446. interrupt-parent = <&gic>;
  447. interrupts = <0 83 4>;
  448. xlnx,bus-width = <64>;
  449. #stream-id-cells = <1>;
  450. iommus = <&smmu 0x86e>;
  451. power-domains = <&pd_adma>;
  452. };
  453. lpd_dma_chan8: dma@ffaf0000 {
  454. status = "disabled";
  455. compatible = "xlnx,zynqmp-dma-1.0";
  456. clock-names = "clk_main", "clk_apb";
  457. reg = <0x0 0xffaf0000 0x0 0x1000>;
  458. interrupt-parent = <&gic>;
  459. interrupts = <0 84 4>;
  460. xlnx,bus-width = <64>;
  461. #stream-id-cells = <1>;
  462. iommus = <&smmu 0x86f>;
  463. power-domains = <&pd_adma>;
  464. };
  465. mc: memory-controller@fd070000 {
  466. compatible = "xlnx,zynqmp-ddrc-2.40a";
  467. reg = <0x0 0xfd070000 0x0 0x30000>;
  468. interrupt-parent = <&gic>;
  469. interrupts = <0 112 4>;
  470. };
  471. nand0: nand@ff100000 {
  472. compatible = "arasan,nfc-v3p10";
  473. status = "disabled";
  474. reg = <0x0 0xff100000 0x0 0x1000>;
  475. clock-names = "clk_sys", "clk_flash";
  476. interrupt-parent = <&gic>;
  477. interrupts = <0 14 4>;
  478. #address-cells = <2>;
  479. #size-cells = <1>;
  480. #stream-id-cells = <1>;
  481. iommus = <&smmu 0x872>;
  482. power-domains = <&pd_nand>;
  483. };
  484. gem0: ethernet@ff0b0000 {
  485. compatible = "cdns,zynqmp-gem";
  486. status = "disabled";
  487. interrupt-parent = <&gic>;
  488. interrupts = <0 57 4>, <0 57 4>;
  489. reg = <0x0 0xff0b0000 0x0 0x1000>;
  490. clock-names = "pclk", "hclk", "tx_clk";
  491. #address-cells = <1>;
  492. #size-cells = <0>;
  493. #stream-id-cells = <1>;
  494. iommus = <&smmu 0x874>;
  495. power-domains = <&pd_eth0>;
  496. };
  497. gem1: ethernet@ff0c0000 {
  498. compatible = "cdns,zynqmp-gem";
  499. status = "disabled";
  500. interrupt-parent = <&gic>;
  501. interrupts = <0 59 4>, <0 59 4>;
  502. reg = <0x0 0xff0c0000 0x0 0x1000>;
  503. clock-names = "pclk", "hclk", "tx_clk";
  504. #address-cells = <1>;
  505. #size-cells = <0>;
  506. #stream-id-cells = <1>;
  507. iommus = <&smmu 0x875>;
  508. power-domains = <&pd_eth1>;
  509. };
  510. gem2: ethernet@ff0d0000 {
  511. compatible = "cdns,zynqmp-gem";
  512. status = "disabled";
  513. interrupt-parent = <&gic>;
  514. interrupts = <0 61 4>, <0 61 4>;
  515. reg = <0x0 0xff0d0000 0x0 0x1000>;
  516. clock-names = "pclk", "hclk", "tx_clk";
  517. #address-cells = <1>;
  518. #size-cells = <0>;
  519. #stream-id-cells = <1>;
  520. iommus = <&smmu 0x876>;
  521. power-domains = <&pd_eth2>;
  522. };
  523. gem3: ethernet@ff0e0000 {
  524. compatible = "cdns,zynqmp-gem";
  525. status = "disabled";
  526. interrupt-parent = <&gic>;
  527. interrupts = <0 63 4>, <0 63 4>;
  528. reg = <0x0 0xff0e0000 0x0 0x1000>;
  529. clock-names = "pclk", "hclk", "tx_clk";
  530. #address-cells = <1>;
  531. #size-cells = <0>;
  532. #stream-id-cells = <1>;
  533. iommus = <&smmu 0x877>;
  534. power-domains = <&pd_eth3>;
  535. };
  536. gpio: gpio@ff0a0000 {
  537. compatible = "xlnx,zynqmp-gpio-1.0";
  538. status = "disabled";
  539. #gpio-cells = <0x2>;
  540. interrupt-parent = <&gic>;
  541. interrupts = <0 16 4>;
  542. interrupt-controller;
  543. #interrupt-cells = <2>;
  544. reg = <0x0 0xff0a0000 0x0 0x1000>;
  545. power-domains = <&pd_gpio>;
  546. };
  547. i2c0: i2c@ff020000 {
  548. compatible = "cdns,i2c-r1p10";
  549. status = "disabled";
  550. interrupt-parent = <&gic>;
  551. interrupts = <0 17 4>;
  552. reg = <0x0 0xff020000 0x0 0x1000>;
  553. #address-cells = <1>;
  554. #size-cells = <0>;
  555. power-domains = <&pd_i2c0>;
  556. };
  557. i2c1: i2c@ff030000 {
  558. compatible = "cdns,i2c-r1p10";
  559. status = "disabled";
  560. interrupt-parent = <&gic>;
  561. interrupts = <0 18 4>;
  562. reg = <0x0 0xff030000 0x0 0x1000>;
  563. #address-cells = <1>;
  564. #size-cells = <0>;
  565. power-domains = <&pd_i2c1>;
  566. };
  567. ocm: memory-controller@ff960000 {
  568. compatible = "xlnx,zynqmp-ocmc-1.0";
  569. reg = <0x0 0xff960000 0x0 0x1000>;
  570. interrupt-parent = <&gic>;
  571. interrupts = <0 10 4>;
  572. };
  573. pcie: pcie@fd0e0000 {
  574. compatible = "xlnx,nwl-pcie-2.11";
  575. status = "disabled";
  576. #address-cells = <3>;
  577. #size-cells = <2>;
  578. #interrupt-cells = <1>;
  579. msi-controller;
  580. device_type = "pci";
  581. interrupt-parent = <&gic>;
  582. interrupts = <0 118 4>,
  583. <0 117 4>,
  584. <0 116 4>,
  585. <0 115 4>, /* MSI_1 [63...32] */
  586. <0 114 4>; /* MSI_0 [31...0] */
  587. interrupt-names = "misc","dummy","intx", "msi1", "msi0";
  588. msi-parent = <&pcie>;
  589. reg = <0x0 0xfd0e0000 0x0 0x1000>,
  590. <0x0 0xfd480000 0x0 0x1000>,
  591. <0x80 0x00000000 0x0 0x1000000>;
  592. reg-names = "breg", "pcireg", "cfg";
  593. ranges = <0x02000000 0x00000000 0xe0000000 0x00000000 0xe0000000 0x00000000 0x10000000 /* non-prefetchable memory */
  594. 0x43000000 0x00000006 0x00000000 0x00000006 0x00000000 0x00000002 0x00000000>;/* prefetchable memory */
  595. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  596. interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>,
  597. <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
  598. <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
  599. <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
  600. power-domains = <&pd_pcie>;
  601. pcie_intc: legacy-interrupt-controller {
  602. interrupt-controller;
  603. #address-cells = <0>;
  604. #interrupt-cells = <1>;
  605. };
  606. };
  607. qspi: spi@ff0f0000 {
  608. compatible = "xlnx,zynqmp-qspi-1.0";
  609. status = "disabled";
  610. clock-names = "ref_clk", "pclk";
  611. interrupts = <0 15 4>;
  612. interrupt-parent = <&gic>;
  613. num-cs = <1>;
  614. reg = <0x0 0xff0f0000 0x0 0x1000>,
  615. <0x0 0xc0000000 0x0 0x8000000>;
  616. #address-cells = <1>;
  617. #size-cells = <0>;
  618. #stream-id-cells = <1>;
  619. iommus = <&smmu 0x873>;
  620. power-domains = <&pd_qspi>;
  621. };
  622. rtc: rtc@ffa60000 {
  623. compatible = "xlnx,zynqmp-rtc";
  624. status = "disabled";
  625. reg = <0x0 0xffa60000 0x0 0x100>;
  626. interrupt-parent = <&gic>;
  627. interrupts = <0 26 4>, <0 27 4>;
  628. interrupt-names = "alarm", "sec";
  629. };
  630. serdes: zynqmp_phy@fd400000 {
  631. compatible = "xlnx,zynqmp-psgtr";
  632. status = "disabled";
  633. reg = <0x0 0xfd400000 0x0 0x40000>,
  634. <0x0 0xfd3d0000 0x0 0x1000>,
  635. <0x0 0xfd1a0000 0x0 0x1000>,
  636. <0x0 0xff5e0000 0x0 0x1000>;
  637. reg-names = "serdes", "siou", "fpd", "lpd";
  638. xlnx,tx_termination_fix;
  639. lane0: lane0 {
  640. #phy-cells = <4>;
  641. };
  642. lane1: lane1 {
  643. #phy-cells = <4>;
  644. };
  645. lane2: lane2 {
  646. #phy-cells = <4>;
  647. };
  648. lane3: lane3 {
  649. #phy-cells = <4>;
  650. };
  651. };
  652. sata: ahci@fd0c0000 {
  653. compatible = "ceva,ahci-1v84";
  654. status = "disabled";
  655. reg = <0x0 0xfd0c0000 0x0 0x2000>;
  656. interrupt-parent = <&gic>;
  657. interrupts = <0 133 4>;
  658. power-domains = <&pd_sata>;
  659. };
  660. sdhci0: sdhci@ff160000 {
  661. u-boot,dm-pre-reloc;
  662. compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
  663. status = "disabled";
  664. interrupt-parent = <&gic>;
  665. interrupts = <0 48 4>;
  666. reg = <0x0 0xff160000 0x0 0x1000>;
  667. clock-names = "clk_xin", "clk_ahb";
  668. xlnx,device_id = <0>;
  669. #stream-id-cells = <1>;
  670. iommus = <&smmu 0x870>;
  671. power-domains = <&pd_sd0>;
  672. };
  673. sdhci1: sdhci@ff170000 {
  674. u-boot,dm-pre-reloc;
  675. compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
  676. status = "disabled";
  677. interrupt-parent = <&gic>;
  678. interrupts = <0 49 4>;
  679. reg = <0x0 0xff170000 0x0 0x1000>;
  680. clock-names = "clk_xin", "clk_ahb";
  681. xlnx,device_id = <1>;
  682. #stream-id-cells = <1>;
  683. iommus = <&smmu 0x871>;
  684. power-domains = <&pd_sd1>;
  685. };
  686. smmu: smmu@fd800000 {
  687. compatible = "arm,mmu-500";
  688. reg = <0x0 0xfd800000 0x0 0x20000>;
  689. #iommu-cells = <1>;
  690. #global-interrupts = <1>;
  691. interrupt-parent = <&gic>;
  692. interrupts = <0 155 4>,
  693. <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
  694. <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
  695. <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
  696. <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>;
  697. mmu-masters = < &gem0 0x874
  698. &gem1 0x875
  699. &gem2 0x876
  700. &gem3 0x877
  701. &usb0 0x860
  702. &usb1 0x861
  703. &qspi 0x873
  704. &lpd_dma_chan1 0x868
  705. &lpd_dma_chan2 0x869
  706. &lpd_dma_chan3 0x86a
  707. &lpd_dma_chan4 0x86b
  708. &lpd_dma_chan5 0x86c
  709. &lpd_dma_chan6 0x86d
  710. &lpd_dma_chan7 0x86e
  711. &lpd_dma_chan8 0x86f
  712. &fpd_dma_chan1 0x14e8
  713. &fpd_dma_chan2 0x14e9
  714. &fpd_dma_chan3 0x14ea
  715. &fpd_dma_chan4 0x14eb
  716. &fpd_dma_chan5 0x14ec
  717. &fpd_dma_chan6 0x14ed
  718. &fpd_dma_chan7 0x14ee
  719. &fpd_dma_chan8 0x14ef
  720. &sdhci0 0x870
  721. &sdhci1 0x871
  722. &nand0 0x872>;
  723. };
  724. spi0: spi@ff040000 {
  725. compatible = "cdns,spi-r1p6";
  726. status = "disabled";
  727. interrupt-parent = <&gic>;
  728. interrupts = <0 19 4>;
  729. reg = <0x0 0xff040000 0x0 0x1000>;
  730. clock-names = "ref_clk", "pclk";
  731. #address-cells = <1>;
  732. #size-cells = <0>;
  733. power-domains = <&pd_spi0>;
  734. };
  735. spi1: spi@ff050000 {
  736. compatible = "cdns,spi-r1p6";
  737. status = "disabled";
  738. interrupt-parent = <&gic>;
  739. interrupts = <0 20 4>;
  740. reg = <0x0 0xff050000 0x0 0x1000>;
  741. clock-names = "ref_clk", "pclk";
  742. #address-cells = <1>;
  743. #size-cells = <0>;
  744. power-domains = <&pd_spi1>;
  745. };
  746. ttc0: timer@ff110000 {
  747. compatible = "cdns,ttc";
  748. status = "disabled";
  749. interrupt-parent = <&gic>;
  750. interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
  751. reg = <0x0 0xff110000 0x0 0x1000>;
  752. timer-width = <32>;
  753. power-domains = <&pd_ttc0>;
  754. };
  755. ttc1: timer@ff120000 {
  756. compatible = "cdns,ttc";
  757. status = "disabled";
  758. interrupt-parent = <&gic>;
  759. interrupts = <0 39 4>, <0 40 4>, <0 41 4>;
  760. reg = <0x0 0xff120000 0x0 0x1000>;
  761. timer-width = <32>;
  762. power-domains = <&pd_ttc1>;
  763. };
  764. ttc2: timer@ff130000 {
  765. compatible = "cdns,ttc";
  766. status = "disabled";
  767. interrupt-parent = <&gic>;
  768. interrupts = <0 42 4>, <0 43 4>, <0 44 4>;
  769. reg = <0x0 0xff130000 0x0 0x1000>;
  770. timer-width = <32>;
  771. power-domains = <&pd_ttc2>;
  772. };
  773. ttc3: timer@ff140000 {
  774. compatible = "cdns,ttc";
  775. status = "disabled";
  776. interrupt-parent = <&gic>;
  777. interrupts = <0 45 4>, <0 46 4>, <0 47 4>;
  778. reg = <0x0 0xff140000 0x0 0x1000>;
  779. timer-width = <32>;
  780. power-domains = <&pd_ttc3>;
  781. };
  782. uart0: serial@ff000000 {
  783. u-boot,dm-pre-reloc;
  784. compatible = "cdns,uart-r1p12", "xlnx,xuartps";
  785. status = "disabled";
  786. interrupt-parent = <&gic>;
  787. interrupts = <0 21 4>;
  788. reg = <0x0 0xff000000 0x0 0x1000>;
  789. clock-names = "uart_clk", "pclk";
  790. power-domains = <&pd_uart0>;
  791. };
  792. uart1: serial@ff010000 {
  793. u-boot,dm-pre-reloc;
  794. compatible = "cdns,uart-r1p12", "xlnx,xuartps";
  795. status = "disabled";
  796. interrupt-parent = <&gic>;
  797. interrupts = <0 22 4>;
  798. reg = <0x0 0xff010000 0x0 0x1000>;
  799. clock-names = "uart_clk", "pclk";
  800. power-domains = <&pd_uart1>;
  801. };
  802. usb0: usb0 {
  803. #address-cells = <2>;
  804. #size-cells = <2>;
  805. status = "disabled";
  806. compatible = "xlnx,zynqmp-dwc3";
  807. clock-names = "bus_clk", "ref_clk";
  808. clocks = <&clk125>, <&clk125>;
  809. #stream-id-cells = <1>;
  810. iommus = <&smmu 0x860>;
  811. power-domains = <&pd_usb0>;
  812. ranges;
  813. dwc3_0: dwc3@fe200000 {
  814. compatible = "snps,dwc3";
  815. status = "disabled";
  816. reg = <0x0 0xfe200000 0x0 0x40000>;
  817. interrupt-parent = <&gic>;
  818. interrupts = <0 65 4>;
  819. /* snps,quirk-frame-length-adjustment = <0x20>; */
  820. snps,refclk_fladj;
  821. };
  822. };
  823. usb1: usb1 {
  824. #address-cells = <2>;
  825. #size-cells = <2>;
  826. status = "disabled";
  827. compatible = "xlnx,zynqmp-dwc3";
  828. clock-names = "bus_clk", "ref_clk";
  829. clocks = <&clk125>, <&clk125>;
  830. #stream-id-cells = <1>;
  831. iommus = <&smmu 0x861>;
  832. power-domains = <&pd_usb1>;
  833. ranges;
  834. dwc3_1: dwc3@fe300000 {
  835. compatible = "snps,dwc3";
  836. status = "disabled";
  837. reg = <0x0 0xfe300000 0x0 0x40000>;
  838. interrupt-parent = <&gic>;
  839. interrupts = <0 70 4>;
  840. /* snps,quirk-frame-length-adjustment = <0x20>; */
  841. snps,refclk_fladj;
  842. };
  843. };
  844. watchdog0: watchdog@fd4d0000 {
  845. compatible = "cdns,wdt-r1p2";
  846. status = "disabled";
  847. interrupt-parent = <&gic>;
  848. interrupts = <0 113 1>;
  849. reg = <0x0 0xfd4d0000 0x0 0x1000>;
  850. timeout-sec = <10>;
  851. };
  852. xilinx_drm: xilinx_drm {
  853. compatible = "xlnx,drm";
  854. status = "disabled";
  855. xlnx,encoder-slave = <&xlnx_dp>;
  856. xlnx,connector-type = "DisplayPort";
  857. xlnx,dp-sub = <&xlnx_dp_sub>;
  858. planes {
  859. xlnx,pixel-format = "rgb565";
  860. plane0 {
  861. dmas = <&xlnx_dpdma 3>;
  862. dma-names = "dma0";
  863. };
  864. plane1 {
  865. dmas = <&xlnx_dpdma 0>,
  866. <&xlnx_dpdma 1>,
  867. <&xlnx_dpdma 2>;
  868. dma-names = "dma0", "dma1", "dma2";
  869. };
  870. };
  871. };
  872. xlnx_dp: dp@fd4a0000 {
  873. compatible = "xlnx,v-dp";
  874. status = "disabled";
  875. reg = <0x0 0xfd4a0000 0x0 0x1000>;
  876. interrupts = <0 119 4>;
  877. interrupt-parent = <&gic>;
  878. clock-names = "aclk", "aud_clk";
  879. xlnx,dp-version = "v1.2";
  880. xlnx,max-lanes = <2>;
  881. xlnx,max-link-rate = <540000>;
  882. xlnx,max-bpc = <16>;
  883. xlnx,enable-ycrcb;
  884. xlnx,colormetry = "rgb";
  885. xlnx,bpc = <8>;
  886. xlnx,audio-chan = <2>;
  887. xlnx,dp-sub = <&xlnx_dp_sub>;
  888. xlnx,max-pclock-frequency = <300000>;
  889. };
  890. xlnx_dp_snd_card: dp_snd_card {
  891. compatible = "xlnx,dp-snd-card";
  892. status = "disabled";
  893. xlnx,dp-snd-pcm = <&xlnx_dp_snd_pcm0>, <&xlnx_dp_snd_pcm1>;
  894. xlnx,dp-snd-codec = <&xlnx_dp_snd_codec0>;
  895. };
  896. xlnx_dp_snd_codec0: dp_snd_codec0 {
  897. compatible = "xlnx,dp-snd-codec";
  898. status = "disabled";
  899. clock-names = "aud_clk";
  900. };
  901. xlnx_dp_snd_pcm0: dp_snd_pcm0 {
  902. compatible = "xlnx,dp-snd-pcm";
  903. status = "disabled";
  904. dmas = <&xlnx_dpdma 4>;
  905. dma-names = "tx";
  906. };
  907. xlnx_dp_snd_pcm1: dp_snd_pcm1 {
  908. compatible = "xlnx,dp-snd-pcm";
  909. status = "disabled";
  910. dmas = <&xlnx_dpdma 5>;
  911. dma-names = "tx";
  912. };
  913. xlnx_dp_sub: dp_sub@fd4aa000 {
  914. compatible = "xlnx,dp-sub";
  915. status = "disabled";
  916. reg = <0x0 0xfd4aa000 0x0 0x1000>,
  917. <0x0 0xfd4ab000 0x0 0x1000>,
  918. <0x0 0xfd4ac000 0x0 0x1000>;
  919. reg-names = "blend", "av_buf", "aud";
  920. xlnx,output-fmt = "rgb";
  921. xlnx,vid-fmt = "yuyv";
  922. xlnx,gfx-fmt = "rgb565";
  923. };
  924. xlnx_dpdma: dma@fd4c0000 {
  925. compatible = "xlnx,dpdma";
  926. status = "disabled";
  927. reg = <0x0 0xfd4c0000 0x0 0x1000>;
  928. interrupts = <0 122 4>;
  929. interrupt-parent = <&gic>;
  930. clock-names = "axi_clk";
  931. dma-channels = <6>;
  932. #dma-cells = <1>;
  933. dma-video0channel {
  934. compatible = "xlnx,video0";
  935. };
  936. dma-video1channel {
  937. compatible = "xlnx,video1";
  938. };
  939. dma-video2channel {
  940. compatible = "xlnx,video2";
  941. };
  942. dma-graphicschannel {
  943. compatible = "xlnx,graphics";
  944. };
  945. dma-audio0channel {
  946. compatible = "xlnx,audio0";
  947. };
  948. dma-audio1channel {
  949. compatible = "xlnx,audio1";
  950. };
  951. };
  952. };
  953. };