uniphier-ld11.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. // SPDX-License-Identifier: GPL-2.0+ OR MIT
  2. //
  3. // Device Tree Source for UniPhier LD11 SoC
  4. //
  5. // Copyright (C) 2016 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-ld11";
  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. };
  27. };
  28. cpu0: cpu@0 {
  29. device_type = "cpu";
  30. compatible = "arm,cortex-a53", "arm,armv8";
  31. reg = <0 0x000>;
  32. clocks = <&sys_clk 33>;
  33. enable-method = "psci";
  34. operating-points-v2 = <&cluster0_opp>;
  35. };
  36. cpu1: cpu@1 {
  37. device_type = "cpu";
  38. compatible = "arm,cortex-a53", "arm,armv8";
  39. reg = <0 0x001>;
  40. clocks = <&sys_clk 33>;
  41. enable-method = "psci";
  42. operating-points-v2 = <&cluster0_opp>;
  43. };
  44. };
  45. cluster0_opp: opp-table {
  46. compatible = "operating-points-v2";
  47. opp-shared;
  48. opp-245000000 {
  49. opp-hz = /bits/ 64 <245000000>;
  50. clock-latency-ns = <300>;
  51. };
  52. opp-250000000 {
  53. opp-hz = /bits/ 64 <250000000>;
  54. clock-latency-ns = <300>;
  55. };
  56. opp-490000000 {
  57. opp-hz = /bits/ 64 <490000000>;
  58. clock-latency-ns = <300>;
  59. };
  60. opp-500000000 {
  61. opp-hz = /bits/ 64 <500000000>;
  62. clock-latency-ns = <300>;
  63. };
  64. opp-653334000 {
  65. opp-hz = /bits/ 64 <653334000>;
  66. clock-latency-ns = <300>;
  67. };
  68. opp-666667000 {
  69. opp-hz = /bits/ 64 <666667000>;
  70. clock-latency-ns = <300>;
  71. };
  72. opp-980000000 {
  73. opp-hz = /bits/ 64 <980000000>;
  74. clock-latency-ns = <300>;
  75. };
  76. };
  77. psci {
  78. compatible = "arm,psci-1.0";
  79. method = "smc";
  80. };
  81. clocks {
  82. refclk: ref {
  83. compatible = "fixed-clock";
  84. #clock-cells = <0>;
  85. clock-frequency = <25000000>;
  86. };
  87. };
  88. emmc_pwrseq: emmc-pwrseq {
  89. compatible = "mmc-pwrseq-emmc";
  90. reset-gpios = <&gpio UNIPHIER_GPIO_PORT(3, 2) GPIO_ACTIVE_LOW>;
  91. };
  92. timer {
  93. compatible = "arm,armv8-timer";
  94. interrupts = <1 13 4>,
  95. <1 14 4>,
  96. <1 11 4>,
  97. <1 10 4>;
  98. };
  99. soc@0 {
  100. compatible = "simple-bus";
  101. #address-cells = <1>;
  102. #size-cells = <1>;
  103. ranges = <0 0 0 0xffffffff>;
  104. serial0: serial@54006800 {
  105. compatible = "socionext,uniphier-uart";
  106. status = "disabled";
  107. reg = <0x54006800 0x40>;
  108. interrupts = <0 33 4>;
  109. pinctrl-names = "default";
  110. pinctrl-0 = <&pinctrl_uart0>;
  111. clocks = <&peri_clk 0>;
  112. resets = <&peri_rst 0>;
  113. };
  114. serial1: serial@54006900 {
  115. compatible = "socionext,uniphier-uart";
  116. status = "disabled";
  117. reg = <0x54006900 0x40>;
  118. interrupts = <0 35 4>;
  119. pinctrl-names = "default";
  120. pinctrl-0 = <&pinctrl_uart1>;
  121. clocks = <&peri_clk 1>;
  122. resets = <&peri_rst 1>;
  123. };
  124. serial2: serial@54006a00 {
  125. compatible = "socionext,uniphier-uart";
  126. status = "disabled";
  127. reg = <0x54006a00 0x40>;
  128. interrupts = <0 37 4>;
  129. pinctrl-names = "default";
  130. pinctrl-0 = <&pinctrl_uart2>;
  131. clocks = <&peri_clk 2>;
  132. resets = <&peri_rst 2>;
  133. };
  134. serial3: serial@54006b00 {
  135. compatible = "socionext,uniphier-uart";
  136. status = "disabled";
  137. reg = <0x54006b00 0x40>;
  138. interrupts = <0 177 4>;
  139. pinctrl-names = "default";
  140. pinctrl-0 = <&pinctrl_uart3>;
  141. clocks = <&peri_clk 3>;
  142. resets = <&peri_rst 3>;
  143. };
  144. gpio: gpio@55000000 {
  145. compatible = "socionext,uniphier-gpio";
  146. reg = <0x55000000 0x200>;
  147. interrupt-parent = <&aidet>;
  148. interrupt-controller;
  149. #interrupt-cells = <2>;
  150. gpio-controller;
  151. #gpio-cells = <2>;
  152. gpio-ranges = <&pinctrl 0 0 0>,
  153. <&pinctrl 43 0 0>,
  154. <&pinctrl 51 0 0>,
  155. <&pinctrl 96 0 0>,
  156. <&pinctrl 160 0 0>,
  157. <&pinctrl 184 0 0>;
  158. gpio-ranges-group-names = "gpio_range0",
  159. "gpio_range1",
  160. "gpio_range2",
  161. "gpio_range3",
  162. "gpio_range4",
  163. "gpio_range5";
  164. ngpios = <200>;
  165. socionext,interrupt-ranges = <0 48 16>, <16 154 5>,
  166. <21 217 3>;
  167. };
  168. audio@56000000 {
  169. compatible = "socionext,uniphier-ld11-aio";
  170. reg = <0x56000000 0x80000>;
  171. interrupts = <0 144 4>;
  172. pinctrl-names = "default";
  173. pinctrl-0 = <&pinctrl_aout1>,
  174. <&pinctrl_aoutiec1>;
  175. clock-names = "aio";
  176. clocks = <&sys_clk 40>;
  177. reset-names = "aio";
  178. resets = <&sys_rst 40>;
  179. #sound-dai-cells = <1>;
  180. socionext,syscon = <&soc_glue>;
  181. i2s_port0: port@0 {
  182. i2s_hdmi: endpoint {
  183. };
  184. };
  185. i2s_port1: port@1 {
  186. i2s_pcmin2: endpoint {
  187. };
  188. };
  189. i2s_port2: port@2 {
  190. i2s_line: endpoint {
  191. dai-format = "i2s";
  192. remote-endpoint = <&evea_line>;
  193. };
  194. };
  195. i2s_port3: port@3 {
  196. i2s_hpcmout1: endpoint {
  197. };
  198. };
  199. i2s_port4: port@4 {
  200. i2s_hp: endpoint {
  201. dai-format = "i2s";
  202. remote-endpoint = <&evea_hp>;
  203. };
  204. };
  205. spdif_port0: port@5 {
  206. spdif_hiecout1: endpoint {
  207. };
  208. };
  209. src_port0: port@6 {
  210. i2s_epcmout2: endpoint {
  211. };
  212. };
  213. src_port1: port@7 {
  214. i2s_epcmout3: endpoint {
  215. };
  216. };
  217. comp_spdif_port0: port@8 {
  218. comp_spdif_hiecout1: endpoint {
  219. };
  220. };
  221. };
  222. codec@57900000 {
  223. compatible = "socionext,uniphier-evea";
  224. reg = <0x57900000 0x1000>;
  225. clock-names = "evea", "exiv";
  226. clocks = <&sys_clk 41>, <&sys_clk 42>;
  227. reset-names = "evea", "exiv", "adamv";
  228. resets = <&sys_rst 41>, <&sys_rst 42>, <&adamv_rst 0>;
  229. #sound-dai-cells = <1>;
  230. port@0 {
  231. evea_line: endpoint {
  232. remote-endpoint = <&i2s_line>;
  233. };
  234. };
  235. port@1 {
  236. evea_hp: endpoint {
  237. remote-endpoint = <&i2s_hp>;
  238. };
  239. };
  240. };
  241. adamv@57920000 {
  242. compatible = "socionext,uniphier-ld11-adamv",
  243. "simple-mfd", "syscon";
  244. reg = <0x57920000 0x1000>;
  245. adamv_rst: reset {
  246. compatible = "socionext,uniphier-ld11-adamv-reset";
  247. #reset-cells = <1>;
  248. };
  249. };
  250. i2c0: i2c@58780000 {
  251. compatible = "socionext,uniphier-fi2c";
  252. status = "disabled";
  253. reg = <0x58780000 0x80>;
  254. #address-cells = <1>;
  255. #size-cells = <0>;
  256. interrupts = <0 41 4>;
  257. pinctrl-names = "default";
  258. pinctrl-0 = <&pinctrl_i2c0>;
  259. clocks = <&peri_clk 4>;
  260. resets = <&peri_rst 4>;
  261. clock-frequency = <100000>;
  262. };
  263. i2c1: i2c@58781000 {
  264. compatible = "socionext,uniphier-fi2c";
  265. status = "disabled";
  266. reg = <0x58781000 0x80>;
  267. #address-cells = <1>;
  268. #size-cells = <0>;
  269. interrupts = <0 42 4>;
  270. pinctrl-names = "default";
  271. pinctrl-0 = <&pinctrl_i2c1>;
  272. clocks = <&peri_clk 5>;
  273. resets = <&peri_rst 5>;
  274. clock-frequency = <100000>;
  275. };
  276. i2c2: i2c@58782000 {
  277. compatible = "socionext,uniphier-fi2c";
  278. reg = <0x58782000 0x80>;
  279. #address-cells = <1>;
  280. #size-cells = <0>;
  281. interrupts = <0 43 4>;
  282. clocks = <&peri_clk 6>;
  283. resets = <&peri_rst 6>;
  284. clock-frequency = <400000>;
  285. };
  286. i2c3: i2c@58783000 {
  287. compatible = "socionext,uniphier-fi2c";
  288. status = "disabled";
  289. reg = <0x58783000 0x80>;
  290. #address-cells = <1>;
  291. #size-cells = <0>;
  292. interrupts = <0 44 4>;
  293. pinctrl-names = "default";
  294. pinctrl-0 = <&pinctrl_i2c3>;
  295. clocks = <&peri_clk 7>;
  296. resets = <&peri_rst 7>;
  297. clock-frequency = <100000>;
  298. };
  299. i2c4: i2c@58784000 {
  300. compatible = "socionext,uniphier-fi2c";
  301. status = "disabled";
  302. reg = <0x58784000 0x80>;
  303. #address-cells = <1>;
  304. #size-cells = <0>;
  305. interrupts = <0 45 4>;
  306. pinctrl-names = "default";
  307. pinctrl-0 = <&pinctrl_i2c4>;
  308. clocks = <&peri_clk 8>;
  309. resets = <&peri_rst 8>;
  310. clock-frequency = <100000>;
  311. };
  312. i2c5: i2c@58785000 {
  313. compatible = "socionext,uniphier-fi2c";
  314. reg = <0x58785000 0x80>;
  315. #address-cells = <1>;
  316. #size-cells = <0>;
  317. interrupts = <0 25 4>;
  318. clocks = <&peri_clk 9>;
  319. resets = <&peri_rst 9>;
  320. clock-frequency = <400000>;
  321. };
  322. system_bus: system-bus@58c00000 {
  323. compatible = "socionext,uniphier-system-bus";
  324. status = "disabled";
  325. reg = <0x58c00000 0x400>;
  326. #address-cells = <2>;
  327. #size-cells = <1>;
  328. pinctrl-names = "default";
  329. pinctrl-0 = <&pinctrl_system_bus>;
  330. };
  331. smpctrl@59801000 {
  332. compatible = "socionext,uniphier-smpctrl";
  333. reg = <0x59801000 0x400>;
  334. };
  335. sdctrl@59810000 {
  336. compatible = "socionext,uniphier-ld11-sdctrl",
  337. "simple-mfd", "syscon";
  338. reg = <0x59810000 0x400>;
  339. sd_rst: reset {
  340. compatible = "socionext,uniphier-ld11-sd-reset";
  341. #reset-cells = <1>;
  342. };
  343. };
  344. perictrl@59820000 {
  345. compatible = "socionext,uniphier-ld11-perictrl",
  346. "simple-mfd", "syscon";
  347. reg = <0x59820000 0x200>;
  348. peri_clk: clock {
  349. compatible = "socionext,uniphier-ld11-peri-clock";
  350. #clock-cells = <1>;
  351. };
  352. peri_rst: reset {
  353. compatible = "socionext,uniphier-ld11-peri-reset";
  354. #reset-cells = <1>;
  355. };
  356. };
  357. emmc: sdhc@5a000000 {
  358. compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
  359. reg = <0x5a000000 0x400>;
  360. interrupts = <0 78 4>;
  361. pinctrl-names = "default";
  362. pinctrl-0 = <&pinctrl_emmc>;
  363. clocks = <&sys_clk 4>;
  364. resets = <&sys_rst 4>;
  365. bus-width = <8>;
  366. mmc-ddr-1_8v;
  367. mmc-hs200-1_8v;
  368. mmc-pwrseq = <&emmc_pwrseq>;
  369. cdns,phy-input-delay-legacy = <9>;
  370. cdns,phy-input-delay-mmc-highspeed = <2>;
  371. cdns,phy-input-delay-mmc-ddr = <3>;
  372. cdns,phy-dll-delay-sdclk = <21>;
  373. cdns,phy-dll-delay-sdclk-hsmmc = <21>;
  374. };
  375. usb0: usb@5a800100 {
  376. compatible = "socionext,uniphier-ehci", "generic-ehci";
  377. status = "disabled";
  378. reg = <0x5a800100 0x100>;
  379. interrupts = <0 243 4>;
  380. pinctrl-names = "default";
  381. pinctrl-0 = <&pinctrl_usb0>;
  382. clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 8>,
  383. <&mio_clk 12>;
  384. resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 8>,
  385. <&mio_rst 12>;
  386. has-transaction-translator;
  387. };
  388. usb1: usb@5a810100 {
  389. compatible = "socionext,uniphier-ehci", "generic-ehci";
  390. status = "disabled";
  391. reg = <0x5a810100 0x100>;
  392. interrupts = <0 244 4>;
  393. pinctrl-names = "default";
  394. pinctrl-0 = <&pinctrl_usb1>;
  395. clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 9>,
  396. <&mio_clk 13>;
  397. resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 9>,
  398. <&mio_rst 13>;
  399. has-transaction-translator;
  400. };
  401. usb2: usb@5a820100 {
  402. compatible = "socionext,uniphier-ehci", "generic-ehci";
  403. status = "disabled";
  404. reg = <0x5a820100 0x100>;
  405. interrupts = <0 245 4>;
  406. pinctrl-names = "default";
  407. pinctrl-0 = <&pinctrl_usb2>;
  408. clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 10>,
  409. <&mio_clk 14>;
  410. resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 10>,
  411. <&mio_rst 14>;
  412. has-transaction-translator;
  413. };
  414. mioctrl@5b3e0000 {
  415. compatible = "socionext,uniphier-ld11-mioctrl",
  416. "simple-mfd", "syscon";
  417. reg = <0x5b3e0000 0x800>;
  418. mio_clk: clock {
  419. compatible = "socionext,uniphier-ld11-mio-clock";
  420. #clock-cells = <1>;
  421. };
  422. mio_rst: reset {
  423. compatible = "socionext,uniphier-ld11-mio-reset";
  424. #reset-cells = <1>;
  425. resets = <&sys_rst 7>;
  426. };
  427. };
  428. soc_glue: soc-glue@5f800000 {
  429. compatible = "socionext,uniphier-ld11-soc-glue",
  430. "simple-mfd", "syscon";
  431. reg = <0x5f800000 0x2000>;
  432. pinctrl: pinctrl {
  433. compatible = "socionext,uniphier-ld11-pinctrl";
  434. };
  435. };
  436. soc-glue@5f900000 {
  437. compatible = "socionext,uniphier-ld11-soc-glue-debug",
  438. "simple-mfd";
  439. #address-cells = <1>;
  440. #size-cells = <1>;
  441. ranges = <0 0x5f900000 0x2000>;
  442. efuse@100 {
  443. compatible = "socionext,uniphier-efuse";
  444. reg = <0x100 0x28>;
  445. };
  446. efuse@200 {
  447. compatible = "socionext,uniphier-efuse";
  448. reg = <0x200 0x68>;
  449. };
  450. };
  451. aidet: aidet@5fc20000 {
  452. compatible = "socionext,uniphier-ld11-aidet";
  453. reg = <0x5fc20000 0x200>;
  454. interrupt-controller;
  455. #interrupt-cells = <2>;
  456. };
  457. gic: interrupt-controller@5fe00000 {
  458. compatible = "arm,gic-v3";
  459. reg = <0x5fe00000 0x10000>, /* GICD */
  460. <0x5fe40000 0x80000>; /* GICR */
  461. interrupt-controller;
  462. #interrupt-cells = <3>;
  463. interrupts = <1 9 4>;
  464. };
  465. sysctrl@61840000 {
  466. compatible = "socionext,uniphier-ld11-sysctrl",
  467. "simple-mfd", "syscon";
  468. reg = <0x61840000 0x10000>;
  469. sys_clk: clock {
  470. compatible = "socionext,uniphier-ld11-clock";
  471. #clock-cells = <1>;
  472. };
  473. sys_rst: reset {
  474. compatible = "socionext,uniphier-ld11-reset";
  475. #reset-cells = <1>;
  476. };
  477. watchdog {
  478. compatible = "socionext,uniphier-wdt";
  479. };
  480. };
  481. eth: ethernet@65000000 {
  482. compatible = "socionext,uniphier-ld11-ave4";
  483. status = "disabled";
  484. reg = <0x65000000 0x8500>;
  485. interrupts = <0 66 4>;
  486. clock-names = "ether";
  487. clocks = <&sys_clk 6>;
  488. reset-names = "ether";
  489. resets = <&sys_rst 6>;
  490. phy-mode = "internal";
  491. local-mac-address = [00 00 00 00 00 00];
  492. socionext,syscon-phy-mode = <&soc_glue 0>;
  493. mdio: mdio {
  494. #address-cells = <1>;
  495. #size-cells = <0>;
  496. };
  497. };
  498. nand: nand@68000000 {
  499. compatible = "socionext,uniphier-denali-nand-v5b";
  500. status = "disabled";
  501. reg-names = "nand_data", "denali_reg";
  502. reg = <0x68000000 0x20>, <0x68100000 0x1000>;
  503. interrupts = <0 65 4>;
  504. pinctrl-names = "default";
  505. pinctrl-0 = <&pinctrl_nand>;
  506. clocks = <&sys_clk 2>;
  507. resets = <&sys_rst 2>;
  508. };
  509. };
  510. };
  511. #include "uniphier-pinctrl.dtsi"
  512. &pinctrl_aoutiec1 {
  513. drive-strength = <4>; /* default: 4mA */
  514. ao1arc {
  515. pins = "AO1ARC";
  516. drive-strength = <8>; /* 8mA */
  517. };
  518. };