gazerbeam.dts 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. /*
  2. * Gazerbeam CON Device Tree Source
  3. *
  4. * (C) Copyright 2015
  5. * Dirk Eibach, Guntermann & Drunck GmbH, eibach@gdsys.de
  6. *
  7. * This program is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU General Public License as published by the
  9. * Free Software Foundation; either version 2 of the License, or (at your
  10. * option) any later version.
  11. */
  12. #include "gdsys/mpc8308.dtsi"
  13. /include/ "gdsys/gazerbeam-base.dtsi"
  14. /include/ "gdsys/soc/i2c/cirrus-audio-codec.dtsi"
  15. /include/ "gdsys/soc/i2c/dallas-rtc.dtsi"
  16. /include/ "gdsys/soc/lbc/gazerbeam.dtsi"
  17. /include/ "gdsys/soc/nor/flash-80k-partition.dtsi"
  18. &board_lbc {
  19. FPGA0:iocon_uart@1,0 {
  20. reg = <0x1 0x0 0x100000>;
  21. little-endian;
  22. interrupts = <48 0x8>;
  23. interrupt-parent = <&ipic>;
  24. };
  25. FPGA1:iocon_uart@2,0 {
  26. reg = <0x2 0x0 0x100000>;
  27. little-endian;
  28. interrupts = <17 0x8>;
  29. interrupt-parent = <&ipic>;
  30. };
  31. };
  32. &FPGA0 {
  33. compatible = "gdsys,iocon_fpga";
  34. #gpio-cells = <2>;
  35. gpio-controller;
  36. bus = <&FPGA0BUS>;
  37. unit_id = <0>;
  38. fpga-type = <1>;
  39. usb_base = <0x0080>;
  40. audio_base = <0x0040>;
  41. timebase_base = <0x013c>;
  42. /*
  43. * for every interrupt source there must be a dataset specifying
  44. * 1. type (1: standard)
  45. * 2. status register offset
  46. * 3. mask register offset
  47. * 4. default mask
  48. */
  49. fpga_interrupt_sources =
  50. <1 0x000a 0x000c 0x4000>, /* 0: TOP_INTERRUPT */
  51. <1 0x001c 0x001e 0x0000>; /* 1: EXTENDED_INTERRUPT */
  52. /*
  53. * for every interrupt there must be a dataset specifying
  54. * 1. type (1: status, 2: event)
  55. * 2. interrupt source index
  56. * 3. interrupt register bit
  57. * 4. mask register bit
  58. */
  59. #fpga_interrupt_map-cells = <4>;
  60. fpga_interrupt_map =
  61. <1 0 14 14>, /* 0: EXTENDED_INTERRUPT */
  62. <1 0 0 0>, /* 1: VIDEO 0 */
  63. <1 0 1 1>, /* 2: VIDEO 1 */
  64. <1 0 2 2>, /* 3: VIDEO IC 0 */
  65. <1 0 3 3>, /* 4: VIDEO IC 1 */
  66. <1 0 4 4>, /* 5: IIC MAIN */
  67. <1 0 6 6>, /* 6: IIC VIDEO 0 */
  68. <1 0 7 7>, /* 7: IIC VIDEO 1 */
  69. <1 1 0 0>, /* 8: OSD 0 */
  70. <1 1 1 1>, /* 9: OSD 1 */
  71. <1 1 2 2>, /* 10: SPDIF 0 */
  72. <1 1 3 3>, /* 11: SPDIF 1 */
  73. <1 0 12 12>, /* 12: COMM 0 */
  74. <1 0 13 13>, /* 13: COMM 1 */
  75. <1 0 10 10>, /* 14: COMM 2 */
  76. <1 0 11 11>, /* 15: COMM 3 */
  77. <2 0 5 5>, /* 16: MDIO */
  78. <1 0 8 8>, /* 17: PHY */
  79. <1 1 4 4>, /* 18: RS232 */
  80. <1 1 5 5>, /* 19: AUDIO */
  81. <1 1 8 8>, /* 20: PROC_AUDIO */
  82. <1 1 7 7>, /* 21: USB/ETH-UART INT */
  83. <2 1 10 10>, /* 22: AXI Bridge 0 */
  84. <2 1 11 11>, /* 23: AXI Bridge 1 */
  85. <2 1 9 9>, /* 24: USB/ETH-Secondary IIC */
  86. <>;
  87. };
  88. &FPGA1 {
  89. compatible = "gdsys,iocon_fpga";
  90. #gpio-cells = <2>;
  91. gpio-controller;
  92. bus = <&FPGA1BUS>;
  93. unit_id = <1>;
  94. fpga-type = <1>;
  95. usb_base = <0x0070>;
  96. audio_base = <0x0040>;
  97. timebase_base = <0x013c>;
  98. /*
  99. * for every interrupt source there must be a dataset specifying
  100. * 1. type (1: standard)
  101. * 2. status register offset
  102. * 3. mask register offset
  103. * 4. default mask
  104. */
  105. fpga_interrupt_sources =
  106. <1 0x000a 0x000c 0x4000>, /* 0: TOP_INTERRUPT */
  107. <1 0x001c 0x001e 0x0000>; /* 1: EXTENDED_INTERRUPT */
  108. /*
  109. * for every interrupt there must be a dataset specifying
  110. * 1. type (1: status, 2: event)
  111. * 2. interrupt source index
  112. * 3. interrupt register bit
  113. * 4. mask register bit
  114. */
  115. #fpga_interrupt_map-cells = <4>;
  116. fpga_interrupt_map =
  117. <1 0 14 14>, /* 0: EXTENDED_INTERRUPT */
  118. <1 0 0 0>, /* 1: VIDEO 0 */
  119. <1 0 1 1>, /* 2: VIDEO 1 */
  120. <1 0 2 2>, /* 3: VIDEO IC 0 */
  121. <1 0 3 3>, /* 4: VIDEO IC 1 */
  122. <1 0 4 4>, /* 5: IIC MAIN */
  123. <1 0 6 6>, /* 6: IIC VIDEO 0 */
  124. <1 0 7 7>, /* 7: IIC VIDEO 1 */
  125. <1 1 0 0>, /* 8: OSD 0 */
  126. <1 1 1 1>, /* 9: OSD 1 */
  127. <1 1 2 2>, /* 10: SPDIF 0 */
  128. <1 1 3 3>, /* 11: SPDIF 1 */
  129. <1 0 12 12>, /* 12: COMM 0 */
  130. <1 0 13 13>, /* 13: COMM 1 */
  131. <1 0 10 10>, /* 14: COMM 2 */
  132. <1 0 11 11>, /* 15: COMM 3 */
  133. <2 0 5 5>, /* 16: MDIO */
  134. <1 0 8 8>, /* 17: PHY */
  135. <1 1 4 4>, /* 18: RS232 */
  136. <1 1 5 5>, /* 19: AUDIO */
  137. <1 1 8 8>, /* 20: PROC_AUDIO */
  138. <1 1 7 7>, /* 21: USB/ETH-UART INT */
  139. <2 1 10 10>, /* 22: AXI Bridge 0 */
  140. <2 1 11 11>, /* 23: AXI Bridge 1 */
  141. <2 1 9 9>, /* 24: USB/ETH-Secondary IIC */
  142. <>;
  143. };
  144. / {
  145. FPGA0BUS: fpga0bus {
  146. #address-cells = <1>;
  147. #size-cells = <1>;
  148. ranges = <0 0 0x00002000>;
  149. compatible = "gdsys,soc";
  150. fpga0_rs232 {
  151. compatible = "gdsys,ihs_trans_rs232";
  152. reg = <0x50 0x08>;
  153. little-endian;
  154. };
  155. fpga0_uart_usb {
  156. compatible = "gdsys,ihs_simple_uart";
  157. reg = <0xa0 0x08>;
  158. little-endian;
  159. fpga_interrupts = <21>;
  160. line = <0>;
  161. };
  162. fpga0_iic_main {
  163. compatible = "gdsys,ihs_i2cmaster";
  164. reg = <0x60 0x10>;
  165. little-endian;
  166. fpga_interrupts = <5>;
  167. #address-cells = <1>;
  168. #size-cells = <0>;
  169. fpga0_dp_video0_redriver: fpga0_dp_video0_redriver {
  170. compatible = "ti,sn75dp130";
  171. reg = <0x2c>;
  172. eq-i2c-enable = <3 2 1 0
  173. 3 2 1 0
  174. 3 2 1 0
  175. 3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
  176. };
  177. fpga0_dp_video1_redriver: fpga0_dp_video1_redriver {
  178. compatible = "ti,sn75dp130";
  179. reg = <0x2e>;
  180. eq-i2c-enable = <3 2 1 0
  181. 3 2 1 0
  182. 3 2 1 0
  183. 3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
  184. };
  185. lm77@48 {
  186. compatible = "national,lm77";
  187. reg = <0x48>;
  188. };
  189. ads1015@49 {
  190. compatible = "ti,ads1015";
  191. reg = <0x49>;
  192. };
  193. ads1015@4b {
  194. compatible = "ti,ads1015";
  195. reg = <0x4b>;
  196. };
  197. };
  198. fpga0_video0 {
  199. compatible = "gdsys,ihs_video_out";
  200. reg = <0x100 0x40>;
  201. little-endian;
  202. fpga_interrupts = <1 8>; /* VIDEO OSD */
  203. osd_base = <0x180>;
  204. osd_buffer_base = <0x1000>;
  205. spdif_audio_base = <0x1e0>;
  206. video_index = <0>;
  207. video_id = <0>;
  208. fpga-force-pos-pol;
  209. sync-source;
  210. fpga-pb-pixels = <2730>; /* 8192 / 3 */
  211. fpga-ra-lines = <2>;
  212. video_tx = <&fpga0_dp_video0>;
  213. clk_gen = <&fpga0_video0_clkgen>;
  214. ddc_ci = <&fpga0_dp_video0>;
  215. };
  216. fpga0_iic_video0 {
  217. compatible = "gdsys,ihs_i2cmaster";
  218. reg = <0x1c0 0x10>;
  219. little-endian;
  220. fpga_interrupts = <6>;
  221. #address-cells = <1>;
  222. #size-cells = <0>;
  223. fpga0_video0_clkgen: fpga0_video0_clkgen {
  224. compatible = "idt,ics8n3qv01";
  225. reg = <0x6e>;
  226. channel = <0>;
  227. };
  228. };
  229. fpga0_axi_video0 {
  230. #address-cells = <1>;
  231. #size-cells = <1>;
  232. compatible = "gdsys,ihs_axi";
  233. reg = <0x170 0x10>;
  234. little-endian;
  235. fpga_interrupts = <22>;
  236. fpga0_dp_video0: fpga0_dp_video0 {
  237. compatible = "gdsys,logicore_dp_tx";
  238. reg = <0x44a10000 0x1000>;
  239. little-endian;
  240. redriver = <&fpga0_dp_video0_redriver>;
  241. video_id = <0>;
  242. };
  243. };
  244. fpga0_video1 {
  245. compatible = "gdsys,ihs_video_out";
  246. reg = <0x200 0x40>;
  247. little-endian;
  248. fpga_interrupts = <2 9>; /* VIDEO OSD */
  249. osd_base = <0x280>;
  250. osd_buffer_base = <0x2000>;
  251. spdif_audio_base = <0x2e0>;
  252. video_index = <1>;
  253. video_id = <1>;
  254. fpga-force-pos-pol;
  255. sync-source;
  256. fpga-pb-pixels = <2730>; /* 8192 / 3 */
  257. fpga-ra-lines = <2>;
  258. video_tx = <&fpga0_dp_video1>;
  259. clk_gen = <&fpga0_video1_clkgen>;
  260. ddc_ci = <&fpga0_dp_video1>;
  261. };
  262. fpga0_iic_video1 {
  263. compatible = "gdsys,ihs_i2cmaster";
  264. reg = <0x2c0 0x10>;
  265. little-endian;
  266. fpga_interrupts = <7>;
  267. #address-cells = <1>;
  268. #size-cells = <0>;
  269. fpga0_video1_clkgen: fpga0_video1_clkgen {
  270. compatible = "idt,ics8n3qv01";
  271. reg = <0x6e>;
  272. channel = <1>;
  273. };
  274. };
  275. fpga0_axi_video1 {
  276. #address-cells = <1>;
  277. #size-cells = <1>;
  278. compatible = "gdsys,ihs_axi";
  279. reg = <0x270 0x10>;
  280. little-endian;
  281. fpga_interrupts = <23>;
  282. fpga0_dp_video1: fpga0_dp_video1 {
  283. compatible = "gdsys,logicore_dp_tx";
  284. reg = <0x44a10000 0x1000>;
  285. little-endian;
  286. redriver = <&fpga0_dp_video1_redriver>;
  287. video_id = <1>;
  288. };
  289. };
  290. fpga0_iic_usb {
  291. compatible = "gdsys,ihs_i2cmaster";
  292. reg = <0xb0 0x10>;
  293. little-endian;
  294. fpga_interrupts = <24>;
  295. #address-cells = <1>;
  296. #size-cells = <0>;
  297. pca9555@20 {
  298. compatible = "nxp,pca9555";
  299. reg = <0x20>;
  300. #gpio-cells = <2>;
  301. gpio-controller;
  302. };
  303. };
  304. fpga0_ep0 {
  305. compatible = "gdsys,io-endpoint";
  306. reg = < 0x020 0x10
  307. 0x320 0x10
  308. 0x340 0x10
  309. 0x360 0x10>;
  310. little-endian;
  311. irq-model-local;
  312. fpga_interrupts = <12 13 14 15>;
  313. pollcycle = <200>;
  314. nprot_channel = <16>;
  315. uart_line = <0>;
  316. ep_index = <0>;
  317. line_protocol = <1>;
  318. };
  319. fpga0_mdio {
  320. compatible = "gdsys,ihs_mdiomaster";
  321. reg = <0x0058 0x10>;
  322. little-endian;
  323. fpga_interrupts = <16>;
  324. #address-cells = <1>;
  325. #size-cells = <0>;
  326. fpga0_phy0 {
  327. compatible = "ethernet-phy-ieee802.3-c45";
  328. device_type ="ethernet-phy";
  329. reg = <0>;
  330. };
  331. fpga0_phy1 {
  332. compatible = "ethernet-phy-ieee802.3-c45";
  333. device_type ="ethernet-phy";
  334. reg = <1>;
  335. };
  336. fpga0_phy2 {
  337. compatible = "ethernet-phy-ieee802.3-c45";
  338. device_type ="ethernet-phy";
  339. reg = <2>;
  340. };
  341. fpga0_phy3 {
  342. compatible = "ethernet-phy-ieee802.3-c45";
  343. device_type ="ethernet-phy";
  344. reg = <3>;
  345. };
  346. };
  347. };
  348. FPGA1BUS: fpga1bus {
  349. #address-cells = <1>;
  350. #size-cells = <1>;
  351. ranges = <0 0 0x00002000>;
  352. compatible = "gdsys,soc";
  353. fpga1_uart_usb {
  354. compatible = "gdsys,ihs_simple_uart";
  355. reg = <0xa0 0x08>;
  356. little-endian;
  357. fpga_interrupts = <21>;
  358. line = <4>; /* TODO check and FIX */
  359. };
  360. fpga1_iic_main {
  361. compatible = "gdsys,ihs_i2cmaster";
  362. reg = <0x60 0x10>;
  363. little-endian;
  364. fpga_interrupts = <5>;
  365. #address-cells = <1>;
  366. #size-cells = <0>;
  367. fpga1_dp_video0_redriver: fpga1_dp_video0_redriver {
  368. compatible = "ti,sn75dp130";
  369. reg = <0x2c>;
  370. eq-i2c-enable = <3 2 1 0
  371. 3 2 1 0
  372. 3 2 1 0
  373. 3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
  374. };
  375. fpga1_dp_video1_redriver: fpga1_dp_video1_redriver {
  376. compatible = "ti,sn75dp130";
  377. reg = <0x2e>;
  378. eq-i2c-enable = <3 2 1 0
  379. 3 2 1 0
  380. 3 2 1 0
  381. 3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
  382. };
  383. lm77@48 {
  384. compatible = "national,lm77";
  385. reg = <0x48>;
  386. };
  387. ads1015@49 {
  388. compatible = "ti,ads1015";
  389. reg = <0x49>;
  390. };
  391. ads1015@4b {
  392. compatible = "ti,ads1015";
  393. reg = <0x4b>;
  394. };
  395. };
  396. fpga1_video0 {
  397. compatible = "gdsys,ihs_video_out";
  398. reg = <0x100 0x40>;
  399. little-endian;
  400. fpga_interrupts = <1 8>; /* VIDEO OSD */
  401. osd_base = <0x180>;
  402. osd_buffer_base = <0x1000>;
  403. spdif_audio_base = <0x1e0>;
  404. video_index = <0>;
  405. video_id = <4>;
  406. fpga-force-pos-pol;
  407. sync-source;
  408. fpga-pb-pixels = <2730>; /* 8192 / 3 */
  409. fpga-ra-lines = <2>;
  410. video_tx = <&fpga1_dp_video0>;
  411. clk_gen = <&fpga1_video0_clkgen>;
  412. ddc_ci = <&fpga1_dp_video0>;
  413. };
  414. fpga1_iic_video0 {
  415. compatible = "gdsys,ihs_i2cmaster";
  416. reg = <0x1c0 0x10>;
  417. little-endian;
  418. fpga_interrupts = <6>;
  419. #address-cells = <1>;
  420. #size-cells = <0>;
  421. fpga1_video0_clkgen: fpga1_video0_clkgen {
  422. compatible = "idt,ics8n3qv01";
  423. reg = <0x6e>;
  424. channel = <4>;
  425. };
  426. };
  427. fpga1_axi_video0 {
  428. #address-cells = <1>;
  429. #size-cells = <1>;
  430. compatible = "gdsys,ihs_axi";
  431. reg = <0x170 0x10>;
  432. little-endian;
  433. fpga_interrupts = <22>;
  434. fpga1_dp_video0: fpga1_dp_video0 {
  435. compatible = "gdsys,logicore_dp_tx";
  436. reg = <0x44a10000 0x1000>;
  437. little-endian;
  438. redriver = <&fpga1_dp_video0_redriver>;
  439. video_id = <4>;
  440. };
  441. };
  442. fpga1_video1 {
  443. compatible = "gdsys,ihs_video_out";
  444. reg = <0x200 0x40>;
  445. little-endian;
  446. fpga_interrupts = <2 9>; /* VIDEO OSD */
  447. osd_base = <0x280>;
  448. osd_buffer_base = <0x2000>;
  449. spdif_audio_base = <0x2e0>;
  450. video_index = <1>;
  451. video_id = <5>;
  452. fpga-force-pos-pol;
  453. sync-source;
  454. fpga-pb-pixels = <2730>; /* 8192 / 3 */
  455. fpga-ra-lines = <2>;
  456. video_tx = <&fpga1_dp_video1>;
  457. clk_gen = <&fpga1_video1_clkgen>;
  458. ddc_ci = <&fpga1_dp_video1>;
  459. };
  460. fpga1_iic_video1 {
  461. compatible = "gdsys,ihs_i2cmaster";
  462. reg = <0x2c0 0x10>;
  463. little-endian;
  464. fpga_interrupts = <7>;
  465. #address-cells = <1>;
  466. #size-cells = <0>;
  467. fpga1_video1_clkgen: fpga1_video1_clkgen {
  468. compatible = "idt,ics8n3qv01";
  469. reg = <0x6e>;
  470. channel = <5>;
  471. };
  472. };
  473. fpga1_axi_video1 {
  474. #address-cells = <1>;
  475. #size-cells = <1>;
  476. compatible = "gdsys,ihs_axi";
  477. reg = <0x270 0x10>;
  478. little-endian;
  479. fpga_interrupts = <23>;
  480. fpga1_dp_video1: fpga1_dp_video1 {
  481. compatible = "gdsys,logicore_dp_tx";
  482. reg = <0x44a10000 0x1000>;
  483. little-endian;
  484. redriver = <&fpga1_dp_video1_redriver>;
  485. video_id = <5>;
  486. };
  487. };
  488. fpga1_iic_usb {
  489. compatible = "gdsys,ihs_i2cmaster";
  490. reg = <0xb0 0x10>;
  491. little-endian;
  492. fpga_interrupts = <24>;
  493. #address-cells = <1>;
  494. #size-cells = <0>;
  495. pca9555@20 {
  496. compatible = "nxp,pca9555";
  497. reg = <0x20>;
  498. #gpio-cells = <2>;
  499. gpio-controller;
  500. };
  501. };
  502. fpga1_ep0 {
  503. compatible = "gdsys,io-endpoint";
  504. reg = < 0x020 0x10
  505. 0x320 0x10
  506. 0x340 0x10
  507. 0x360 0x10>;
  508. little-endian;
  509. irq-model-local;
  510. fpga_interrupts = <12 13 14 15>;
  511. pollcycle = <200>;
  512. nprot_channel = <17>;
  513. uart_line = <1>;
  514. ep_index = <0>;
  515. line_protocol = <1>;
  516. };
  517. fpga1_mdio {
  518. compatible = "gdsys,ihs_mdiomaster";
  519. reg = <0x0058 0x10>;
  520. little-endian;
  521. fpga_interrupts = <16>;
  522. #address-cells = <1>;
  523. #size-cells = <0>;
  524. fpga1_phy0 {
  525. compatible = "ethernet-phy-ieee802.3-c45";
  526. device_type ="ethernet-phy";
  527. reg = <0>;
  528. };
  529. fpga1_phy1 {
  530. compatible = "ethernet-phy-ieee802.3-c45";
  531. device_type ="ethernet-phy";
  532. reg = <1>;
  533. };
  534. fpga1_phy2 {
  535. compatible = "ethernet-phy-ieee802.3-c45";
  536. device_type ="ethernet-phy";
  537. reg = <2>;
  538. };
  539. fpga1_phy3 {
  540. compatible = "ethernet-phy-ieee802.3-c45";
  541. device_type ="ethernet-phy";
  542. reg = <3>;
  543. };
  544. };
  545. };
  546. };
  547. #include "gdsys/gazerbeam-uboot.dtsi"