sun8i-a23-a33.dtsi 18 KB

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