arm-realview-eb.dtsi 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  1. /*
  2. * Copyright 2016 Linaro Ltd
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  17. * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. * THE SOFTWARE.
  21. */
  22. #include <dt-bindings/interrupt-controller/irq.h>
  23. #include <dt-bindings/gpio/gpio.h>
  24. / {
  25. #address-cells = <1>;
  26. #size-cells = <1>;
  27. compatible = "arm,realview-eb";
  28. chosen { };
  29. aliases {
  30. serial0 = &serial0;
  31. serial1 = &serial1;
  32. serial2 = &serial2;
  33. serial3 = &serial3;
  34. i2c0 = &i2c;
  35. };
  36. memory {
  37. device_type = "memory";
  38. /* 128 MiB memory @ 0x0 */
  39. reg = <0x00000000 0x08000000>;
  40. };
  41. /* The voltage to the MMC card is hardwired at 3.3V */
  42. vmmc: fixedregulator@0 {
  43. compatible = "regulator-fixed";
  44. regulator-name = "vmmc";
  45. regulator-min-microvolt = <3300000>;
  46. regulator-max-microvolt = <3300000>;
  47. regulator-boot-on;
  48. };
  49. xtal24mhz: xtal24mhz@24M {
  50. #clock-cells = <0>;
  51. compatible = "fixed-clock";
  52. clock-frequency = <24000000>;
  53. };
  54. timclk: timclk@1M {
  55. #clock-cells = <0>;
  56. compatible = "fixed-factor-clock";
  57. clock-div = <24>;
  58. clock-mult = <1>;
  59. clocks = <&xtal24mhz>;
  60. };
  61. mclk: mclk@24M {
  62. #clock-cells = <0>;
  63. compatible = "fixed-factor-clock";
  64. clock-div = <1>;
  65. clock-mult = <1>;
  66. clocks = <&xtal24mhz>;
  67. };
  68. kmiclk: kmiclk@24M {
  69. #clock-cells = <0>;
  70. compatible = "fixed-factor-clock";
  71. clock-div = <1>;
  72. clock-mult = <1>;
  73. clocks = <&xtal24mhz>;
  74. };
  75. sspclk: sspclk@24M {
  76. #clock-cells = <0>;
  77. compatible = "fixed-factor-clock";
  78. clock-div = <1>;
  79. clock-mult = <1>;
  80. clocks = <&xtal24mhz>;
  81. };
  82. uartclk: uartclk@24M {
  83. #clock-cells = <0>;
  84. compatible = "fixed-factor-clock";
  85. clock-div = <1>;
  86. clock-mult = <1>;
  87. clocks = <&xtal24mhz>;
  88. };
  89. wdogclk: wdogclk@24M {
  90. #clock-cells = <0>;
  91. compatible = "fixed-factor-clock";
  92. clock-div = <1>;
  93. clock-mult = <1>;
  94. clocks = <&xtal24mhz>;
  95. };
  96. /* FIXME: this actually hangs off the PLL clocks */
  97. pclk: pclk@0 {
  98. #clock-cells = <0>;
  99. compatible = "fixed-clock";
  100. clock-frequency = <0>;
  101. };
  102. flash0@40000000 {
  103. /* 2 * 32MiB NOR Flash memory */
  104. compatible = "arm,versatile-flash", "cfi-flash";
  105. reg = <0x40000000 0x04000000>;
  106. bank-width = <4>;
  107. partitions {
  108. compatible = "arm,arm-firmware-suite";
  109. };
  110. };
  111. flash1@44000000 {
  112. /* 2 * 32MiB NOR Flash memory */
  113. compatible = "arm,versatile-flash", "cfi-flash";
  114. reg = <0x44000000 0x04000000>;
  115. bank-width = <4>;
  116. partitions {
  117. compatible = "arm,arm-firmware-suite";
  118. };
  119. };
  120. /* SMSC LAN91C111 ethernet with PHY and EEPROM */
  121. ethernet: ethernet@4e000000 {
  122. compatible = "smsc,lan91c111";
  123. reg = <0x4e000000 0x10000>;
  124. /*
  125. * This means the adapter can be accessed with 8, 16 or
  126. * 32 bit reads/writes.
  127. */
  128. reg-io-width = <7>;
  129. };
  130. usb: usb@4f000000 {
  131. compatible = "nxp,usb-isp1761";
  132. reg = <0x4f000000 0x20000>;
  133. dr_mode = "peripheral";
  134. };
  135. bridge {
  136. compatible = "ti,ths8134a", "ti,ths8134";
  137. #address-cells = <1>;
  138. #size-cells = <0>;
  139. ports {
  140. #address-cells = <1>;
  141. #size-cells = <0>;
  142. port@0 {
  143. reg = <0>;
  144. vga_bridge_in: endpoint {
  145. remote-endpoint = <&clcd_pads>;
  146. };
  147. };
  148. port@1 {
  149. reg = <1>;
  150. vga_bridge_out: endpoint {
  151. remote-endpoint = <&vga_con_in>;
  152. };
  153. };
  154. };
  155. };
  156. vga {
  157. compatible = "vga-connector";
  158. port {
  159. vga_con_in: endpoint {
  160. remote-endpoint = <&vga_bridge_out>;
  161. };
  162. };
  163. };
  164. /* These peripherals are inside the FPGA */
  165. fpga {
  166. #address-cells = <1>;
  167. #size-cells = <1>;
  168. compatible = "simple-bus";
  169. ranges;
  170. syscon: syscon@10000000 {
  171. compatible = "arm,realview-eb-syscon", "syscon", "simple-mfd";
  172. reg = <0x10000000 0x1000>;
  173. ranges = <0x0 0x10000000 0x1000>;
  174. #address-cells = <1>;
  175. #size-cells = <1>;
  176. led@8,0 {
  177. compatible = "register-bit-led";
  178. reg = <0x08 0x04>;
  179. offset = <0x08>;
  180. mask = <0x01>;
  181. label = "versatile:0";
  182. linux,default-trigger = "heartbeat";
  183. default-state = "on";
  184. };
  185. led@8,1 {
  186. compatible = "register-bit-led";
  187. reg = <0x08 0x04>;
  188. offset = <0x08>;
  189. mask = <0x02>;
  190. label = "versatile:1";
  191. linux,default-trigger = "mmc0";
  192. default-state = "off";
  193. };
  194. led@8,2 {
  195. compatible = "register-bit-led";
  196. reg = <0x08 0x04>;
  197. offset = <0x08>;
  198. mask = <0x04>;
  199. label = "versatile:2";
  200. linux,default-trigger = "cpu0";
  201. default-state = "off";
  202. };
  203. led@8,3 {
  204. compatible = "register-bit-led";
  205. reg = <0x08 0x04>;
  206. offset = <0x08>;
  207. mask = <0x08>;
  208. label = "versatile:3";
  209. default-state = "off";
  210. };
  211. led@8,4 {
  212. compatible = "register-bit-led";
  213. reg = <0x08 0x04>;
  214. offset = <0x08>;
  215. mask = <0x10>;
  216. label = "versatile:4";
  217. default-state = "off";
  218. };
  219. led@8,5 {
  220. compatible = "register-bit-led";
  221. reg = <0x08 0x04>;
  222. offset = <0x08>;
  223. mask = <0x20>;
  224. label = "versatile:5";
  225. default-state = "off";
  226. };
  227. led@8,6 {
  228. compatible = "register-bit-led";
  229. reg = <0x08 0x04>;
  230. offset = <0x08>;
  231. mask = <0x40>;
  232. label = "versatile:6";
  233. default-state = "off";
  234. };
  235. led@8,7 {
  236. compatible = "register-bit-led";
  237. reg = <0x08 0x04>;
  238. offset = <0x08>;
  239. mask = <0x80>;
  240. label = "versatile:7";
  241. default-state = "off";
  242. };
  243. oscclk0: clock-controller@c {
  244. compatible = "arm,syscon-icst307";
  245. reg = <0x0c 0x04>;
  246. #clock-cells = <0>;
  247. lock-offset = <0x20>;
  248. vco-offset = <0x0C>;
  249. clocks = <&xtal24mhz>;
  250. };
  251. oscclk1: clock-controller@10 {
  252. compatible = "arm,syscon-icst307";
  253. reg = <0x10 0x04>;
  254. #clock-cells = <0>;
  255. lock-offset = <0x20>;
  256. vco-offset = <0x10>;
  257. clocks = <&xtal24mhz>;
  258. };
  259. oscclk2: clock-controller@14 {
  260. compatible = "arm,syscon-icst307";
  261. reg = <0x14 0x04>;
  262. #clock-cells = <0>;
  263. lock-offset = <0x20>;
  264. vco-offset = <0x14>;
  265. clocks = <&xtal24mhz>;
  266. };
  267. oscclk3: clock-controller@18 {
  268. compatible = "arm,syscon-icst307";
  269. reg = <0x18 0x04>;
  270. #clock-cells = <0>;
  271. lock-offset = <0x20>;
  272. vco-offset = <0x18>;
  273. clocks = <&xtal24mhz>;
  274. };
  275. oscclk4: clock-controller@1c {
  276. compatible = "arm,syscon-icst307";
  277. reg = <0x1c 0x04>;
  278. #clock-cells = <0>;
  279. lock-offset = <0x20>;
  280. vco-offset = <0x1c>;
  281. clocks = <&xtal24mhz>;
  282. };
  283. };
  284. i2c: i2c@10002000 {
  285. #address-cells = <1>;
  286. #size-cells = <0>;
  287. compatible = "arm,versatile-i2c";
  288. reg = <0x10002000 0x1000>;
  289. rtc@68 {
  290. compatible = "dallas,ds1338";
  291. reg = <0x68>;
  292. };
  293. };
  294. aaci: aaci@10004000 {
  295. compatible = "arm,pl041", "arm,primecell";
  296. reg = <0x10004000 0x1000>;
  297. clocks = <&pclk>;
  298. clock-names = "apb_pclk";
  299. };
  300. mmc: mmcsd@10005000 {
  301. compatible = "arm,pl18x", "arm,primecell";
  302. reg = <0x10005000 0x1000>;
  303. /* Due to frequent FIFO overruns, use just 500 kHz */
  304. max-frequency = <500000>;
  305. bus-width = <4>;
  306. cap-sd-highspeed;
  307. cap-mmc-highspeed;
  308. clocks = <&mclk>, <&pclk>;
  309. clock-names = "mclk", "apb_pclk";
  310. vmmc-supply = <&vmmc>;
  311. cd-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
  312. wp-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
  313. };
  314. kmi0: kmi@10006000 {
  315. compatible = "arm,pl050", "arm,primecell";
  316. reg = <0x10006000 0x1000>;
  317. clocks = <&kmiclk>, <&pclk>;
  318. clock-names = "KMIREFCLK", "apb_pclk";
  319. };
  320. kmi1: kmi@10007000 {
  321. compatible = "arm,pl050", "arm,primecell";
  322. reg = <0x10007000 0x1000>;
  323. clocks = <&kmiclk>, <&pclk>;
  324. clock-names = "KMIREFCLK", "apb_pclk";
  325. };
  326. charlcd: fpga_charlcd: charlcd@10008000 {
  327. compatible = "arm,versatile-lcd";
  328. reg = <0x10008000 0x1000>;
  329. clocks = <&pclk>;
  330. clock-names = "apb_pclk";
  331. };
  332. serial0: serial@10009000 {
  333. compatible = "arm,pl011", "arm,primecell";
  334. reg = <0x10009000 0x1000>;
  335. clocks = <&uartclk>, <&pclk>;
  336. clock-names = "uartclk", "apb_pclk";
  337. };
  338. serial1: serial@1000a000 {
  339. compatible = "arm,pl011", "arm,primecell";
  340. reg = <0x1000a000 0x1000>;
  341. clocks = <&uartclk>, <&pclk>;
  342. clock-names = "uartclk", "apb_pclk";
  343. };
  344. serial2: serial@1000b000 {
  345. compatible = "arm,pl011", "arm,primecell";
  346. reg = <0x1000b000 0x1000>;
  347. clocks = <&uartclk>, <&pclk>;
  348. clock-names = "uartclk", "apb_pclk";
  349. };
  350. serial3: serial@1000c000 {
  351. compatible = "arm,pl011", "arm,primecell";
  352. reg = <0x1000c000 0x1000>;
  353. clocks = <&uartclk>, <&pclk>;
  354. clock-names = "uartclk", "apb_pclk";
  355. };
  356. ssp: spi@1000d000 {
  357. compatible = "arm,pl022", "arm,primecell";
  358. reg = <0x1000d000 0x1000>;
  359. clocks = <&sspclk>, <&pclk>;
  360. clock-names = "sspclk", "apb_pclk";
  361. };
  362. wdog: watchdog@10010000 {
  363. compatible = "arm,sp805", "arm,primecell";
  364. reg = <0x10010000 0x1000>;
  365. clocks = <&wdogclk>, <&pclk>;
  366. clock-names = "wdog_clk", "apb_pclk";
  367. status = "disabled";
  368. };
  369. timer01: timer@10011000 {
  370. compatible = "arm,sp804", "arm,primecell";
  371. reg = <0x10011000 0x1000>;
  372. clocks = <&timclk>, <&timclk>, <&pclk>;
  373. clock-names = "timer1", "timer2", "apb_pclk";
  374. };
  375. timer23: timer@10012000 {
  376. compatible = "arm,sp804", "arm,primecell";
  377. reg = <0x10012000 0x1000>;
  378. clocks = <&timclk>, <&timclk>, <&pclk>;
  379. clock-names = "timer1", "timer2", "apb_pclk";
  380. };
  381. gpio0: gpio@10013000 {
  382. compatible = "arm,pl061", "arm,primecell";
  383. reg = <0x10013000 0x1000>;
  384. gpio-controller;
  385. #gpio-cells = <2>;
  386. interrupt-controller;
  387. #interrupt-cells = <2>;
  388. clocks = <&pclk>;
  389. clock-names = "apb_pclk";
  390. };
  391. gpio1: gpio@10014000 {
  392. compatible = "arm,pl061", "arm,primecell";
  393. reg = <0x10014000 0x1000>;
  394. gpio-controller;
  395. #gpio-cells = <2>;
  396. interrupt-controller;
  397. #interrupt-cells = <2>;
  398. clocks = <&pclk>;
  399. clock-names = "apb_pclk";
  400. };
  401. gpio2: gpio@10015000 {
  402. compatible = "arm,pl061", "arm,primecell";
  403. reg = <0x10015000 0x1000>;
  404. gpio-controller;
  405. #gpio-cells = <2>;
  406. interrupt-controller;
  407. #interrupt-cells = <2>;
  408. clocks = <&pclk>;
  409. clock-names = "apb_pclk";
  410. };
  411. rtc: rtc@10017000 {
  412. compatible = "arm,pl031", "arm,primecell";
  413. reg = <0x10017000 0x1000>;
  414. clocks = <&pclk>;
  415. clock-names = "apb_pclk";
  416. };
  417. clcd: clcd@10020000 {
  418. compatible = "arm,pl111", "arm,primecell";
  419. reg = <0x10020000 0x1000>;
  420. interrupt-names = "combined";
  421. clocks = <&oscclk0>, <&pclk>;
  422. clock-names = "clcdclk", "apb_pclk";
  423. /* 1024x768 16bpp @65MHz works fine */
  424. max-memory-bandwidth = <95000000>;
  425. port {
  426. clcd_pads: endpoint {
  427. remote-endpoint = <&vga_bridge_in>;
  428. arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
  429. };
  430. };
  431. };
  432. };
  433. };