sun8i-a23-a33.dtsi 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. /*
  2. * Copyright 2014 Chen-Yu Tsai
  3. *
  4. * Chen-Yu Tsai <wens@csie.org>
  5. *
  6. * This file is dual-licensed: you can use it either under the terms
  7. * of the GPL or the X11 license, at your option. Note that this dual
  8. * licensing only applies to this file, and not this project as a
  9. * whole.
  10. *
  11. * a) This file is free software; you can redistribute it and/or
  12. * modify it under the terms of the GNU General Public License as
  13. * published by the Free Software Foundation; either version 2 of the
  14. * License, or (at your option) any later version.
  15. *
  16. * This file is distributed in the hope that it will be useful,
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. * GNU General Public License for more details.
  20. *
  21. * Or, alternatively,
  22. *
  23. * b) Permission is hereby granted, free of charge, to any person
  24. * obtaining a copy of this software and associated documentation
  25. * files (the "Software"), to deal in the Software without
  26. * restriction, including without limitation the rights to use,
  27. * copy, modify, merge, publish, distribute, sublicense, and/or
  28. * sell copies of the Software, and to permit persons to whom the
  29. * Software is furnished to do so, subject to the following
  30. * conditions:
  31. *
  32. * The above copyright notice and this permission notice shall be
  33. * included in all copies or substantial portions of the Software.
  34. *
  35. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  36. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  37. * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  38. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  39. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  40. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  41. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  42. * OTHER DEALINGS IN THE SOFTWARE.
  43. */
  44. #include "skeleton.dtsi"
  45. #include <dt-bindings/interrupt-controller/arm-gic.h>
  46. #include <dt-bindings/pinctrl/sun4i-a10.h>
  47. / {
  48. interrupt-parent = <&gic>;
  49. chosen {
  50. #address-cells = <1>;
  51. #size-cells = <1>;
  52. ranges;
  53. framebuffer@0 {
  54. compatible = "allwinner,simple-framebuffer",
  55. "simple-framebuffer";
  56. allwinner,pipeline = "de_be0-lcd0";
  57. clocks = <&pll6 0>;
  58. status = "disabled";
  59. };
  60. };
  61. timer {
  62. compatible = "arm,armv7-timer";
  63. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  64. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  65. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  66. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  67. clock-frequency = <24000000>;
  68. arm,cpu-registers-not-fw-configured;
  69. };
  70. cpus {
  71. enable-method = "allwinner,sun8i-a23";
  72. #address-cells = <1>;
  73. #size-cells = <0>;
  74. cpu@0 {
  75. compatible = "arm,cortex-a7";
  76. device_type = "cpu";
  77. reg = <0>;
  78. };
  79. cpu@1 {
  80. compatible = "arm,cortex-a7";
  81. device_type = "cpu";
  82. reg = <1>;
  83. };
  84. };
  85. clocks {
  86. #address-cells = <1>;
  87. #size-cells = <1>;
  88. ranges;
  89. osc24M: osc24M_clk {
  90. #clock-cells = <0>;
  91. compatible = "fixed-clock";
  92. clock-frequency = <24000000>;
  93. clock-output-names = "osc24M";
  94. };
  95. osc32k: osc32k_clk {
  96. #clock-cells = <0>;
  97. compatible = "fixed-clock";
  98. clock-frequency = <32768>;
  99. clock-output-names = "osc32k";
  100. };
  101. pll1: clk@01c20000 {
  102. #clock-cells = <0>;
  103. compatible = "allwinner,sun8i-a23-pll1-clk";
  104. reg = <0x01c20000 0x4>;
  105. clocks = <&osc24M>;
  106. clock-output-names = "pll1";
  107. };
  108. /* dummy clock until actually implemented */
  109. pll5: pll5_clk {
  110. #clock-cells = <0>;
  111. compatible = "fixed-clock";
  112. clock-frequency = <0>;
  113. clock-output-names = "pll5";
  114. };
  115. pll6: clk@01c20028 {
  116. #clock-cells = <1>;
  117. compatible = "allwinner,sun6i-a31-pll6-clk";
  118. reg = <0x01c20028 0x4>;
  119. clocks = <&osc24M>;
  120. clock-output-names = "pll6", "pll6x2";
  121. };
  122. cpu: cpu_clk@01c20050 {
  123. #clock-cells = <0>;
  124. compatible = "allwinner,sun4i-a10-cpu-clk";
  125. reg = <0x01c20050 0x4>;
  126. /*
  127. * PLL1 is listed twice here.
  128. * While it looks suspicious, it's actually documented
  129. * that way both in the datasheet and in the code from
  130. * Allwinner.
  131. */
  132. clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>;
  133. clock-output-names = "cpu";
  134. };
  135. axi: axi_clk@01c20050 {
  136. #clock-cells = <0>;
  137. compatible = "allwinner,sun8i-a23-axi-clk";
  138. reg = <0x01c20050 0x4>;
  139. clocks = <&cpu>;
  140. clock-output-names = "axi";
  141. };
  142. ahb1: ahb1_clk@01c20054 {
  143. #clock-cells = <0>;
  144. compatible = "allwinner,sun6i-a31-ahb1-clk";
  145. reg = <0x01c20054 0x4>;
  146. clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>;
  147. clock-output-names = "ahb1";
  148. };
  149. apb1: apb1_clk@01c20054 {
  150. #clock-cells = <0>;
  151. compatible = "allwinner,sun4i-a10-apb0-clk";
  152. reg = <0x01c20054 0x4>;
  153. clocks = <&ahb1>;
  154. clock-output-names = "apb1";
  155. };
  156. ahb1_gates: clk@01c20060 {
  157. #clock-cells = <1>;
  158. compatible = "allwinner,sun8i-a23-ahb1-gates-clk";
  159. reg = <0x01c20060 0x8>;
  160. clocks = <&ahb1>;
  161. clock-output-names = "ahb1_mipidsi", "ahb1_dma",
  162. "ahb1_mmc0", "ahb1_mmc1", "ahb1_mmc2",
  163. "ahb1_nand", "ahb1_sdram",
  164. "ahb1_hstimer", "ahb1_spi0",
  165. "ahb1_spi1", "ahb1_otg", "ahb1_ehci",
  166. "ahb1_ohci", "ahb1_ve", "ahb1_lcd",
  167. "ahb1_csi", "ahb1_be", "ahb1_fe",
  168. "ahb1_gpu", "ahb1_spinlock",
  169. "ahb1_drc";
  170. };
  171. apb1_gates: clk@01c20068 {
  172. #clock-cells = <1>;
  173. compatible = "allwinner,sun8i-a23-apb1-gates-clk";
  174. reg = <0x01c20068 0x4>;
  175. clocks = <&apb1>;
  176. clock-output-names = "apb1_codec", "apb1_pio",
  177. "apb1_daudio0", "apb1_daudio1";
  178. };
  179. apb2: clk@01c20058 {
  180. #clock-cells = <0>;
  181. compatible = "allwinner,sun4i-a10-apb1-clk";
  182. reg = <0x01c20058 0x4>;
  183. clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
  184. clock-output-names = "apb2";
  185. };
  186. apb2_gates: clk@01c2006c {
  187. #clock-cells = <1>;
  188. compatible = "allwinner,sun8i-a23-apb2-gates-clk";
  189. reg = <0x01c2006c 0x4>;
  190. clocks = <&apb2>;
  191. clock-output-names = "apb2_i2c0", "apb2_i2c1",
  192. "apb2_i2c2", "apb2_uart0",
  193. "apb2_uart1", "apb2_uart2",
  194. "apb2_uart3", "apb2_uart4";
  195. };
  196. mmc0_clk: clk@01c20088 {
  197. #clock-cells = <1>;
  198. compatible = "allwinner,sun4i-a10-mmc-clk";
  199. reg = <0x01c20088 0x4>;
  200. clocks = <&osc24M>, <&pll6 0>;
  201. clock-output-names = "mmc0",
  202. "mmc0_output",
  203. "mmc0_sample";
  204. };
  205. mmc1_clk: clk@01c2008c {
  206. #clock-cells = <1>;
  207. compatible = "allwinner,sun4i-a10-mmc-clk";
  208. reg = <0x01c2008c 0x4>;
  209. clocks = <&osc24M>, <&pll6 0>;
  210. clock-output-names = "mmc1",
  211. "mmc1_output",
  212. "mmc1_sample";
  213. };
  214. mmc2_clk: clk@01c20090 {
  215. #clock-cells = <1>;
  216. compatible = "allwinner,sun4i-a10-mmc-clk";
  217. reg = <0x01c20090 0x4>;
  218. clocks = <&osc24M>, <&pll6 0>;
  219. clock-output-names = "mmc2",
  220. "mmc2_output",
  221. "mmc2_sample";
  222. };
  223. usb_clk: clk@01c200cc {
  224. #clock-cells = <1>;
  225. #reset-cells = <1>;
  226. compatible = "allwinner,sun8i-a23-usb-clk";
  227. reg = <0x01c200cc 0x4>;
  228. clocks = <&osc24M>;
  229. clock-output-names = "usb_phy0", "usb_phy1", "usb_hsic",
  230. "usb_hsic_12M", "usb_ohci0";
  231. };
  232. };
  233. soc@01c00000 {
  234. compatible = "simple-bus";
  235. #address-cells = <1>;
  236. #size-cells = <1>;
  237. ranges;
  238. dma: dma-controller@01c02000 {
  239. compatible = "allwinner,sun8i-a23-dma";
  240. reg = <0x01c02000 0x1000>;
  241. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  242. clocks = <&ahb1_gates 6>;
  243. resets = <&ahb1_rst 6>;
  244. #dma-cells = <1>;
  245. };
  246. mmc0: mmc@01c0f000 {
  247. compatible = "allwinner,sun5i-a13-mmc";
  248. reg = <0x01c0f000 0x1000>;
  249. clocks = <&ahb1_gates 8>,
  250. <&mmc0_clk 0>,
  251. <&mmc0_clk 1>,
  252. <&mmc0_clk 2>;
  253. clock-names = "ahb",
  254. "mmc",
  255. "output",
  256. "sample";
  257. resets = <&ahb1_rst 8>;
  258. reset-names = "ahb";
  259. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  260. status = "disabled";
  261. #address-cells = <1>;
  262. #size-cells = <0>;
  263. };
  264. mmc1: mmc@01c10000 {
  265. compatible = "allwinner,sun5i-a13-mmc";
  266. reg = <0x01c10000 0x1000>;
  267. clocks = <&ahb1_gates 9>,
  268. <&mmc1_clk 0>,
  269. <&mmc1_clk 1>,
  270. <&mmc1_clk 2>;
  271. clock-names = "ahb",
  272. "mmc",
  273. "output",
  274. "sample";
  275. resets = <&ahb1_rst 9>;
  276. reset-names = "ahb";
  277. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  278. status = "disabled";
  279. #address-cells = <1>;
  280. #size-cells = <0>;
  281. };
  282. mmc2: mmc@01c11000 {
  283. compatible = "allwinner,sun5i-a13-mmc";
  284. reg = <0x01c11000 0x1000>;
  285. clocks = <&ahb1_gates 10>,
  286. <&mmc2_clk 0>,
  287. <&mmc2_clk 1>,
  288. <&mmc2_clk 2>;
  289. clock-names = "ahb",
  290. "mmc",
  291. "output",
  292. "sample";
  293. resets = <&ahb1_rst 10>;
  294. reset-names = "ahb";
  295. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  296. status = "disabled";
  297. #address-cells = <1>;
  298. #size-cells = <0>;
  299. };
  300. pio: pinctrl@01c20800 {
  301. /* compatible gets set in SoC specific dtsi file */
  302. reg = <0x01c20800 0x400>;
  303. /* interrupts get set in SoC specific dtsi file */
  304. clocks = <&apb1_gates 5>;
  305. gpio-controller;
  306. interrupt-controller;
  307. #address-cells = <1>;
  308. #size-cells = <0>;
  309. #gpio-cells = <3>;
  310. uart0_pins_a: uart0@0 {
  311. allwinner,pins = "PF2", "PF4";
  312. allwinner,function = "uart0";
  313. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  314. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  315. };
  316. mmc0_pins_a: mmc0@0 {
  317. allwinner,pins = "PF0", "PF1", "PF2",
  318. "PF3", "PF4", "PF5";
  319. allwinner,function = "mmc0";
  320. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  321. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  322. };
  323. mmc1_pins_a: mmc1@0 {
  324. allwinner,pins = "PG0", "PG1", "PG2",
  325. "PG3", "PG4", "PG5";
  326. allwinner,function = "mmc1";
  327. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  328. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  329. };
  330. i2c0_pins_a: i2c0@0 {
  331. allwinner,pins = "PH2", "PH3";
  332. allwinner,function = "i2c0";
  333. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  334. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  335. };
  336. i2c1_pins_a: i2c1@0 {
  337. allwinner,pins = "PH4", "PH5";
  338. allwinner,function = "i2c1";
  339. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  340. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  341. };
  342. i2c2_pins_a: i2c2@0 {
  343. allwinner,pins = "PE12", "PE13";
  344. allwinner,function = "i2c2";
  345. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  346. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  347. };
  348. };
  349. ahb1_rst: reset@01c202c0 {
  350. #reset-cells = <1>;
  351. compatible = "allwinner,sun6i-a31-clock-reset";
  352. reg = <0x01c202c0 0xc>;
  353. };
  354. apb1_rst: reset@01c202d0 {
  355. #reset-cells = <1>;
  356. compatible = "allwinner,sun6i-a31-clock-reset";
  357. reg = <0x01c202d0 0x4>;
  358. };
  359. apb2_rst: reset@01c202d8 {
  360. #reset-cells = <1>;
  361. compatible = "allwinner,sun6i-a31-clock-reset";
  362. reg = <0x01c202d8 0x4>;
  363. };
  364. timer@01c20c00 {
  365. compatible = "allwinner,sun4i-a10-timer";
  366. reg = <0x01c20c00 0xa0>;
  367. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  368. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  369. clocks = <&osc24M>;
  370. };
  371. wdt0: watchdog@01c20ca0 {
  372. compatible = "allwinner,sun6i-a31-wdt";
  373. reg = <0x01c20ca0 0x20>;
  374. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  375. };
  376. lradc: lradc@01c22800 {
  377. compatible = "allwinner,sun4i-a10-lradc-keys";
  378. reg = <0x01c22800 0x100>;
  379. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  380. status = "disabled";
  381. };
  382. uart0: serial@01c28000 {
  383. compatible = "snps,dw-apb-uart";
  384. reg = <0x01c28000 0x400>;
  385. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  386. reg-shift = <2>;
  387. reg-io-width = <4>;
  388. clocks = <&apb2_gates 16>;
  389. resets = <&apb2_rst 16>;
  390. dmas = <&dma 6>, <&dma 6>;
  391. dma-names = "rx", "tx";
  392. status = "disabled";
  393. };
  394. uart1: serial@01c28400 {
  395. compatible = "snps,dw-apb-uart";
  396. reg = <0x01c28400 0x400>;
  397. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  398. reg-shift = <2>;
  399. reg-io-width = <4>;
  400. clocks = <&apb2_gates 17>;
  401. resets = <&apb2_rst 17>;
  402. dmas = <&dma 7>, <&dma 7>;
  403. dma-names = "rx", "tx";
  404. status = "disabled";
  405. };
  406. uart2: serial@01c28800 {
  407. compatible = "snps,dw-apb-uart";
  408. reg = <0x01c28800 0x400>;
  409. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  410. reg-shift = <2>;
  411. reg-io-width = <4>;
  412. clocks = <&apb2_gates 18>;
  413. resets = <&apb2_rst 18>;
  414. dmas = <&dma 8>, <&dma 8>;
  415. dma-names = "rx", "tx";
  416. status = "disabled";
  417. };
  418. uart3: serial@01c28c00 {
  419. compatible = "snps,dw-apb-uart";
  420. reg = <0x01c28c00 0x400>;
  421. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  422. reg-shift = <2>;
  423. reg-io-width = <4>;
  424. clocks = <&apb2_gates 19>;
  425. resets = <&apb2_rst 19>;
  426. dmas = <&dma 9>, <&dma 9>;
  427. dma-names = "rx", "tx";
  428. status = "disabled";
  429. };
  430. uart4: serial@01c29000 {
  431. compatible = "snps,dw-apb-uart";
  432. reg = <0x01c29000 0x400>;
  433. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  434. reg-shift = <2>;
  435. reg-io-width = <4>;
  436. clocks = <&apb2_gates 20>;
  437. resets = <&apb2_rst 20>;
  438. dmas = <&dma 10>, <&dma 10>;
  439. dma-names = "rx", "tx";
  440. status = "disabled";
  441. };
  442. i2c0: i2c@01c2ac00 {
  443. compatible = "allwinner,sun6i-a31-i2c";
  444. reg = <0x01c2ac00 0x400>;
  445. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  446. clocks = <&apb2_gates 0>;
  447. resets = <&apb2_rst 0>;
  448. status = "disabled";
  449. #address-cells = <1>;
  450. #size-cells = <0>;
  451. };
  452. i2c1: i2c@01c2b000 {
  453. compatible = "allwinner,sun6i-a31-i2c";
  454. reg = <0x01c2b000 0x400>;
  455. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  456. clocks = <&apb2_gates 1>;
  457. resets = <&apb2_rst 1>;
  458. status = "disabled";
  459. #address-cells = <1>;
  460. #size-cells = <0>;
  461. };
  462. i2c2: i2c@01c2b400 {
  463. compatible = "allwinner,sun6i-a31-i2c";
  464. reg = <0x01c2b400 0x400>;
  465. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  466. clocks = <&apb2_gates 2>;
  467. resets = <&apb2_rst 2>;
  468. status = "disabled";
  469. #address-cells = <1>;
  470. #size-cells = <0>;
  471. };
  472. gic: interrupt-controller@01c81000 {
  473. compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
  474. reg = <0x01c81000 0x1000>,
  475. <0x01c82000 0x1000>,
  476. <0x01c84000 0x2000>,
  477. <0x01c86000 0x2000>;
  478. interrupt-controller;
  479. #interrupt-cells = <3>;
  480. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  481. };
  482. rtc: rtc@01f00000 {
  483. compatible = "allwinner,sun6i-a31-rtc";
  484. reg = <0x01f00000 0x54>;
  485. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  486. <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  487. };
  488. prcm@01f01400 {
  489. compatible = "allwinner,sun8i-a23-prcm";
  490. reg = <0x01f01400 0x200>;
  491. ar100: ar100_clk {
  492. compatible = "fixed-factor-clock";
  493. #clock-cells = <0>;
  494. clock-div = <1>;
  495. clock-mult = <1>;
  496. clocks = <&osc24M>;
  497. clock-output-names = "ar100";
  498. };
  499. ahb0: ahb0_clk {
  500. compatible = "fixed-factor-clock";
  501. #clock-cells = <0>;
  502. clock-div = <1>;
  503. clock-mult = <1>;
  504. clocks = <&ar100>;
  505. clock-output-names = "ahb0";
  506. };
  507. apb0: apb0_clk {
  508. compatible = "allwinner,sun8i-a23-apb0-clk";
  509. #clock-cells = <0>;
  510. clocks = <&ahb0>;
  511. clock-output-names = "apb0";
  512. };
  513. apb0_gates: apb0_gates_clk {
  514. compatible = "allwinner,sun8i-a23-apb0-gates-clk";
  515. #clock-cells = <1>;
  516. clocks = <&apb0>;
  517. clock-output-names = "apb0_pio", "apb0_timer",
  518. "apb0_rsb", "apb0_uart",
  519. "apb0_i2c";
  520. };
  521. apb0_rst: apb0_rst {
  522. compatible = "allwinner,sun6i-a31-clock-reset";
  523. #reset-cells = <1>;
  524. };
  525. };
  526. cpucfg@01f01c00 {
  527. compatible = "allwinner,sun8i-a23-cpuconfig";
  528. reg = <0x01f01c00 0x300>;
  529. };
  530. r_uart: serial@01f02800 {
  531. compatible = "snps,dw-apb-uart";
  532. reg = <0x01f02800 0x400>;
  533. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  534. reg-shift = <2>;
  535. reg-io-width = <4>;
  536. clocks = <&apb0_gates 4>;
  537. resets = <&apb0_rst 4>;
  538. status = "disabled";
  539. };
  540. r_pio: pinctrl@01f02c00 {
  541. compatible = "allwinner,sun8i-a23-r-pinctrl";
  542. reg = <0x01f02c00 0x400>;
  543. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  544. clocks = <&apb0_gates 0>;
  545. resets = <&apb0_rst 0>;
  546. gpio-controller;
  547. interrupt-controller;
  548. #address-cells = <1>;
  549. #size-cells = <0>;
  550. #gpio-cells = <3>;
  551. r_uart_pins_a: r_uart@0 {
  552. allwinner,pins = "PL2", "PL3";
  553. allwinner,function = "s_uart";
  554. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  555. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  556. };
  557. };
  558. };
  559. };