sun8i-a23-a33.dtsi 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  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. simplefb_lcd: 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. apb1_gates: clk@01c20068 {
  157. #clock-cells = <1>;
  158. compatible = "allwinner,sun8i-a23-apb1-gates-clk";
  159. reg = <0x01c20068 0x4>;
  160. clocks = <&apb1>;
  161. clock-indices = <0>, <5>,
  162. <12>, <13>;
  163. clock-output-names = "apb1_codec", "apb1_pio",
  164. "apb1_daudio0", "apb1_daudio1";
  165. };
  166. apb2: clk@01c20058 {
  167. #clock-cells = <0>;
  168. compatible = "allwinner,sun4i-a10-apb1-clk";
  169. reg = <0x01c20058 0x4>;
  170. clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
  171. clock-output-names = "apb2";
  172. };
  173. apb2_gates: clk@01c2006c {
  174. #clock-cells = <1>;
  175. compatible = "allwinner,sun8i-a23-apb2-gates-clk";
  176. reg = <0x01c2006c 0x4>;
  177. clocks = <&apb2>;
  178. clock-indices = <0>, <1>,
  179. <2>, <16>,
  180. <17>, <18>,
  181. <19>, <20>;
  182. clock-output-names = "apb2_i2c0", "apb2_i2c1",
  183. "apb2_i2c2", "apb2_uart0",
  184. "apb2_uart1", "apb2_uart2",
  185. "apb2_uart3", "apb2_uart4";
  186. };
  187. mmc0_clk: clk@01c20088 {
  188. #clock-cells = <1>;
  189. compatible = "allwinner,sun4i-a10-mmc-clk";
  190. reg = <0x01c20088 0x4>;
  191. clocks = <&osc24M>, <&pll6 0>;
  192. clock-output-names = "mmc0",
  193. "mmc0_output",
  194. "mmc0_sample";
  195. };
  196. mmc1_clk: clk@01c2008c {
  197. #clock-cells = <1>;
  198. compatible = "allwinner,sun4i-a10-mmc-clk";
  199. reg = <0x01c2008c 0x4>;
  200. clocks = <&osc24M>, <&pll6 0>;
  201. clock-output-names = "mmc1",
  202. "mmc1_output",
  203. "mmc1_sample";
  204. };
  205. mmc2_clk: clk@01c20090 {
  206. #clock-cells = <1>;
  207. compatible = "allwinner,sun4i-a10-mmc-clk";
  208. reg = <0x01c20090 0x4>;
  209. clocks = <&osc24M>, <&pll6 0>;
  210. clock-output-names = "mmc2",
  211. "mmc2_output",
  212. "mmc2_sample";
  213. };
  214. usb_clk: clk@01c200cc {
  215. #clock-cells = <1>;
  216. #reset-cells = <1>;
  217. compatible = "allwinner,sun8i-a23-usb-clk";
  218. reg = <0x01c200cc 0x4>;
  219. clocks = <&osc24M>;
  220. clock-output-names = "usb_phy0", "usb_phy1", "usb_hsic",
  221. "usb_hsic_12M", "usb_ohci0";
  222. };
  223. };
  224. soc@01c00000 {
  225. compatible = "simple-bus";
  226. #address-cells = <1>;
  227. #size-cells = <1>;
  228. ranges;
  229. dma: dma-controller@01c02000 {
  230. compatible = "allwinner,sun8i-a23-dma";
  231. reg = <0x01c02000 0x1000>;
  232. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  233. clocks = <&ahb1_gates 6>;
  234. resets = <&ahb1_rst 6>;
  235. #dma-cells = <1>;
  236. };
  237. mmc0: mmc@01c0f000 {
  238. compatible = "allwinner,sun5i-a13-mmc";
  239. reg = <0x01c0f000 0x1000>;
  240. clocks = <&ahb1_gates 8>,
  241. <&mmc0_clk 0>,
  242. <&mmc0_clk 1>,
  243. <&mmc0_clk 2>;
  244. clock-names = "ahb",
  245. "mmc",
  246. "output",
  247. "sample";
  248. resets = <&ahb1_rst 8>;
  249. reset-names = "ahb";
  250. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  251. status = "disabled";
  252. #address-cells = <1>;
  253. #size-cells = <0>;
  254. };
  255. mmc1: mmc@01c10000 {
  256. compatible = "allwinner,sun5i-a13-mmc";
  257. reg = <0x01c10000 0x1000>;
  258. clocks = <&ahb1_gates 9>,
  259. <&mmc1_clk 0>,
  260. <&mmc1_clk 1>,
  261. <&mmc1_clk 2>;
  262. clock-names = "ahb",
  263. "mmc",
  264. "output",
  265. "sample";
  266. resets = <&ahb1_rst 9>;
  267. reset-names = "ahb";
  268. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  269. status = "disabled";
  270. #address-cells = <1>;
  271. #size-cells = <0>;
  272. };
  273. mmc2: mmc@01c11000 {
  274. compatible = "allwinner,sun5i-a13-mmc";
  275. reg = <0x01c11000 0x1000>;
  276. clocks = <&ahb1_gates 10>,
  277. <&mmc2_clk 0>,
  278. <&mmc2_clk 1>,
  279. <&mmc2_clk 2>;
  280. clock-names = "ahb",
  281. "mmc",
  282. "output",
  283. "sample";
  284. resets = <&ahb1_rst 10>;
  285. reset-names = "ahb";
  286. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  287. status = "disabled";
  288. #address-cells = <1>;
  289. #size-cells = <0>;
  290. };
  291. ehci0: usb@01c1a000 {
  292. compatible = "allwinner,sun8i-a23-ehci", "generic-ehci";
  293. reg = <0x01c1a000 0x100>;
  294. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  295. clocks = <&ahb1_gates 26>;
  296. resets = <&ahb1_rst 26>;
  297. phys = <&usbphy 1>;
  298. phy-names = "usb";
  299. status = "disabled";
  300. };
  301. ohci0: usb@01c1a400 {
  302. compatible = "allwinner,sun8i-a23-ohci", "generic-ohci";
  303. reg = <0x01c1a400 0x100>;
  304. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  305. clocks = <&ahb1_gates 29>, <&usb_clk 16>;
  306. resets = <&ahb1_rst 29>;
  307. phys = <&usbphy 1>;
  308. phy-names = "usb";
  309. status = "disabled";
  310. };
  311. pio: pinctrl@01c20800 {
  312. /* compatible gets set in SoC specific dtsi file */
  313. reg = <0x01c20800 0x400>;
  314. /* interrupts get set in SoC specific dtsi file */
  315. clocks = <&apb1_gates 5>;
  316. gpio-controller;
  317. interrupt-controller;
  318. #interrupt-cells = <3>;
  319. #gpio-cells = <3>;
  320. uart0_pins_a: uart0@0 {
  321. allwinner,pins = "PF2", "PF4";
  322. allwinner,function = "uart0";
  323. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  324. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  325. };
  326. mmc0_pins_a: mmc0@0 {
  327. allwinner,pins = "PF0", "PF1", "PF2",
  328. "PF3", "PF4", "PF5";
  329. allwinner,function = "mmc0";
  330. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  331. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  332. };
  333. mmc1_pins_a: mmc1@0 {
  334. allwinner,pins = "PG0", "PG1", "PG2",
  335. "PG3", "PG4", "PG5";
  336. allwinner,function = "mmc1";
  337. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  338. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  339. };
  340. mmc2_8bit_pins: mmc2_8bit {
  341. allwinner,pins = "PC5", "PC6", "PC8",
  342. "PC9", "PC10", "PC11",
  343. "PC12", "PC13", "PC14",
  344. "PC15", "PC16";
  345. allwinner,function = "mmc2";
  346. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  347. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  348. };
  349. pwm0_pins: pwm0 {
  350. allwinner,pins = "PH0";
  351. allwinner,function = "pwm0";
  352. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  353. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  354. };
  355. i2c0_pins_a: i2c0@0 {
  356. allwinner,pins = "PH2", "PH3";
  357. allwinner,function = "i2c0";
  358. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  359. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  360. };
  361. i2c1_pins_a: i2c1@0 {
  362. allwinner,pins = "PH4", "PH5";
  363. allwinner,function = "i2c1";
  364. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  365. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  366. };
  367. i2c2_pins_a: i2c2@0 {
  368. allwinner,pins = "PE12", "PE13";
  369. allwinner,function = "i2c2";
  370. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  371. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  372. };
  373. };
  374. ahb1_rst: reset@01c202c0 {
  375. #reset-cells = <1>;
  376. compatible = "allwinner,sun6i-a31-clock-reset";
  377. reg = <0x01c202c0 0xc>;
  378. };
  379. apb1_rst: reset@01c202d0 {
  380. #reset-cells = <1>;
  381. compatible = "allwinner,sun6i-a31-clock-reset";
  382. reg = <0x01c202d0 0x4>;
  383. };
  384. apb2_rst: reset@01c202d8 {
  385. #reset-cells = <1>;
  386. compatible = "allwinner,sun6i-a31-clock-reset";
  387. reg = <0x01c202d8 0x4>;
  388. };
  389. timer@01c20c00 {
  390. compatible = "allwinner,sun4i-a10-timer";
  391. reg = <0x01c20c00 0xa0>;
  392. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  393. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  394. clocks = <&osc24M>;
  395. };
  396. wdt0: watchdog@01c20ca0 {
  397. compatible = "allwinner,sun6i-a31-wdt";
  398. reg = <0x01c20ca0 0x20>;
  399. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  400. };
  401. pwm: pwm@01c21400 {
  402. compatible = "allwinner,sun7i-a20-pwm";
  403. reg = <0x01c21400 0xc>;
  404. clocks = <&osc24M>;
  405. #pwm-cells = <3>;
  406. status = "disabled";
  407. };
  408. lradc: lradc@01c22800 {
  409. compatible = "allwinner,sun4i-a10-lradc-keys";
  410. reg = <0x01c22800 0x100>;
  411. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  412. status = "disabled";
  413. };
  414. uart0: serial@01c28000 {
  415. compatible = "snps,dw-apb-uart";
  416. reg = <0x01c28000 0x400>;
  417. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  418. reg-shift = <2>;
  419. reg-io-width = <4>;
  420. clocks = <&apb2_gates 16>;
  421. resets = <&apb2_rst 16>;
  422. dmas = <&dma 6>, <&dma 6>;
  423. dma-names = "rx", "tx";
  424. status = "disabled";
  425. };
  426. uart1: serial@01c28400 {
  427. compatible = "snps,dw-apb-uart";
  428. reg = <0x01c28400 0x400>;
  429. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  430. reg-shift = <2>;
  431. reg-io-width = <4>;
  432. clocks = <&apb2_gates 17>;
  433. resets = <&apb2_rst 17>;
  434. dmas = <&dma 7>, <&dma 7>;
  435. dma-names = "rx", "tx";
  436. status = "disabled";
  437. };
  438. uart2: serial@01c28800 {
  439. compatible = "snps,dw-apb-uart";
  440. reg = <0x01c28800 0x400>;
  441. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  442. reg-shift = <2>;
  443. reg-io-width = <4>;
  444. clocks = <&apb2_gates 18>;
  445. resets = <&apb2_rst 18>;
  446. dmas = <&dma 8>, <&dma 8>;
  447. dma-names = "rx", "tx";
  448. status = "disabled";
  449. };
  450. uart3: serial@01c28c00 {
  451. compatible = "snps,dw-apb-uart";
  452. reg = <0x01c28c00 0x400>;
  453. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  454. reg-shift = <2>;
  455. reg-io-width = <4>;
  456. clocks = <&apb2_gates 19>;
  457. resets = <&apb2_rst 19>;
  458. dmas = <&dma 9>, <&dma 9>;
  459. dma-names = "rx", "tx";
  460. status = "disabled";
  461. };
  462. uart4: serial@01c29000 {
  463. compatible = "snps,dw-apb-uart";
  464. reg = <0x01c29000 0x400>;
  465. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  466. reg-shift = <2>;
  467. reg-io-width = <4>;
  468. clocks = <&apb2_gates 20>;
  469. resets = <&apb2_rst 20>;
  470. dmas = <&dma 10>, <&dma 10>;
  471. dma-names = "rx", "tx";
  472. status = "disabled";
  473. };
  474. i2c0: i2c@01c2ac00 {
  475. compatible = "allwinner,sun6i-a31-i2c";
  476. reg = <0x01c2ac00 0x400>;
  477. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  478. clocks = <&apb2_gates 0>;
  479. resets = <&apb2_rst 0>;
  480. status = "disabled";
  481. #address-cells = <1>;
  482. #size-cells = <0>;
  483. };
  484. i2c1: i2c@01c2b000 {
  485. compatible = "allwinner,sun6i-a31-i2c";
  486. reg = <0x01c2b000 0x400>;
  487. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  488. clocks = <&apb2_gates 1>;
  489. resets = <&apb2_rst 1>;
  490. status = "disabled";
  491. #address-cells = <1>;
  492. #size-cells = <0>;
  493. };
  494. i2c2: i2c@01c2b400 {
  495. compatible = "allwinner,sun6i-a31-i2c";
  496. reg = <0x01c2b400 0x400>;
  497. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  498. clocks = <&apb2_gates 2>;
  499. resets = <&apb2_rst 2>;
  500. status = "disabled";
  501. #address-cells = <1>;
  502. #size-cells = <0>;
  503. };
  504. gic: interrupt-controller@01c81000 {
  505. compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
  506. reg = <0x01c81000 0x1000>,
  507. <0x01c82000 0x1000>,
  508. <0x01c84000 0x2000>,
  509. <0x01c86000 0x2000>;
  510. interrupt-controller;
  511. #interrupt-cells = <3>;
  512. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  513. };
  514. rtc: rtc@01f00000 {
  515. compatible = "allwinner,sun6i-a31-rtc";
  516. reg = <0x01f00000 0x54>;
  517. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  518. <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  519. };
  520. nmi_intc: interrupt-controller@01f00c0c {
  521. compatible = "allwinner,sun6i-a31-sc-nmi";
  522. interrupt-controller;
  523. #interrupt-cells = <2>;
  524. reg = <0x01f00c0c 0x38>;
  525. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  526. };
  527. prcm@01f01400 {
  528. compatible = "allwinner,sun8i-a23-prcm";
  529. reg = <0x01f01400 0x200>;
  530. ar100: ar100_clk {
  531. compatible = "fixed-factor-clock";
  532. #clock-cells = <0>;
  533. clock-div = <1>;
  534. clock-mult = <1>;
  535. clocks = <&osc24M>;
  536. clock-output-names = "ar100";
  537. };
  538. ahb0: ahb0_clk {
  539. compatible = "fixed-factor-clock";
  540. #clock-cells = <0>;
  541. clock-div = <1>;
  542. clock-mult = <1>;
  543. clocks = <&ar100>;
  544. clock-output-names = "ahb0";
  545. };
  546. apb0: apb0_clk {
  547. compatible = "allwinner,sun8i-a23-apb0-clk";
  548. #clock-cells = <0>;
  549. clocks = <&ahb0>;
  550. clock-output-names = "apb0";
  551. };
  552. apb0_gates: apb0_gates_clk {
  553. compatible = "allwinner,sun8i-a23-apb0-gates-clk";
  554. #clock-cells = <1>;
  555. clocks = <&apb0>;
  556. clock-output-names = "apb0_pio", "apb0_timer",
  557. "apb0_rsb", "apb0_uart",
  558. "apb0_i2c";
  559. };
  560. apb0_rst: apb0_rst {
  561. compatible = "allwinner,sun6i-a31-clock-reset";
  562. #reset-cells = <1>;
  563. };
  564. };
  565. cpucfg@01f01c00 {
  566. compatible = "allwinner,sun8i-a23-cpuconfig";
  567. reg = <0x01f01c00 0x300>;
  568. };
  569. r_uart: serial@01f02800 {
  570. compatible = "snps,dw-apb-uart";
  571. reg = <0x01f02800 0x400>;
  572. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  573. reg-shift = <2>;
  574. reg-io-width = <4>;
  575. clocks = <&apb0_gates 4>;
  576. resets = <&apb0_rst 4>;
  577. status = "disabled";
  578. };
  579. r_pio: pinctrl@01f02c00 {
  580. compatible = "allwinner,sun8i-a23-r-pinctrl";
  581. reg = <0x01f02c00 0x400>;
  582. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  583. clocks = <&apb0_gates 0>;
  584. resets = <&apb0_rst 0>;
  585. gpio-controller;
  586. interrupt-controller;
  587. #interrupt-cells = <3>;
  588. #address-cells = <1>;
  589. #size-cells = <0>;
  590. #gpio-cells = <3>;
  591. r_rsb_pins: r_rsb {
  592. allwinner,pins = "PL0", "PL1";
  593. allwinner,function = "s_rsb";
  594. allwinner,drive = <SUN4I_PINCTRL_20_MA>;
  595. allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
  596. };
  597. r_uart_pins_a: r_uart@0 {
  598. allwinner,pins = "PL2", "PL3";
  599. allwinner,function = "s_uart";
  600. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  601. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  602. };
  603. };
  604. r_rsb: rsb@01f03400 {
  605. compatible = "allwinner,sun8i-a23-rsb";
  606. reg = <0x01f03400 0x400>;
  607. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  608. clocks = <&apb0_gates 3>;
  609. clock-frequency = <3000000>;
  610. resets = <&apb0_rst 3>;
  611. pinctrl-names = "default";
  612. pinctrl-0 = <&r_rsb_pins>;
  613. status = "disabled";
  614. #address-cells = <1>;
  615. #size-cells = <0>;
  616. };
  617. };
  618. };