zynqmp-zcu102-revA.dts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * dts file for Xilinx ZynqMP ZCU102 RevA
  4. *
  5. * (C) Copyright 2015 - 2018, Xilinx, Inc.
  6. *
  7. * Michal Simek <michal.simek@xilinx.com>
  8. */
  9. /dts-v1/;
  10. #include "zynqmp.dtsi"
  11. #include "zynqmp-clk-ccf.dtsi"
  12. #include <dt-bindings/input/input.h>
  13. #include <dt-bindings/gpio/gpio.h>
  14. #include <dt-bindings/phy/phy.h>
  15. / {
  16. model = "ZynqMP ZCU102 RevA";
  17. compatible = "xlnx,zynqmp-zcu102-revA", "xlnx,zynqmp-zcu102", "xlnx,zynqmp";
  18. aliases {
  19. ethernet0 = &gem3;
  20. gpio0 = &gpio;
  21. i2c0 = &i2c0;
  22. i2c1 = &i2c1;
  23. mmc0 = &sdhci1;
  24. rtc0 = &rtc;
  25. serial0 = &uart0;
  26. serial1 = &uart1;
  27. serial2 = &dcc;
  28. spi0 = &qspi;
  29. usb0 = &usb0;
  30. };
  31. chosen {
  32. bootargs = "earlycon";
  33. stdout-path = "serial0:115200n8";
  34. };
  35. memory@0 {
  36. device_type = "memory";
  37. reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
  38. };
  39. gpio-keys {
  40. compatible = "gpio-keys";
  41. autorepeat;
  42. sw19 {
  43. label = "sw19";
  44. gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
  45. linux,code = <KEY_DOWN>;
  46. gpio-key,wakeup;
  47. autorepeat;
  48. };
  49. };
  50. leds {
  51. compatible = "gpio-leds";
  52. heartbeat_led {
  53. label = "heartbeat";
  54. gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
  55. linux,default-trigger = "heartbeat";
  56. };
  57. };
  58. };
  59. &can1 {
  60. status = "okay";
  61. };
  62. &dcc {
  63. status = "okay";
  64. };
  65. &fpd_dma_chan1 {
  66. status = "okay";
  67. };
  68. &fpd_dma_chan2 {
  69. status = "okay";
  70. };
  71. &fpd_dma_chan3 {
  72. status = "okay";
  73. };
  74. &fpd_dma_chan4 {
  75. status = "okay";
  76. };
  77. &fpd_dma_chan5 {
  78. status = "okay";
  79. };
  80. &fpd_dma_chan6 {
  81. status = "okay";
  82. };
  83. &fpd_dma_chan7 {
  84. status = "okay";
  85. };
  86. &fpd_dma_chan8 {
  87. status = "okay";
  88. };
  89. &gem3 {
  90. status = "okay";
  91. phy-handle = <&phy0>;
  92. phy-mode = "rgmii-id";
  93. phy0: phy@21 {
  94. reg = <21>;
  95. ti,rx-internal-delay = <0x8>;
  96. ti,tx-internal-delay = <0xa>;
  97. ti,fifo-depth = <0x1>;
  98. };
  99. };
  100. &gpio {
  101. status = "okay";
  102. };
  103. &gpu {
  104. status = "okay";
  105. };
  106. &i2c0 {
  107. status = "okay";
  108. clock-frequency = <400000>;
  109. tca6416_u97: gpio@20 {
  110. compatible = "ti,tca6416";
  111. reg = <0x20>;
  112. gpio-controller;
  113. #gpio-cells = <2>;
  114. /*
  115. * IRQ not connected
  116. * Lines:
  117. * 0 - PS_GTR_LAN_SEL0
  118. * 1 - PS_GTR_LAN_SEL1
  119. * 2 - PS_GTR_LAN_SEL2
  120. * 3 - PS_GTR_LAN_SEL3
  121. * 4 - PCI_CLK_DIR_SEL
  122. * 5 - IIC_MUX_RESET_B
  123. * 6 - GEM3_EXP_RESET_B
  124. * 7, 10 - 17 - not connected
  125. */
  126. gtr_sel0 {
  127. gpio-hog;
  128. gpios = <0 0>;
  129. output-low; /* PCIE = 0, DP = 1 */
  130. line-name = "sel0";
  131. };
  132. gtr_sel1 {
  133. gpio-hog;
  134. gpios = <1 0>;
  135. output-high; /* PCIE = 0, DP = 1 */
  136. line-name = "sel1";
  137. };
  138. gtr_sel2 {
  139. gpio-hog;
  140. gpios = <2 0>;
  141. output-high; /* PCIE = 0, USB0 = 1 */
  142. line-name = "sel2";
  143. };
  144. gtr_sel3 {
  145. gpio-hog;
  146. gpios = <3 0>;
  147. output-high; /* PCIE = 0, SATA = 1 */
  148. line-name = "sel3";
  149. };
  150. };
  151. tca6416_u61: gpio@21 {
  152. compatible = "ti,tca6416";
  153. reg = <0x21>;
  154. gpio-controller;
  155. #gpio-cells = <2>;
  156. /*
  157. * IRQ not connected
  158. * Lines:
  159. * 0 - VCCPSPLL_EN
  160. * 1 - MGTRAVCC_EN
  161. * 2 - MGTRAVTT_EN
  162. * 3 - VCCPSDDRPLL_EN
  163. * 4 - MIO26_PMU_INPUT_LS
  164. * 5 - PL_PMBUS_ALERT
  165. * 6 - PS_PMBUS_ALERT
  166. * 7 - MAXIM_PMBUS_ALERT
  167. * 10 - PL_DDR4_VTERM_EN
  168. * 11 - PL_DDR4_VPP_2V5_EN
  169. * 12 - PS_DIMM_VDDQ_TO_PSVCCO_ON
  170. * 13 - PS_DIMM_SUSPEND_EN
  171. * 14 - PS_DDR4_VTERM_EN
  172. * 15 - PS_DDR4_VPP_2V5_EN
  173. * 16 - 17 - not connected
  174. */
  175. };
  176. i2c-mux@75 { /* u60 */
  177. compatible = "nxp,pca9544";
  178. #address-cells = <1>;
  179. #size-cells = <0>;
  180. reg = <0x75>;
  181. i2c@0 {
  182. #address-cells = <1>;
  183. #size-cells = <0>;
  184. reg = <0>;
  185. /* PS_PMBUS */
  186. ina226@40 { /* u76 */
  187. compatible = "ti,ina226";
  188. reg = <0x40>;
  189. shunt-resistor = <5000>;
  190. };
  191. ina226@41 { /* u77 */
  192. compatible = "ti,ina226";
  193. reg = <0x41>;
  194. shunt-resistor = <5000>;
  195. };
  196. ina226@42 { /* u78 */
  197. compatible = "ti,ina226";
  198. reg = <0x42>;
  199. shunt-resistor = <5000>;
  200. };
  201. ina226@43 { /* u87 */
  202. compatible = "ti,ina226";
  203. reg = <0x43>;
  204. shunt-resistor = <5000>;
  205. };
  206. ina226@44 { /* u85 */
  207. compatible = "ti,ina226";
  208. reg = <0x44>;
  209. shunt-resistor = <5000>;
  210. };
  211. ina226@45 { /* u86 */
  212. compatible = "ti,ina226";
  213. reg = <0x45>;
  214. shunt-resistor = <5000>;
  215. };
  216. ina226@46 { /* u93 */
  217. compatible = "ti,ina226";
  218. reg = <0x46>;
  219. shunt-resistor = <5000>;
  220. };
  221. ina226@47 { /* u88 */
  222. compatible = "ti,ina226";
  223. reg = <0x47>;
  224. shunt-resistor = <5000>;
  225. };
  226. ina226@4a { /* u15 */
  227. compatible = "ti,ina226";
  228. reg = <0x4a>;
  229. shunt-resistor = <5000>;
  230. };
  231. ina226@4b { /* u92 */
  232. compatible = "ti,ina226";
  233. reg = <0x4b>;
  234. shunt-resistor = <5000>;
  235. };
  236. };
  237. i2c@1 {
  238. #address-cells = <1>;
  239. #size-cells = <0>;
  240. reg = <1>;
  241. /* PL_PMBUS */
  242. ina226@40 { /* u79 */
  243. compatible = "ti,ina226";
  244. reg = <0x40>;
  245. shunt-resistor = <2000>;
  246. };
  247. ina226@41 { /* u81 */
  248. compatible = "ti,ina226";
  249. reg = <0x41>;
  250. shunt-resistor = <5000>;
  251. };
  252. ina226@42 { /* u80 */
  253. compatible = "ti,ina226";
  254. reg = <0x42>;
  255. shunt-resistor = <5000>;
  256. };
  257. ina226@43 { /* u84 */
  258. compatible = "ti,ina226";
  259. reg = <0x43>;
  260. shunt-resistor = <5000>;
  261. };
  262. ina226@44 { /* u16 */
  263. compatible = "ti,ina226";
  264. reg = <0x44>;
  265. shunt-resistor = <5000>;
  266. };
  267. ina226@45 { /* u65 */
  268. compatible = "ti,ina226";
  269. reg = <0x45>;
  270. shunt-resistor = <5000>;
  271. };
  272. ina226@46 { /* u74 */
  273. compatible = "ti,ina226";
  274. reg = <0x46>;
  275. shunt-resistor = <5000>;
  276. };
  277. ina226@47 { /* u75 */
  278. compatible = "ti,ina226";
  279. reg = <0x47>;
  280. shunt-resistor = <5000>;
  281. };
  282. };
  283. i2c@2 {
  284. #address-cells = <1>;
  285. #size-cells = <0>;
  286. reg = <2>;
  287. /* MAXIM_PMBUS - 00 */
  288. max15301@a { /* u46 */
  289. compatible = "maxim,max15301";
  290. reg = <0xa>;
  291. };
  292. max15303@b { /* u4 */
  293. compatible = "maxim,max15303";
  294. reg = <0xb>;
  295. };
  296. max15303@10 { /* u13 */
  297. compatible = "maxim,max15303";
  298. reg = <0x10>;
  299. };
  300. max15301@13 { /* u47 */
  301. compatible = "maxim,max15301";
  302. reg = <0x13>;
  303. };
  304. max15303@14 { /* u7 */
  305. compatible = "maxim,max15303";
  306. reg = <0x14>;
  307. };
  308. max15303@15 { /* u6 */
  309. compatible = "maxim,max15303";
  310. reg = <0x15>;
  311. };
  312. max15303@16 { /* u10 */
  313. compatible = "maxim,max15303";
  314. reg = <0x16>;
  315. };
  316. max15303@17 { /* u9 */
  317. compatible = "maxim,max15303";
  318. reg = <0x17>;
  319. };
  320. max15301@18 { /* u63 */
  321. compatible = "maxim,max15301";
  322. reg = <0x18>;
  323. };
  324. max15303@1a { /* u49 */
  325. compatible = "maxim,max15303";
  326. reg = <0x1a>;
  327. };
  328. max15303@1d { /* u18 */
  329. compatible = "maxim,max15303";
  330. reg = <0x1d>;
  331. };
  332. max15303@20 { /* u8 */
  333. compatible = "maxim,max15303";
  334. status = "disabled"; /* unreachable */
  335. reg = <0x20>;
  336. };
  337. max20751@72 { /* u95 */
  338. compatible = "maxim,max20751";
  339. reg = <0x72>;
  340. };
  341. max20751@73 { /* u96 */
  342. compatible = "maxim,max20751";
  343. reg = <0x73>;
  344. };
  345. };
  346. /* Bus 3 is not connected */
  347. };
  348. };
  349. &i2c1 {
  350. status = "okay";
  351. clock-frequency = <400000>;
  352. /* PL i2c via PCA9306 - u45 */
  353. i2c-mux@74 { /* u34 */
  354. compatible = "nxp,pca9548";
  355. #address-cells = <1>;
  356. #size-cells = <0>;
  357. reg = <0x74>;
  358. i2c@0 {
  359. #address-cells = <1>;
  360. #size-cells = <0>;
  361. reg = <0>;
  362. /*
  363. * IIC_EEPROM 1kB memory which uses 256B blocks
  364. * where every block has different address.
  365. * 0 - 256B address 0x54
  366. * 256B - 512B address 0x55
  367. * 512B - 768B address 0x56
  368. * 768B - 1024B address 0x57
  369. */
  370. eeprom: eeprom@54 { /* u23 */
  371. compatible = "atmel,24c08";
  372. reg = <0x54>;
  373. };
  374. };
  375. i2c@1 {
  376. #address-cells = <1>;
  377. #size-cells = <0>;
  378. reg = <1>;
  379. si5341: clock-generator@36 { /* SI5341 - u69 */
  380. compatible = "silabs,si5341";
  381. reg = <0x36>;
  382. };
  383. };
  384. i2c@2 {
  385. #address-cells = <1>;
  386. #size-cells = <0>;
  387. reg = <2>;
  388. si570_1: clock-generator@5d { /* USER SI570 - u42 */
  389. #clock-cells = <0>;
  390. compatible = "silabs,si570";
  391. reg = <0x5d>;
  392. temperature-stability = <50>;
  393. factory-fout = <300000000>;
  394. clock-frequency = <300000000>;
  395. };
  396. };
  397. i2c@3 {
  398. #address-cells = <1>;
  399. #size-cells = <0>;
  400. reg = <3>;
  401. si570_2: clock-generator@5d { /* USER MGT SI570 - u56 */
  402. #clock-cells = <0>;
  403. compatible = "silabs,si570";
  404. reg = <0x5d>;
  405. temperature-stability = <50>; /* copy from zc702 */
  406. factory-fout = <156250000>;
  407. clock-frequency = <148500000>;
  408. };
  409. };
  410. i2c@4 {
  411. #address-cells = <1>;
  412. #size-cells = <0>;
  413. reg = <4>;
  414. si5328: clock-generator@69 {/* SI5328 - u20 */
  415. compatible = "silabs,si5328";
  416. reg = <0x69>;
  417. /*
  418. * Chip has interrupt present connected to PL
  419. * interrupt-parent = <&>;
  420. * interrupts = <>;
  421. */
  422. };
  423. };
  424. /* 5 - 7 unconnected */
  425. };
  426. i2c-mux@75 {
  427. compatible = "nxp,pca9548"; /* u135 */
  428. #address-cells = <1>;
  429. #size-cells = <0>;
  430. reg = <0x75>;
  431. i2c@0 {
  432. #address-cells = <1>;
  433. #size-cells = <0>;
  434. reg = <0>;
  435. /* HPC0_IIC */
  436. };
  437. i2c@1 {
  438. #address-cells = <1>;
  439. #size-cells = <0>;
  440. reg = <1>;
  441. /* HPC1_IIC */
  442. };
  443. i2c@2 {
  444. #address-cells = <1>;
  445. #size-cells = <0>;
  446. reg = <2>;
  447. /* SYSMON */
  448. };
  449. i2c@3 {
  450. #address-cells = <1>;
  451. #size-cells = <0>;
  452. reg = <3>;
  453. /* DDR4 SODIMM */
  454. dev@19 {
  455. reg = <0x19>;
  456. };
  457. dev@30 {
  458. reg = <0x30>;
  459. };
  460. dev@35 {
  461. reg = <0x35>;
  462. };
  463. dev@36 {
  464. reg = <0x36>;
  465. };
  466. dev@51 {
  467. reg = <0x51>;
  468. };
  469. };
  470. i2c@4 {
  471. #address-cells = <1>;
  472. #size-cells = <0>;
  473. reg = <4>;
  474. /* SEP 3 */
  475. };
  476. i2c@5 {
  477. #address-cells = <1>;
  478. #size-cells = <0>;
  479. reg = <5>;
  480. /* SEP 2 */
  481. };
  482. i2c@6 {
  483. #address-cells = <1>;
  484. #size-cells = <0>;
  485. reg = <6>;
  486. /* SEP 1 */
  487. };
  488. i2c@7 {
  489. #address-cells = <1>;
  490. #size-cells = <0>;
  491. reg = <7>;
  492. /* SEP 0 */
  493. };
  494. };
  495. };
  496. &pcie {
  497. status = "okay";
  498. };
  499. &qspi {
  500. status = "okay";
  501. is-dual = <1>;
  502. flash@0 {
  503. compatible = "m25p80"; /* 32MB */
  504. #address-cells = <1>;
  505. #size-cells = <1>;
  506. reg = <0x0>;
  507. spi-tx-bus-width = <1>;
  508. spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
  509. spi-max-frequency = <108000000>; /* Based on DC1 spec */
  510. partition@qspi-fsbl-uboot { /* for testing purpose */
  511. label = "qspi-fsbl-uboot";
  512. reg = <0x0 0x100000>;
  513. };
  514. partition@qspi-linux { /* for testing purpose */
  515. label = "qspi-linux";
  516. reg = <0x100000 0x500000>;
  517. };
  518. partition@qspi-device-tree { /* for testing purpose */
  519. label = "qspi-device-tree";
  520. reg = <0x600000 0x20000>;
  521. };
  522. partition@qspi-rootfs { /* for testing purpose */
  523. label = "qspi-rootfs";
  524. reg = <0x620000 0x5E0000>;
  525. };
  526. };
  527. };
  528. &rtc {
  529. status = "okay";
  530. };
  531. &sata {
  532. status = "okay";
  533. /* SATA OOB timing settings */
  534. ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
  535. ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
  536. ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
  537. ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
  538. ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
  539. ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
  540. ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
  541. ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
  542. phy-names = "sata-phy";
  543. phys = <&lane3 PHY_TYPE_SATA 1 1 125000000>;
  544. };
  545. /* SD1 with level shifter */
  546. &sdhci1 {
  547. status = "okay";
  548. no-1-8-v; /* for 1.0 silicon */
  549. xlnx,mio_bank = <1>;
  550. };
  551. &serdes {
  552. status = "okay";
  553. };
  554. &uart0 {
  555. status = "okay";
  556. };
  557. &uart1 {
  558. status = "okay";
  559. };
  560. /* ULPI SMSC USB3320 */
  561. &usb0 {
  562. status = "okay";
  563. };
  564. &dwc3_0 {
  565. status = "okay";
  566. dr_mode = "host";
  567. snps,usb3_lpm_capable;
  568. phy-names = "usb3-phy";
  569. phys = <&lane2 PHY_TYPE_USB3 0 2 26000000>;
  570. maximum-speed = "super-speed";
  571. };
  572. &watchdog0 {
  573. status = "okay";
  574. };
  575. &xilinx_ams {
  576. status = "okay";
  577. };
  578. &ams_ps {
  579. status = "okay";
  580. };
  581. &ams_pl {
  582. status = "okay";
  583. };
  584. &xilinx_drm {
  585. status = "okay";
  586. clocks = <&si570_1>;
  587. };
  588. &xlnx_dp {
  589. status = "okay";
  590. };
  591. &xlnx_dp_sub {
  592. status = "okay";
  593. xlnx,vid-clk-pl;
  594. };
  595. &xlnx_dp_snd_pcm0 {
  596. status = "okay";
  597. };
  598. &xlnx_dp_snd_pcm1 {
  599. status = "okay";
  600. };
  601. &xlnx_dp_snd_card {
  602. status = "okay";
  603. };
  604. &xlnx_dp_snd_codec0 {
  605. status = "okay";
  606. };
  607. &xlnx_dpdma {
  608. status = "okay";
  609. };