r8a7779.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. /*
  2. * Device Tree Source for Renesas r8a7779
  3. *
  4. * Copyright (C) 2013 Renesas Solutions Corp.
  5. * Copyright (C) 2013 Simon Horman
  6. *
  7. * This file is licensed under the terms of the GNU General Public License
  8. * version 2. This program is licensed "as is" without any warranty of any
  9. * kind, whether express or implied.
  10. */
  11. /include/ "skeleton.dtsi"
  12. #include <dt-bindings/clock/r8a7779-clock.h>
  13. #include <dt-bindings/interrupt-controller/irq.h>
  14. / {
  15. compatible = "renesas,r8a7779";
  16. interrupt-parent = <&gic>;
  17. cpus {
  18. #address-cells = <1>;
  19. #size-cells = <0>;
  20. cpu@0 {
  21. device_type = "cpu";
  22. compatible = "arm,cortex-a9";
  23. reg = <0>;
  24. clock-frequency = <1000000000>;
  25. };
  26. cpu@1 {
  27. device_type = "cpu";
  28. compatible = "arm,cortex-a9";
  29. reg = <1>;
  30. clock-frequency = <1000000000>;
  31. };
  32. cpu@2 {
  33. device_type = "cpu";
  34. compatible = "arm,cortex-a9";
  35. reg = <2>;
  36. clock-frequency = <1000000000>;
  37. };
  38. cpu@3 {
  39. device_type = "cpu";
  40. compatible = "arm,cortex-a9";
  41. reg = <3>;
  42. clock-frequency = <1000000000>;
  43. };
  44. };
  45. aliases {
  46. spi0 = &hspi0;
  47. spi1 = &hspi1;
  48. spi2 = &hspi2;
  49. };
  50. gic: interrupt-controller@f0001000 {
  51. compatible = "arm,cortex-a9-gic";
  52. #interrupt-cells = <3>;
  53. interrupt-controller;
  54. reg = <0xf0001000 0x1000>,
  55. <0xf0000100 0x100>;
  56. };
  57. gpio0: gpio@ffc40000 {
  58. compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
  59. reg = <0xffc40000 0x2c>;
  60. interrupts = <0 141 IRQ_TYPE_LEVEL_HIGH>;
  61. #gpio-cells = <2>;
  62. gpio-controller;
  63. gpio-ranges = <&pfc 0 0 32>;
  64. #interrupt-cells = <2>;
  65. interrupt-controller;
  66. };
  67. gpio1: gpio@ffc41000 {
  68. compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
  69. reg = <0xffc41000 0x2c>;
  70. interrupts = <0 142 IRQ_TYPE_LEVEL_HIGH>;
  71. #gpio-cells = <2>;
  72. gpio-controller;
  73. gpio-ranges = <&pfc 0 32 32>;
  74. #interrupt-cells = <2>;
  75. interrupt-controller;
  76. };
  77. gpio2: gpio@ffc42000 {
  78. compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
  79. reg = <0xffc42000 0x2c>;
  80. interrupts = <0 143 IRQ_TYPE_LEVEL_HIGH>;
  81. #gpio-cells = <2>;
  82. gpio-controller;
  83. gpio-ranges = <&pfc 0 64 32>;
  84. #interrupt-cells = <2>;
  85. interrupt-controller;
  86. };
  87. gpio3: gpio@ffc43000 {
  88. compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
  89. reg = <0xffc43000 0x2c>;
  90. interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>;
  91. #gpio-cells = <2>;
  92. gpio-controller;
  93. gpio-ranges = <&pfc 0 96 32>;
  94. #interrupt-cells = <2>;
  95. interrupt-controller;
  96. };
  97. gpio4: gpio@ffc44000 {
  98. compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
  99. reg = <0xffc44000 0x2c>;
  100. interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>;
  101. #gpio-cells = <2>;
  102. gpio-controller;
  103. gpio-ranges = <&pfc 0 128 32>;
  104. #interrupt-cells = <2>;
  105. interrupt-controller;
  106. };
  107. gpio5: gpio@ffc45000 {
  108. compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
  109. reg = <0xffc45000 0x2c>;
  110. interrupts = <0 146 IRQ_TYPE_LEVEL_HIGH>;
  111. #gpio-cells = <2>;
  112. gpio-controller;
  113. gpio-ranges = <&pfc 0 160 32>;
  114. #interrupt-cells = <2>;
  115. interrupt-controller;
  116. };
  117. gpio6: gpio@ffc46000 {
  118. compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
  119. reg = <0xffc46000 0x2c>;
  120. interrupts = <0 147 IRQ_TYPE_LEVEL_HIGH>;
  121. #gpio-cells = <2>;
  122. gpio-controller;
  123. gpio-ranges = <&pfc 0 192 9>;
  124. #interrupt-cells = <2>;
  125. interrupt-controller;
  126. };
  127. irqpin0: irqpin@fe780010 {
  128. compatible = "renesas,intc-irqpin-r8a7779", "renesas,intc-irqpin";
  129. #interrupt-cells = <2>;
  130. status = "disabled";
  131. interrupt-controller;
  132. reg = <0xfe78001c 4>,
  133. <0xfe780010 4>,
  134. <0xfe780024 4>,
  135. <0xfe780044 4>,
  136. <0xfe780064 4>;
  137. interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH
  138. 0 28 IRQ_TYPE_LEVEL_HIGH
  139. 0 29 IRQ_TYPE_LEVEL_HIGH
  140. 0 30 IRQ_TYPE_LEVEL_HIGH>;
  141. sense-bitfield-width = <2>;
  142. };
  143. i2c0: i2c@ffc70000 {
  144. #address-cells = <1>;
  145. #size-cells = <0>;
  146. compatible = "renesas,i2c-r8a7779";
  147. reg = <0xffc70000 0x1000>;
  148. interrupts = <0 79 IRQ_TYPE_LEVEL_HIGH>;
  149. clocks = <&mstp0_clks R8A7779_CLK_I2C0>;
  150. status = "disabled";
  151. };
  152. i2c1: i2c@ffc71000 {
  153. #address-cells = <1>;
  154. #size-cells = <0>;
  155. compatible = "renesas,i2c-r8a7779";
  156. reg = <0xffc71000 0x1000>;
  157. interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>;
  158. clocks = <&mstp0_clks R8A7779_CLK_I2C1>;
  159. status = "disabled";
  160. };
  161. i2c2: i2c@ffc72000 {
  162. #address-cells = <1>;
  163. #size-cells = <0>;
  164. compatible = "renesas,i2c-r8a7779";
  165. reg = <0xffc72000 0x1000>;
  166. interrupts = <0 80 IRQ_TYPE_LEVEL_HIGH>;
  167. clocks = <&mstp0_clks R8A7779_CLK_I2C2>;
  168. status = "disabled";
  169. };
  170. i2c3: i2c@ffc73000 {
  171. #address-cells = <1>;
  172. #size-cells = <0>;
  173. compatible = "renesas,i2c-r8a7779";
  174. reg = <0xffc73000 0x1000>;
  175. interrupts = <0 81 IRQ_TYPE_LEVEL_HIGH>;
  176. clocks = <&mstp0_clks R8A7779_CLK_I2C3>;
  177. status = "disabled";
  178. };
  179. scif0: serial@ffe40000 {
  180. compatible = "renesas,scif-r8a7779", "renesas,scif";
  181. reg = <0xffe40000 0x100>;
  182. interrupts = <0 88 IRQ_TYPE_LEVEL_HIGH>;
  183. clocks = <&cpg_clocks R8A7779_CLK_P>;
  184. clock-names = "sci_ick";
  185. status = "disabled";
  186. };
  187. scif1: serial@ffe41000 {
  188. compatible = "renesas,scif-r8a7779", "renesas,scif";
  189. reg = <0xffe41000 0x100>;
  190. interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>;
  191. clocks = <&cpg_clocks R8A7779_CLK_P>;
  192. clock-names = "sci_ick";
  193. status = "disabled";
  194. };
  195. scif2: serial@ffe42000 {
  196. compatible = "renesas,scif-r8a7779", "renesas,scif";
  197. reg = <0xffe42000 0x100>;
  198. interrupts = <0 90 IRQ_TYPE_LEVEL_HIGH>;
  199. clocks = <&cpg_clocks R8A7779_CLK_P>;
  200. clock-names = "sci_ick";
  201. status = "disabled";
  202. };
  203. scif3: serial@ffe43000 {
  204. compatible = "renesas,scif-r8a7779", "renesas,scif";
  205. reg = <0xffe43000 0x100>;
  206. interrupts = <0 91 IRQ_TYPE_LEVEL_HIGH>;
  207. clocks = <&cpg_clocks R8A7779_CLK_P>;
  208. clock-names = "sci_ick";
  209. status = "disabled";
  210. };
  211. scif4: serial@ffe44000 {
  212. compatible = "renesas,scif-r8a7779", "renesas,scif";
  213. reg = <0xffe44000 0x100>;
  214. interrupts = <0 92 IRQ_TYPE_LEVEL_HIGH>;
  215. clocks = <&cpg_clocks R8A7779_CLK_P>;
  216. clock-names = "sci_ick";
  217. status = "disabled";
  218. };
  219. scif5: serial@ffe45000 {
  220. compatible = "renesas,scif-r8a7779", "renesas,scif";
  221. reg = <0xffe45000 0x100>;
  222. interrupts = <0 93 IRQ_TYPE_LEVEL_HIGH>;
  223. clocks = <&cpg_clocks R8A7779_CLK_P>;
  224. clock-names = "sci_ick";
  225. status = "disabled";
  226. };
  227. pfc: pfc@fffc0000 {
  228. compatible = "renesas,pfc-r8a7779";
  229. reg = <0xfffc0000 0x23c>;
  230. };
  231. thermal@ffc48000 {
  232. compatible = "renesas,thermal-r8a7779", "renesas,rcar-thermal";
  233. reg = <0xffc48000 0x38>;
  234. };
  235. tmu0: timer@ffd80000 {
  236. compatible = "renesas,tmu-r8a7779", "renesas,tmu";
  237. reg = <0xffd80000 0x30>;
  238. interrupts = <0 32 IRQ_TYPE_LEVEL_HIGH>,
  239. <0 33 IRQ_TYPE_LEVEL_HIGH>,
  240. <0 34 IRQ_TYPE_LEVEL_HIGH>;
  241. clocks = <&mstp0_clks R8A7779_CLK_TMU0>;
  242. clock-names = "fck";
  243. #renesas,channels = <3>;
  244. status = "disabled";
  245. };
  246. tmu1: timer@ffd81000 {
  247. compatible = "renesas,tmu-r8a7779", "renesas,tmu";
  248. reg = <0xffd81000 0x30>;
  249. interrupts = <0 36 IRQ_TYPE_LEVEL_HIGH>,
  250. <0 37 IRQ_TYPE_LEVEL_HIGH>,
  251. <0 38 IRQ_TYPE_LEVEL_HIGH>;
  252. clocks = <&mstp0_clks R8A7779_CLK_TMU1>;
  253. clock-names = "fck";
  254. #renesas,channels = <3>;
  255. status = "disabled";
  256. };
  257. tmu2: timer@ffd82000 {
  258. compatible = "renesas,tmu-r8a7779", "renesas,tmu";
  259. reg = <0xffd82000 0x30>;
  260. interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>,
  261. <0 41 IRQ_TYPE_LEVEL_HIGH>,
  262. <0 42 IRQ_TYPE_LEVEL_HIGH>;
  263. clocks = <&mstp0_clks R8A7779_CLK_TMU2>;
  264. clock-names = "fck";
  265. #renesas,channels = <3>;
  266. status = "disabled";
  267. };
  268. sata: sata@fc600000 {
  269. compatible = "renesas,rcar-sata";
  270. reg = <0xfc600000 0x2000>;
  271. interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>;
  272. clocks = <&mstp1_clks R8A7779_CLK_SATA>;
  273. };
  274. sdhi0: sd@ffe4c000 {
  275. compatible = "renesas,sdhi-r8a7779";
  276. reg = <0xffe4c000 0x100>;
  277. interrupts = <0 104 IRQ_TYPE_LEVEL_HIGH>;
  278. clocks = <&mstp3_clks R8A7779_CLK_SDHI0>;
  279. cap-sd-highspeed;
  280. cap-sdio-irq;
  281. status = "disabled";
  282. };
  283. sdhi1: sd@ffe4d000 {
  284. compatible = "renesas,sdhi-r8a7779";
  285. reg = <0xffe4d000 0x100>;
  286. interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
  287. clocks = <&mstp3_clks R8A7779_CLK_SDHI1>;
  288. cap-sd-highspeed;
  289. cap-sdio-irq;
  290. status = "disabled";
  291. };
  292. sdhi2: sd@ffe4e000 {
  293. compatible = "renesas,sdhi-r8a7779";
  294. reg = <0xffe4e000 0x100>;
  295. interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
  296. clocks = <&mstp3_clks R8A7779_CLK_SDHI2>;
  297. cap-sd-highspeed;
  298. cap-sdio-irq;
  299. status = "disabled";
  300. };
  301. sdhi3: sd@ffe4f000 {
  302. compatible = "renesas,sdhi-r8a7779";
  303. reg = <0xffe4f000 0x100>;
  304. interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;
  305. clocks = <&mstp3_clks R8A7779_CLK_SDHI3>;
  306. cap-sd-highspeed;
  307. cap-sdio-irq;
  308. status = "disabled";
  309. };
  310. hspi0: spi@fffc7000 {
  311. compatible = "renesas,hspi-r8a7779", "renesas,hspi";
  312. reg = <0xfffc7000 0x18>;
  313. interrupts = <0 73 IRQ_TYPE_LEVEL_HIGH>;
  314. #address-cells = <1>;
  315. #size-cells = <0>;
  316. clocks = <&mstp0_clks R8A7779_CLK_HSPI>;
  317. status = "disabled";
  318. };
  319. hspi1: spi@fffc8000 {
  320. compatible = "renesas,hspi-r8a7779", "renesas,hspi";
  321. reg = <0xfffc8000 0x18>;
  322. interrupts = <0 74 IRQ_TYPE_LEVEL_HIGH>;
  323. #address-cells = <1>;
  324. #size-cells = <0>;
  325. clocks = <&mstp0_clks R8A7779_CLK_HSPI>;
  326. status = "disabled";
  327. };
  328. hspi2: spi@fffc6000 {
  329. compatible = "renesas,hspi-r8a7779", "renesas,hspi";
  330. reg = <0xfffc6000 0x18>;
  331. interrupts = <0 75 IRQ_TYPE_LEVEL_HIGH>;
  332. #address-cells = <1>;
  333. #size-cells = <0>;
  334. clocks = <&mstp0_clks R8A7779_CLK_HSPI>;
  335. status = "disabled";
  336. };
  337. clocks {
  338. #address-cells = <1>;
  339. #size-cells = <1>;
  340. ranges;
  341. /* External root clock */
  342. extal_clk: extal_clk {
  343. compatible = "fixed-clock";
  344. #clock-cells = <0>;
  345. /* This value must be overriden by the board. */
  346. clock-frequency = <0>;
  347. clock-output-names = "extal";
  348. };
  349. /* Special CPG clocks */
  350. cpg_clocks: clocks@ffc80000 {
  351. compatible = "renesas,r8a7779-cpg-clocks";
  352. reg = <0xffc80000 0x30>;
  353. clocks = <&extal_clk>;
  354. #clock-cells = <1>;
  355. clock-output-names = "plla", "z", "zs", "s",
  356. "s1", "p", "b", "out";
  357. };
  358. /* Fixed factor clocks */
  359. i_clk: i_clk {
  360. compatible = "fixed-factor-clock";
  361. clocks = <&cpg_clocks R8A7779_CLK_PLLA>;
  362. #clock-cells = <0>;
  363. clock-div = <2>;
  364. clock-mult = <1>;
  365. clock-output-names = "i";
  366. };
  367. s3_clk: s3_clk {
  368. compatible = "fixed-factor-clock";
  369. clocks = <&cpg_clocks R8A7779_CLK_PLLA>;
  370. #clock-cells = <0>;
  371. clock-div = <8>;
  372. clock-mult = <1>;
  373. clock-output-names = "s3";
  374. };
  375. s4_clk: s4_clk {
  376. compatible = "fixed-factor-clock";
  377. clocks = <&cpg_clocks R8A7779_CLK_PLLA>;
  378. #clock-cells = <0>;
  379. clock-div = <16>;
  380. clock-mult = <1>;
  381. clock-output-names = "s4";
  382. };
  383. g_clk: g_clk {
  384. compatible = "fixed-factor-clock";
  385. clocks = <&cpg_clocks R8A7779_CLK_PLLA>;
  386. #clock-cells = <0>;
  387. clock-div = <24>;
  388. clock-mult = <1>;
  389. clock-output-names = "g";
  390. };
  391. /* Gate clocks */
  392. mstp0_clks: clocks@ffc80030 {
  393. compatible = "renesas,r8a7779-mstp-clocks",
  394. "renesas,cpg-mstp-clocks";
  395. reg = <0xffc80030 4>;
  396. clocks = <&cpg_clocks R8A7779_CLK_S>,
  397. <&cpg_clocks R8A7779_CLK_P>,
  398. <&cpg_clocks R8A7779_CLK_P>,
  399. <&cpg_clocks R8A7779_CLK_P>,
  400. <&cpg_clocks R8A7779_CLK_S>,
  401. <&cpg_clocks R8A7779_CLK_S>,
  402. <&cpg_clocks R8A7779_CLK_S1>,
  403. <&cpg_clocks R8A7779_CLK_S1>,
  404. <&cpg_clocks R8A7779_CLK_S1>,
  405. <&cpg_clocks R8A7779_CLK_S1>,
  406. <&cpg_clocks R8A7779_CLK_S1>,
  407. <&cpg_clocks R8A7779_CLK_S1>,
  408. <&cpg_clocks R8A7779_CLK_P>,
  409. <&cpg_clocks R8A7779_CLK_P>,
  410. <&cpg_clocks R8A7779_CLK_P>,
  411. <&cpg_clocks R8A7779_CLK_P>;
  412. #clock-cells = <1>;
  413. renesas,clock-indices = <
  414. R8A7779_CLK_HSPI R8A7779_CLK_TMU2
  415. R8A7779_CLK_TMU1 R8A7779_CLK_TMU0
  416. R8A7779_CLK_HSCIF1 R8A7779_CLK_HSCIF0
  417. R8A7779_CLK_SCIF5 R8A7779_CLK_SCIF4
  418. R8A7779_CLK_SCIF3 R8A7779_CLK_SCIF2
  419. R8A7779_CLK_SCIF1 R8A7779_CLK_SCIF0
  420. R8A7779_CLK_I2C3 R8A7779_CLK_I2C2
  421. R8A7779_CLK_I2C1 R8A7779_CLK_I2C0
  422. >;
  423. clock-output-names =
  424. "hspi", "tmu2", "tmu1", "tmu0", "hscif1",
  425. "hscif0", "scif5", "scif4", "scif3", "scif2",
  426. "scif1", "scif0", "i2c3", "i2c2", "i2c1",
  427. "i2c0";
  428. };
  429. mstp1_clks: clocks@ffc80034 {
  430. compatible = "renesas,r8a7779-mstp-clocks",
  431. "renesas,cpg-mstp-clocks";
  432. reg = <0xffc80034 4>, <0xffc80044 4>;
  433. clocks = <&cpg_clocks R8A7779_CLK_P>,
  434. <&cpg_clocks R8A7779_CLK_P>,
  435. <&cpg_clocks R8A7779_CLK_S>,
  436. <&cpg_clocks R8A7779_CLK_S>,
  437. <&cpg_clocks R8A7779_CLK_S>,
  438. <&cpg_clocks R8A7779_CLK_S>,
  439. <&cpg_clocks R8A7779_CLK_P>,
  440. <&cpg_clocks R8A7779_CLK_P>,
  441. <&cpg_clocks R8A7779_CLK_P>,
  442. <&cpg_clocks R8A7779_CLK_S>;
  443. #clock-cells = <1>;
  444. renesas,clock-indices = <
  445. R8A7779_CLK_USB01 R8A7779_CLK_USB2
  446. R8A7779_CLK_DU R8A7779_CLK_VIN2
  447. R8A7779_CLK_VIN1 R8A7779_CLK_VIN0
  448. R8A7779_CLK_ETHER R8A7779_CLK_SATA
  449. R8A7779_CLK_PCIE R8A7779_CLK_VIN3
  450. >;
  451. clock-output-names =
  452. "usb01", "usb2",
  453. "du", "vin2",
  454. "vin1", "vin0",
  455. "ether", "sata",
  456. "pcie", "vin3";
  457. };
  458. mstp3_clks: clocks@ffc8003c {
  459. compatible = "renesas,r8a7779-mstp-clocks",
  460. "renesas,cpg-mstp-clocks";
  461. reg = <0xffc8003c 4>;
  462. clocks = <&s4_clk>, <&s4_clk>, <&s4_clk>, <&s4_clk>,
  463. <&s4_clk>, <&s4_clk>;
  464. #clock-cells = <1>;
  465. renesas,clock-indices = <
  466. R8A7779_CLK_SDHI3 R8A7779_CLK_SDHI2
  467. R8A7779_CLK_SDHI1 R8A7779_CLK_SDHI0
  468. R8A7779_CLK_MMC1 R8A7779_CLK_MMC0
  469. >;
  470. clock-output-names =
  471. "sdhi3", "sdhi2", "sdhi1", "sdhi0",
  472. "mmc1", "mmc0";
  473. };
  474. };
  475. };