uniphier-pxs3.dtsi 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. // SPDX-License-Identifier: GPL-2.0+ OR MIT
  2. //
  3. // Device Tree Source for UniPhier PXs3 SoC
  4. //
  5. // Copyright (C) 2017 Socionext Inc.
  6. // Author: Masahiro Yamada <yamada.masahiro@socionext.com>
  7. #include <dt-bindings/gpio/gpio.h>
  8. #include <dt-bindings/gpio/uniphier-gpio.h>
  9. /memreserve/ 0x80000000 0x02000000;
  10. / {
  11. compatible = "socionext,uniphier-pxs3";
  12. #address-cells = <2>;
  13. #size-cells = <2>;
  14. interrupt-parent = <&gic>;
  15. cpus {
  16. #address-cells = <2>;
  17. #size-cells = <0>;
  18. cpu-map {
  19. cluster0 {
  20. core0 {
  21. cpu = <&cpu0>;
  22. };
  23. core1 {
  24. cpu = <&cpu1>;
  25. };
  26. core2 {
  27. cpu = <&cpu2>;
  28. };
  29. core3 {
  30. cpu = <&cpu3>;
  31. };
  32. };
  33. };
  34. cpu0: cpu@0 {
  35. device_type = "cpu";
  36. compatible = "arm,cortex-a53", "arm,armv8";
  37. reg = <0 0x000>;
  38. clocks = <&sys_clk 33>;
  39. enable-method = "psci";
  40. operating-points-v2 = <&cluster0_opp>;
  41. };
  42. cpu1: cpu@1 {
  43. device_type = "cpu";
  44. compatible = "arm,cortex-a53", "arm,armv8";
  45. reg = <0 0x001>;
  46. clocks = <&sys_clk 33>;
  47. enable-method = "psci";
  48. operating-points-v2 = <&cluster0_opp>;
  49. };
  50. cpu2: cpu@2 {
  51. device_type = "cpu";
  52. compatible = "arm,cortex-a53", "arm,armv8";
  53. reg = <0 0x002>;
  54. clocks = <&sys_clk 33>;
  55. enable-method = "psci";
  56. operating-points-v2 = <&cluster0_opp>;
  57. };
  58. cpu3: cpu@3 {
  59. device_type = "cpu";
  60. compatible = "arm,cortex-a53", "arm,armv8";
  61. reg = <0 0x003>;
  62. clocks = <&sys_clk 33>;
  63. enable-method = "psci";
  64. operating-points-v2 = <&cluster0_opp>;
  65. };
  66. };
  67. cluster0_opp: opp-table {
  68. compatible = "operating-points-v2";
  69. opp-shared;
  70. opp-250000000 {
  71. opp-hz = /bits/ 64 <250000000>;
  72. clock-latency-ns = <300>;
  73. };
  74. opp-325000000 {
  75. opp-hz = /bits/ 64 <325000000>;
  76. clock-latency-ns = <300>;
  77. };
  78. opp-500000000 {
  79. opp-hz = /bits/ 64 <500000000>;
  80. clock-latency-ns = <300>;
  81. };
  82. opp-650000000 {
  83. opp-hz = /bits/ 64 <650000000>;
  84. clock-latency-ns = <300>;
  85. };
  86. opp-666667000 {
  87. opp-hz = /bits/ 64 <666667000>;
  88. clock-latency-ns = <300>;
  89. };
  90. opp-866667000 {
  91. opp-hz = /bits/ 64 <866667000>;
  92. clock-latency-ns = <300>;
  93. };
  94. opp-1000000000 {
  95. opp-hz = /bits/ 64 <1000000000>;
  96. clock-latency-ns = <300>;
  97. };
  98. opp-1300000000 {
  99. opp-hz = /bits/ 64 <1300000000>;
  100. clock-latency-ns = <300>;
  101. };
  102. };
  103. psci {
  104. compatible = "arm,psci-1.0";
  105. method = "smc";
  106. };
  107. clocks {
  108. refclk: ref {
  109. compatible = "fixed-clock";
  110. #clock-cells = <0>;
  111. clock-frequency = <25000000>;
  112. };
  113. };
  114. emmc_pwrseq: emmc-pwrseq {
  115. compatible = "mmc-pwrseq-emmc";
  116. reset-gpios = <&gpio UNIPHIER_GPIO_PORT(5, 7) GPIO_ACTIVE_LOW>;
  117. };
  118. timer {
  119. compatible = "arm,armv8-timer";
  120. interrupts = <1 13 4>,
  121. <1 14 4>,
  122. <1 11 4>,
  123. <1 10 4>;
  124. };
  125. soc@0 {
  126. compatible = "simple-bus";
  127. #address-cells = <1>;
  128. #size-cells = <1>;
  129. ranges = <0 0 0 0xffffffff>;
  130. serial0: serial@54006800 {
  131. compatible = "socionext,uniphier-uart";
  132. status = "disabled";
  133. reg = <0x54006800 0x40>;
  134. interrupts = <0 33 4>;
  135. pinctrl-names = "default";
  136. pinctrl-0 = <&pinctrl_uart0>;
  137. clocks = <&peri_clk 0>;
  138. resets = <&peri_rst 0>;
  139. };
  140. serial1: serial@54006900 {
  141. compatible = "socionext,uniphier-uart";
  142. status = "disabled";
  143. reg = <0x54006900 0x40>;
  144. interrupts = <0 35 4>;
  145. pinctrl-names = "default";
  146. pinctrl-0 = <&pinctrl_uart1>;
  147. clocks = <&peri_clk 1>;
  148. resets = <&peri_rst 1>;
  149. };
  150. serial2: serial@54006a00 {
  151. compatible = "socionext,uniphier-uart";
  152. status = "disabled";
  153. reg = <0x54006a00 0x40>;
  154. interrupts = <0 37 4>;
  155. pinctrl-names = "default";
  156. pinctrl-0 = <&pinctrl_uart2>;
  157. clocks = <&peri_clk 2>;
  158. resets = <&peri_rst 2>;
  159. };
  160. serial3: serial@54006b00 {
  161. compatible = "socionext,uniphier-uart";
  162. status = "disabled";
  163. reg = <0x54006b00 0x40>;
  164. interrupts = <0 177 4>;
  165. pinctrl-names = "default";
  166. pinctrl-0 = <&pinctrl_uart3>;
  167. clocks = <&peri_clk 3>;
  168. resets = <&peri_rst 3>;
  169. };
  170. gpio: gpio@55000000 {
  171. compatible = "socionext,uniphier-gpio";
  172. reg = <0x55000000 0x200>;
  173. interrupt-parent = <&aidet>;
  174. interrupt-controller;
  175. #interrupt-cells = <2>;
  176. gpio-controller;
  177. #gpio-cells = <2>;
  178. gpio-ranges = <&pinctrl 0 0 0>,
  179. <&pinctrl 104 0 0>,
  180. <&pinctrl 168 0 0>;
  181. gpio-ranges-group-names = "gpio_range0",
  182. "gpio_range1",
  183. "gpio_range2";
  184. ngpios = <286>;
  185. socionext,interrupt-ranges = <0 48 16>, <16 154 5>,
  186. <21 217 3>;
  187. };
  188. i2c0: i2c@58780000 {
  189. compatible = "socionext,uniphier-fi2c";
  190. status = "disabled";
  191. reg = <0x58780000 0x80>;
  192. #address-cells = <1>;
  193. #size-cells = <0>;
  194. interrupts = <0 41 4>;
  195. pinctrl-names = "default";
  196. pinctrl-0 = <&pinctrl_i2c0>;
  197. clocks = <&peri_clk 4>;
  198. resets = <&peri_rst 4>;
  199. clock-frequency = <100000>;
  200. };
  201. i2c1: i2c@58781000 {
  202. compatible = "socionext,uniphier-fi2c";
  203. status = "disabled";
  204. reg = <0x58781000 0x80>;
  205. #address-cells = <1>;
  206. #size-cells = <0>;
  207. interrupts = <0 42 4>;
  208. pinctrl-names = "default";
  209. pinctrl-0 = <&pinctrl_i2c1>;
  210. clocks = <&peri_clk 5>;
  211. resets = <&peri_rst 5>;
  212. clock-frequency = <100000>;
  213. };
  214. i2c2: i2c@58782000 {
  215. compatible = "socionext,uniphier-fi2c";
  216. status = "disabled";
  217. reg = <0x58782000 0x80>;
  218. #address-cells = <1>;
  219. #size-cells = <0>;
  220. interrupts = <0 43 4>;
  221. pinctrl-names = "default";
  222. pinctrl-0 = <&pinctrl_i2c2>;
  223. clocks = <&peri_clk 6>;
  224. resets = <&peri_rst 6>;
  225. clock-frequency = <100000>;
  226. };
  227. i2c3: i2c@58783000 {
  228. compatible = "socionext,uniphier-fi2c";
  229. status = "disabled";
  230. reg = <0x58783000 0x80>;
  231. #address-cells = <1>;
  232. #size-cells = <0>;
  233. interrupts = <0 44 4>;
  234. pinctrl-names = "default";
  235. pinctrl-0 = <&pinctrl_i2c3>;
  236. clocks = <&peri_clk 7>;
  237. resets = <&peri_rst 7>;
  238. clock-frequency = <100000>;
  239. };
  240. /* chip-internal connection for HDMI */
  241. i2c6: i2c@58786000 {
  242. compatible = "socionext,uniphier-fi2c";
  243. reg = <0x58786000 0x80>;
  244. #address-cells = <1>;
  245. #size-cells = <0>;
  246. interrupts = <0 26 4>;
  247. clocks = <&peri_clk 10>;
  248. resets = <&peri_rst 10>;
  249. clock-frequency = <400000>;
  250. };
  251. system_bus: system-bus@58c00000 {
  252. compatible = "socionext,uniphier-system-bus";
  253. status = "disabled";
  254. reg = <0x58c00000 0x400>;
  255. #address-cells = <2>;
  256. #size-cells = <1>;
  257. pinctrl-names = "default";
  258. pinctrl-0 = <&pinctrl_system_bus>;
  259. };
  260. smpctrl@59801000 {
  261. compatible = "socionext,uniphier-smpctrl";
  262. reg = <0x59801000 0x400>;
  263. };
  264. sdctrl@59810000 {
  265. compatible = "socionext,uniphier-pxs3-sdctrl",
  266. "simple-mfd", "syscon";
  267. reg = <0x59810000 0x400>;
  268. sd_clk: clock {
  269. compatible = "socionext,uniphier-pxs3-sd-clock";
  270. #clock-cells = <1>;
  271. };
  272. sd_rst: reset {
  273. compatible = "socionext,uniphier-pxs3-sd-reset";
  274. #reset-cells = <1>;
  275. };
  276. };
  277. perictrl@59820000 {
  278. compatible = "socionext,uniphier-pxs3-perictrl",
  279. "simple-mfd", "syscon";
  280. reg = <0x59820000 0x200>;
  281. peri_clk: clock {
  282. compatible = "socionext,uniphier-pxs3-peri-clock";
  283. #clock-cells = <1>;
  284. };
  285. peri_rst: reset {
  286. compatible = "socionext,uniphier-pxs3-peri-reset";
  287. #reset-cells = <1>;
  288. };
  289. };
  290. emmc: sdhc@5a000000 {
  291. compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
  292. reg = <0x5a000000 0x400>;
  293. interrupts = <0 78 4>;
  294. pinctrl-names = "default";
  295. pinctrl-0 = <&pinctrl_emmc>;
  296. clocks = <&sys_clk 4>;
  297. resets = <&sys_rst 4>;
  298. bus-width = <8>;
  299. mmc-ddr-1_8v;
  300. mmc-hs200-1_8v;
  301. mmc-pwrseq = <&emmc_pwrseq>;
  302. cdns,phy-input-delay-legacy = <9>;
  303. cdns,phy-input-delay-mmc-highspeed = <2>;
  304. cdns,phy-input-delay-mmc-ddr = <3>;
  305. cdns,phy-dll-delay-sdclk = <21>;
  306. cdns,phy-dll-delay-sdclk-hsmmc = <21>;
  307. };
  308. soc_glue: soc-glue@5f800000 {
  309. compatible = "socionext,uniphier-pxs3-soc-glue",
  310. "simple-mfd", "syscon";
  311. reg = <0x5f800000 0x2000>;
  312. pinctrl: pinctrl {
  313. compatible = "socionext,uniphier-pxs3-pinctrl";
  314. };
  315. };
  316. soc-glue@5f900000 {
  317. compatible = "socionext,uniphier-pxs3-soc-glue-debug",
  318. "simple-mfd";
  319. #address-cells = <1>;
  320. #size-cells = <1>;
  321. ranges = <0 0x5f900000 0x2000>;
  322. efuse@100 {
  323. compatible = "socionext,uniphier-efuse";
  324. reg = <0x100 0x28>;
  325. };
  326. efuse@200 {
  327. compatible = "socionext,uniphier-efuse";
  328. reg = <0x200 0x68>;
  329. };
  330. };
  331. aidet: aidet@5fc20000 {
  332. compatible = "socionext,uniphier-pxs3-aidet";
  333. reg = <0x5fc20000 0x200>;
  334. interrupt-controller;
  335. #interrupt-cells = <2>;
  336. };
  337. gic: interrupt-controller@5fe00000 {
  338. compatible = "arm,gic-v3";
  339. reg = <0x5fe00000 0x10000>, /* GICD */
  340. <0x5fe80000 0x80000>; /* GICR */
  341. interrupt-controller;
  342. #interrupt-cells = <3>;
  343. interrupts = <1 9 4>;
  344. };
  345. sysctrl@61840000 {
  346. compatible = "socionext,uniphier-pxs3-sysctrl",
  347. "simple-mfd", "syscon";
  348. reg = <0x61840000 0x10000>;
  349. sys_clk: clock {
  350. compatible = "socionext,uniphier-pxs3-clock";
  351. #clock-cells = <1>;
  352. };
  353. sys_rst: reset {
  354. compatible = "socionext,uniphier-pxs3-reset";
  355. #reset-cells = <1>;
  356. };
  357. watchdog {
  358. compatible = "socionext,uniphier-wdt";
  359. };
  360. };
  361. eth0: ethernet@65000000 {
  362. compatible = "socionext,uniphier-pxs3-ave4";
  363. status = "disabled";
  364. reg = <0x65000000 0x8500>;
  365. interrupts = <0 66 4>;
  366. pinctrl-names = "default";
  367. pinctrl-0 = <&pinctrl_ether_rgmii>;
  368. clock-names = "ether";
  369. clocks = <&sys_clk 6>;
  370. reset-names = "ether";
  371. resets = <&sys_rst 6>;
  372. phy-mode = "rgmii-id";
  373. local-mac-address = [00 00 00 00 00 00];
  374. socionext,syscon-phy-mode = <&soc_glue 0>;
  375. mdio0: mdio {
  376. #address-cells = <1>;
  377. #size-cells = <0>;
  378. };
  379. };
  380. eth1: ethernet@65200000 {
  381. compatible = "socionext,uniphier-pxs3-ave4";
  382. status = "disabled";
  383. reg = <0x65200000 0x8500>;
  384. interrupts = <0 67 4>;
  385. pinctrl-names = "default";
  386. pinctrl-0 = <&pinctrl_ether1_rgmii>;
  387. clock-names = "ether";
  388. clocks = <&sys_clk 7>;
  389. reset-names = "ether";
  390. resets = <&sys_rst 7>;
  391. phy-mode = "rgmii-id";
  392. local-mac-address = [00 00 00 00 00 00];
  393. socionext,syscon-phy-mode = <&soc_glue 1>;
  394. mdio1: mdio {
  395. #address-cells = <1>;
  396. #size-cells = <0>;
  397. };
  398. };
  399. nand: nand@68000000 {
  400. compatible = "socionext,uniphier-denali-nand-v5b";
  401. status = "disabled";
  402. reg-names = "nand_data", "denali_reg";
  403. reg = <0x68000000 0x20>, <0x68100000 0x1000>;
  404. interrupts = <0 65 4>;
  405. pinctrl-names = "default";
  406. pinctrl-0 = <&pinctrl_nand>;
  407. clocks = <&sys_clk 2>;
  408. resets = <&sys_rst 2>;
  409. };
  410. };
  411. };
  412. #include "uniphier-pinctrl.dtsi"