sun8i-a23-a33.dtsi 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855
  1. /*
  2. * Copyright 2014 Chen-Yu Tsai
  3. *
  4. * Chen-Yu Tsai <[email protected]>
  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 <dt-bindings/interrupt-controller/arm-gic.h>
  45. #include <dt-bindings/clock/sun6i-rtc.h>
  46. #include <dt-bindings/clock/sun8i-a23-a33-ccu.h>
  47. #include <dt-bindings/reset/sun8i-a23-a33-ccu.h>
  48. / {
  49. interrupt-parent = <&gic>;
  50. #address-cells = <1>;
  51. #size-cells = <1>;
  52. chosen {
  53. #address-cells = <1>;
  54. #size-cells = <1>;
  55. ranges;
  56. simplefb_lcd: framebuffer-lcd0 {
  57. compatible = "allwinner,simple-framebuffer",
  58. "simple-framebuffer";
  59. allwinner,pipeline = "de_be0-lcd0";
  60. clocks = <&ccu CLK_BUS_LCD>, <&ccu CLK_BUS_DE_BE>,
  61. <&ccu CLK_LCD_CH0>, <&ccu CLK_DE_BE>,
  62. <&ccu CLK_DRAM_DE_BE>, <&ccu CLK_DRC>;
  63. status = "disabled";
  64. };
  65. };
  66. de: display-engine {
  67. /* compatible gets set in SoC specific dtsi file */
  68. allwinner,pipelines = <&fe0>;
  69. status = "disabled";
  70. };
  71. timer {
  72. compatible = "arm,armv7-timer";
  73. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  74. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  75. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  76. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  77. clock-frequency = <24000000>;
  78. arm,cpu-registers-not-fw-configured;
  79. };
  80. cpus {
  81. enable-method = "allwinner,sun8i-a23";
  82. #address-cells = <1>;
  83. #size-cells = <0>;
  84. cpu0: cpu@0 {
  85. compatible = "arm,cortex-a7";
  86. device_type = "cpu";
  87. reg = <0>;
  88. };
  89. cpu@1 {
  90. compatible = "arm,cortex-a7";
  91. device_type = "cpu";
  92. reg = <1>;
  93. };
  94. };
  95. clocks {
  96. #address-cells = <1>;
  97. #size-cells = <1>;
  98. ranges;
  99. osc24M: osc24M_clk {
  100. #clock-cells = <0>;
  101. compatible = "fixed-clock";
  102. clock-frequency = <24000000>;
  103. clock-accuracy = <50000>;
  104. clock-output-names = "osc24M";
  105. };
  106. ext_osc32k: ext_osc32k_clk {
  107. #clock-cells = <0>;
  108. compatible = "fixed-clock";
  109. clock-frequency = <32768>;
  110. clock-accuracy = <50000>;
  111. clock-output-names = "ext-osc32k";
  112. };
  113. };
  114. soc {
  115. compatible = "simple-bus";
  116. #address-cells = <1>;
  117. #size-cells = <1>;
  118. ranges;
  119. system-control@1c00000 {
  120. compatible = "allwinner,sun8i-a23-system-control";
  121. reg = <0x01c00000 0x30>;
  122. #address-cells = <1>;
  123. #size-cells = <1>;
  124. ranges;
  125. sram_c: sram@1d00000 {
  126. compatible = "mmio-sram";
  127. reg = <0x01d00000 0x80000>;
  128. #address-cells = <1>;
  129. #size-cells = <1>;
  130. ranges = <0 0x01d00000 0x80000>;
  131. ve_sram: sram-section@0 {
  132. compatible = "allwinner,sun8i-a23-sram-c1",
  133. "allwinner,sun4i-a10-sram-c1";
  134. reg = <0x000000 0x80000>;
  135. };
  136. };
  137. };
  138. dma: dma-controller@1c02000 {
  139. compatible = "allwinner,sun8i-a23-dma";
  140. reg = <0x01c02000 0x1000>;
  141. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  142. clocks = <&ccu CLK_BUS_DMA>;
  143. resets = <&ccu RST_BUS_DMA>;
  144. #dma-cells = <1>;
  145. };
  146. nfc: nand-controller@1c03000 {
  147. compatible = "allwinner,sun8i-a23-nand-controller";
  148. reg = <0x01c03000 0x1000>;
  149. interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
  150. clocks = <&ccu CLK_BUS_NAND>, <&ccu CLK_NAND>;
  151. clock-names = "ahb", "mod";
  152. resets = <&ccu RST_BUS_NAND>;
  153. reset-names = "ahb";
  154. dmas = <&dma 5>;
  155. dma-names = "rxtx";
  156. pinctrl-names = "default";
  157. pinctrl-0 = <&nand_pins &nand_cs0_pin &nand_rb0_pin>;
  158. status = "disabled";
  159. #address-cells = <1>;
  160. #size-cells = <0>;
  161. };
  162. tcon0: lcd-controller@1c0c000 {
  163. /* compatible gets set in SoC specific dtsi file */
  164. reg = <0x01c0c000 0x1000>;
  165. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  166. dmas = <&dma 12>;
  167. clocks = <&ccu CLK_BUS_LCD>,
  168. <&ccu CLK_LCD_CH0>,
  169. <&ccu 13>;
  170. clock-names = "ahb",
  171. "tcon-ch0",
  172. "lvds-alt";
  173. clock-output-names = "tcon-pixel-clock";
  174. #clock-cells = <0>;
  175. resets = <&ccu RST_BUS_LCD>,
  176. <&ccu RST_BUS_LVDS>;
  177. reset-names = "lcd",
  178. "lvds";
  179. status = "disabled";
  180. ports {
  181. #address-cells = <1>;
  182. #size-cells = <0>;
  183. tcon0_in: port@0 {
  184. reg = <0>;
  185. tcon0_in_drc0: endpoint {
  186. remote-endpoint = <&drc0_out_tcon0>;
  187. };
  188. };
  189. tcon0_out: port@1 {
  190. reg = <1>;
  191. };
  192. };
  193. };
  194. mmc0: mmc@1c0f000 {
  195. compatible = "allwinner,sun7i-a20-mmc";
  196. reg = <0x01c0f000 0x1000>;
  197. clocks = <&ccu CLK_BUS_MMC0>,
  198. <&ccu CLK_MMC0>,
  199. <&ccu CLK_MMC0_OUTPUT>,
  200. <&ccu CLK_MMC0_SAMPLE>;
  201. clock-names = "ahb",
  202. "mmc",
  203. "output",
  204. "sample";
  205. resets = <&ccu RST_BUS_MMC0>;
  206. reset-names = "ahb";
  207. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  208. pinctrl-names = "default";
  209. pinctrl-0 = <&mmc0_pins>;
  210. status = "disabled";
  211. #address-cells = <1>;
  212. #size-cells = <0>;
  213. };
  214. mmc1: mmc@1c10000 {
  215. compatible = "allwinner,sun7i-a20-mmc";
  216. reg = <0x01c10000 0x1000>;
  217. clocks = <&ccu CLK_BUS_MMC1>,
  218. <&ccu CLK_MMC1>,
  219. <&ccu CLK_MMC1_OUTPUT>,
  220. <&ccu CLK_MMC1_SAMPLE>;
  221. clock-names = "ahb",
  222. "mmc",
  223. "output",
  224. "sample";
  225. resets = <&ccu RST_BUS_MMC1>;
  226. reset-names = "ahb";
  227. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  228. status = "disabled";
  229. #address-cells = <1>;
  230. #size-cells = <0>;
  231. };
  232. mmc2: mmc@1c11000 {
  233. compatible = "allwinner,sun7i-a20-mmc";
  234. reg = <0x01c11000 0x1000>;
  235. clocks = <&ccu CLK_BUS_MMC2>,
  236. <&ccu CLK_MMC2>,
  237. <&ccu CLK_MMC2_OUTPUT>,
  238. <&ccu CLK_MMC2_SAMPLE>;
  239. clock-names = "ahb",
  240. "mmc",
  241. "output",
  242. "sample";
  243. resets = <&ccu RST_BUS_MMC2>;
  244. reset-names = "ahb";
  245. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  246. status = "disabled";
  247. #address-cells = <1>;
  248. #size-cells = <0>;
  249. };
  250. usb_otg: usb@1c19000 {
  251. /* compatible gets set in SoC specific dtsi file */
  252. reg = <0x01c19000 0x0400>;
  253. clocks = <&ccu CLK_BUS_OTG>;
  254. resets = <&ccu RST_BUS_OTG>;
  255. interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  256. interrupt-names = "mc";
  257. phys = <&usbphy 0>;
  258. phy-names = "usb";
  259. extcon = <&usbphy 0>;
  260. dr_mode = "otg";
  261. status = "disabled";
  262. };
  263. usbphy: phy@1c19400 {
  264. /*
  265. * compatible and address regions get set in
  266. * SoC specific dtsi file
  267. */
  268. clocks = <&ccu CLK_USB_PHY0>,
  269. <&ccu CLK_USB_PHY1>;
  270. clock-names = "usb0_phy",
  271. "usb1_phy";
  272. resets = <&ccu RST_USB_PHY0>,
  273. <&ccu RST_USB_PHY1>;
  274. reset-names = "usb0_reset",
  275. "usb1_reset";
  276. status = "disabled";
  277. #phy-cells = <1>;
  278. };
  279. ehci0: usb@1c1a000 {
  280. compatible = "allwinner,sun8i-a23-ehci", "generic-ehci";
  281. reg = <0x01c1a000 0x100>;
  282. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  283. clocks = <&ccu CLK_BUS_EHCI>;
  284. resets = <&ccu RST_BUS_EHCI>;
  285. phys = <&usbphy 1>;
  286. phy-names = "usb";
  287. status = "disabled";
  288. };
  289. ohci0: usb@1c1a400 {
  290. compatible = "allwinner,sun8i-a23-ohci", "generic-ohci";
  291. reg = <0x01c1a400 0x100>;
  292. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  293. clocks = <&ccu CLK_BUS_OHCI>, <&ccu CLK_USB_OHCI>;
  294. resets = <&ccu RST_BUS_OHCI>;
  295. phys = <&usbphy 1>;
  296. phy-names = "usb";
  297. status = "disabled";
  298. };
  299. ccu: clock@1c20000 {
  300. reg = <0x01c20000 0x400>;
  301. clocks = <&osc24M>, <&rtc CLK_OSC32K>;
  302. clock-names = "hosc", "losc";
  303. #clock-cells = <1>;
  304. #reset-cells = <1>;
  305. };
  306. pio: pinctrl@1c20800 {
  307. /* compatible gets set in SoC specific dtsi file */
  308. reg = <0x01c20800 0x400>;
  309. interrupt-parent = <&r_intc>;
  310. /* interrupts get set in SoC specific dtsi file */
  311. clocks = <&ccu CLK_BUS_PIO>, <&osc24M>,
  312. <&rtc CLK_OSC32K>;
  313. clock-names = "apb", "hosc", "losc";
  314. gpio-controller;
  315. interrupt-controller;
  316. #interrupt-cells = <3>;
  317. #gpio-cells = <3>;
  318. i2c0_pins: i2c0-pins {
  319. pins = "PH2", "PH3";
  320. function = "i2c0";
  321. };
  322. i2c1_pins: i2c1-pins {
  323. pins = "PH4", "PH5";
  324. function = "i2c1";
  325. };
  326. i2c2_pins: i2c2-pins {
  327. pins = "PE12", "PE13";
  328. function = "i2c2";
  329. };
  330. lcd_rgb666_pins: lcd-rgb666-pins {
  331. pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7",
  332. "PD10", "PD11", "PD12", "PD13", "PD14", "PD15",
  333. "PD18", "PD19", "PD20", "PD21", "PD22", "PD23",
  334. "PD24", "PD25", "PD26", "PD27";
  335. function = "lcd0";
  336. };
  337. mmc0_pins: mmc0-pins {
  338. pins = "PF0", "PF1", "PF2",
  339. "PF3", "PF4", "PF5";
  340. function = "mmc0";
  341. drive-strength = <30>;
  342. bias-pull-up;
  343. };
  344. mmc1_pg_pins: mmc1-pg-pins {
  345. pins = "PG0", "PG1", "PG2",
  346. "PG3", "PG4", "PG5";
  347. function = "mmc1";
  348. drive-strength = <30>;
  349. bias-pull-up;
  350. };
  351. mmc2_8bit_pins: mmc2-8bit-pins {
  352. pins = "PC5", "PC6", "PC8",
  353. "PC9", "PC10", "PC11",
  354. "PC12", "PC13", "PC14",
  355. "PC15", "PC16";
  356. function = "mmc2";
  357. drive-strength = <30>;
  358. bias-pull-up;
  359. };
  360. nand_pins: nand-pins {
  361. pins = "PC0", "PC1", "PC2", "PC5",
  362. "PC8", "PC9", "PC10", "PC11",
  363. "PC12", "PC13", "PC14", "PC15";
  364. function = "nand0";
  365. };
  366. nand_cs0_pin: nand-cs0-pin {
  367. pins = "PC4";
  368. function = "nand0";
  369. bias-pull-up;
  370. };
  371. nand_cs1_pin: nand-cs1-pin {
  372. pins = "PC3";
  373. function = "nand0";
  374. bias-pull-up;
  375. };
  376. nand_rb0_pin: nand-rb0-pin {
  377. pins = "PC6";
  378. function = "nand0";
  379. bias-pull-up;
  380. };
  381. nand_rb1_pin: nand-rb1-pin {
  382. pins = "PC7";
  383. function = "nand0";
  384. bias-pull-up;
  385. };
  386. pwm0_pin: pwm0-pin {
  387. pins = "PH0";
  388. function = "pwm0";
  389. };
  390. uart0_pf_pins: uart0-pf-pins {
  391. pins = "PF2", "PF4";
  392. function = "uart0";
  393. };
  394. uart1_pg_pins: uart1-pg-pins {
  395. pins = "PG6", "PG7";
  396. function = "uart1";
  397. };
  398. uart1_cts_rts_pg_pins: uart1-cts-rts-pg-pins {
  399. pins = "PG8", "PG9";
  400. function = "uart1";
  401. };
  402. };
  403. timer@1c20c00 {
  404. compatible = "allwinner,sun8i-a23-timer";
  405. reg = <0x01c20c00 0xa0>;
  406. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  407. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  408. clocks = <&osc24M>;
  409. };
  410. wdt0: watchdog@1c20ca0 {
  411. compatible = "allwinner,sun6i-a31-wdt";
  412. reg = <0x01c20ca0 0x20>;
  413. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  414. clocks = <&osc24M>;
  415. };
  416. pwm: pwm@1c21400 {
  417. compatible = "allwinner,sun7i-a20-pwm";
  418. reg = <0x01c21400 0xc>;
  419. clocks = <&osc24M>;
  420. #pwm-cells = <3>;
  421. status = "disabled";
  422. };
  423. lradc: lradc@1c22800 {
  424. compatible = "allwinner,sun4i-a10-lradc-keys";
  425. reg = <0x01c22800 0x100>;
  426. interrupt-parent = <&r_intc>;
  427. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  428. status = "disabled";
  429. };
  430. uart0: serial@1c28000 {
  431. compatible = "snps,dw-apb-uart";
  432. reg = <0x01c28000 0x400>;
  433. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  434. reg-shift = <2>;
  435. reg-io-width = <4>;
  436. clocks = <&ccu CLK_BUS_UART0>;
  437. resets = <&ccu RST_BUS_UART0>;
  438. dmas = <&dma 6>, <&dma 6>;
  439. dma-names = "rx", "tx";
  440. status = "disabled";
  441. };
  442. uart1: serial@1c28400 {
  443. compatible = "snps,dw-apb-uart";
  444. reg = <0x01c28400 0x400>;
  445. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  446. reg-shift = <2>;
  447. reg-io-width = <4>;
  448. clocks = <&ccu CLK_BUS_UART1>;
  449. resets = <&ccu RST_BUS_UART1>;
  450. dmas = <&dma 7>, <&dma 7>;
  451. dma-names = "rx", "tx";
  452. status = "disabled";
  453. };
  454. uart2: serial@1c28800 {
  455. compatible = "snps,dw-apb-uart";
  456. reg = <0x01c28800 0x400>;
  457. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  458. reg-shift = <2>;
  459. reg-io-width = <4>;
  460. clocks = <&ccu CLK_BUS_UART2>;
  461. resets = <&ccu RST_BUS_UART2>;
  462. dmas = <&dma 8>, <&dma 8>;
  463. dma-names = "rx", "tx";
  464. status = "disabled";
  465. };
  466. uart3: serial@1c28c00 {
  467. compatible = "snps,dw-apb-uart";
  468. reg = <0x01c28c00 0x400>;
  469. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  470. reg-shift = <2>;
  471. reg-io-width = <4>;
  472. clocks = <&ccu CLK_BUS_UART3>;
  473. resets = <&ccu RST_BUS_UART3>;
  474. dmas = <&dma 9>, <&dma 9>;
  475. dma-names = "rx", "tx";
  476. status = "disabled";
  477. };
  478. uart4: serial@1c29000 {
  479. compatible = "snps,dw-apb-uart";
  480. reg = <0x01c29000 0x400>;
  481. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  482. reg-shift = <2>;
  483. reg-io-width = <4>;
  484. clocks = <&ccu CLK_BUS_UART4>;
  485. resets = <&ccu RST_BUS_UART4>;
  486. dmas = <&dma 10>, <&dma 10>;
  487. dma-names = "rx", "tx";
  488. status = "disabled";
  489. };
  490. i2c0: i2c@1c2ac00 {
  491. compatible = "allwinner,sun6i-a31-i2c";
  492. reg = <0x01c2ac00 0x400>;
  493. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  494. clocks = <&ccu CLK_BUS_I2C0>;
  495. resets = <&ccu RST_BUS_I2C0>;
  496. pinctrl-names = "default";
  497. pinctrl-0 = <&i2c0_pins>;
  498. status = "disabled";
  499. #address-cells = <1>;
  500. #size-cells = <0>;
  501. };
  502. i2c1: i2c@1c2b000 {
  503. compatible = "allwinner,sun6i-a31-i2c";
  504. reg = <0x01c2b000 0x400>;
  505. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  506. clocks = <&ccu CLK_BUS_I2C1>;
  507. resets = <&ccu RST_BUS_I2C1>;
  508. pinctrl-names = "default";
  509. pinctrl-0 = <&i2c1_pins>;
  510. status = "disabled";
  511. #address-cells = <1>;
  512. #size-cells = <0>;
  513. };
  514. i2c2: i2c@1c2b400 {
  515. compatible = "allwinner,sun6i-a31-i2c";
  516. reg = <0x01c2b400 0x400>;
  517. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  518. clocks = <&ccu CLK_BUS_I2C2>;
  519. resets = <&ccu RST_BUS_I2C2>;
  520. pinctrl-names = "default";
  521. pinctrl-0 = <&i2c2_pins>;
  522. status = "disabled";
  523. #address-cells = <1>;
  524. #size-cells = <0>;
  525. };
  526. mali: gpu@1c40000 {
  527. compatible = "allwinner,sun8i-a23-mali",
  528. "allwinner,sun7i-a20-mali", "arm,mali-400";
  529. reg = <0x01c40000 0x10000>;
  530. interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
  531. <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
  532. <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
  533. <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
  534. <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
  535. <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
  536. <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  537. interrupt-names = "gp",
  538. "gpmmu",
  539. "pp0",
  540. "ppmmu0",
  541. "pp1",
  542. "ppmmu1",
  543. "pmu";
  544. clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
  545. clock-names = "bus", "core";
  546. resets = <&ccu RST_BUS_GPU>;
  547. #cooling-cells = <2>;
  548. assigned-clocks = <&ccu CLK_GPU>;
  549. assigned-clock-rates = <384000000>;
  550. };
  551. gic: interrupt-controller@1c81000 {
  552. compatible = "arm,gic-400";
  553. reg = <0x01c81000 0x1000>,
  554. <0x01c82000 0x2000>,
  555. <0x01c84000 0x2000>,
  556. <0x01c86000 0x2000>;
  557. interrupt-controller;
  558. #interrupt-cells = <3>;
  559. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  560. };
  561. fe0: display-frontend@1e00000 {
  562. /* compatible gets set in SoC specific dtsi file */
  563. reg = <0x01e00000 0x20000>;
  564. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  565. clocks = <&ccu CLK_BUS_DE_FE>, <&ccu CLK_DE_FE>,
  566. <&ccu CLK_DRAM_DE_FE>;
  567. clock-names = "ahb", "mod",
  568. "ram";
  569. resets = <&ccu RST_BUS_DE_FE>;
  570. ports {
  571. #address-cells = <1>;
  572. #size-cells = <0>;
  573. fe0_out: port@1 {
  574. reg = <1>;
  575. fe0_out_be0: endpoint {
  576. remote-endpoint = <&be0_in_fe0>;
  577. };
  578. };
  579. };
  580. };
  581. be0: display-backend@1e60000 {
  582. /* compatible gets set in SoC specific dtsi file */
  583. reg = <0x01e60000 0x10000>;
  584. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  585. clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
  586. <&ccu CLK_DRAM_DE_BE>;
  587. clock-names = "ahb", "mod",
  588. "ram";
  589. resets = <&ccu RST_BUS_DE_BE>;
  590. ports {
  591. #address-cells = <1>;
  592. #size-cells = <0>;
  593. be0_in: port@0 {
  594. reg = <0>;
  595. be0_in_fe0: endpoint {
  596. remote-endpoint = <&fe0_out_be0>;
  597. };
  598. };
  599. be0_out: port@1 {
  600. reg = <1>;
  601. be0_out_drc0: endpoint {
  602. remote-endpoint = <&drc0_in_be0>;
  603. };
  604. };
  605. };
  606. };
  607. drc0: drc@1e70000 {
  608. /* compatible gets set in SoC specific dtsi file */
  609. reg = <0x01e70000 0x10000>;
  610. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  611. clocks = <&ccu CLK_BUS_DRC>, <&ccu CLK_DRC>,
  612. <&ccu CLK_DRAM_DRC>;
  613. clock-names = "ahb", "mod", "ram";
  614. resets = <&ccu RST_BUS_DRC>;
  615. ports {
  616. #address-cells = <1>;
  617. #size-cells = <0>;
  618. drc0_in: port@0 {
  619. reg = <0>;
  620. drc0_in_be0: endpoint {
  621. remote-endpoint = <&be0_out_drc0>;
  622. };
  623. };
  624. drc0_out: port@1 {
  625. reg = <1>;
  626. drc0_out_tcon0: endpoint {
  627. remote-endpoint = <&tcon0_in_drc0>;
  628. };
  629. };
  630. };
  631. };
  632. rtc: rtc@1f00000 {
  633. compatible = "allwinner,sun8i-a23-rtc";
  634. reg = <0x01f00000 0x400>;
  635. interrupt-parent = <&r_intc>;
  636. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  637. <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  638. clock-output-names = "osc32k", "osc32k-out";
  639. clocks = <&ext_osc32k>;
  640. #clock-cells = <1>;
  641. };
  642. r_intc: interrupt-controller@1f00c00 {
  643. compatible = "allwinner,sun6i-a31-r-intc";
  644. interrupt-controller;
  645. #interrupt-cells = <3>;
  646. reg = <0x01f00c00 0x400>;
  647. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  648. };
  649. prcm@1f01400 {
  650. compatible = "allwinner,sun8i-a23-prcm";
  651. reg = <0x01f01400 0x200>;
  652. ar100: ar100_clk {
  653. compatible = "fixed-factor-clock";
  654. #clock-cells = <0>;
  655. clock-div = <1>;
  656. clock-mult = <1>;
  657. clocks = <&osc24M>;
  658. clock-output-names = "ar100";
  659. };
  660. ahb0: ahb0_clk {
  661. compatible = "fixed-factor-clock";
  662. #clock-cells = <0>;
  663. clock-div = <1>;
  664. clock-mult = <1>;
  665. clocks = <&ar100>;
  666. clock-output-names = "ahb0";
  667. };
  668. apb0: apb0_clk {
  669. compatible = "allwinner,sun8i-a23-apb0-clk";
  670. #clock-cells = <0>;
  671. clocks = <&ahb0>;
  672. clock-output-names = "apb0";
  673. };
  674. apb0_gates: apb0_gates_clk {
  675. compatible = "allwinner,sun8i-a23-apb0-gates-clk";
  676. #clock-cells = <1>;
  677. clocks = <&apb0>;
  678. clock-output-names = "apb0_pio", "apb0_timer",
  679. "apb0_rsb", "apb0_uart",
  680. "apb0_i2c";
  681. };
  682. apb0_rst: apb0_rst {
  683. compatible = "allwinner,sun6i-a31-clock-reset";
  684. #reset-cells = <1>;
  685. };
  686. codec_analog: codec-analog {
  687. compatible = "allwinner,sun8i-a23-codec-analog";
  688. };
  689. };
  690. cpucfg@1f01c00 {
  691. compatible = "allwinner,sun8i-a23-cpuconfig";
  692. reg = <0x01f01c00 0x300>;
  693. };
  694. r_uart: serial@1f02800 {
  695. compatible = "snps,dw-apb-uart";
  696. reg = <0x01f02800 0x400>;
  697. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  698. reg-shift = <2>;
  699. reg-io-width = <4>;
  700. clocks = <&apb0_gates 4>;
  701. resets = <&apb0_rst 4>;
  702. status = "disabled";
  703. };
  704. r_i2c: i2c@1f02400 {
  705. compatible = "allwinner,sun8i-a23-i2c",
  706. "allwinner,sun6i-a31-i2c";
  707. reg = <0x01f02400 0x400>;
  708. interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
  709. pinctrl-names = "default";
  710. pinctrl-0 = <&r_i2c_pins>;
  711. clocks = <&apb0_gates 6>;
  712. resets = <&apb0_rst 6>;
  713. status = "disabled";
  714. #address-cells = <1>;
  715. #size-cells = <0>;
  716. };
  717. r_pio: pinctrl@1f02c00 {
  718. compatible = "allwinner,sun8i-a23-r-pinctrl";
  719. reg = <0x01f02c00 0x400>;
  720. interrupt-parent = <&r_intc>;
  721. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  722. clocks = <&apb0_gates 0>, <&osc24M>, <&rtc CLK_OSC32K>;
  723. clock-names = "apb", "hosc", "losc";
  724. gpio-controller;
  725. interrupt-controller;
  726. #interrupt-cells = <3>;
  727. #gpio-cells = <3>;
  728. r_i2c_pins: r-i2c-pins {
  729. pins = "PL0", "PL1";
  730. function = "s_i2c";
  731. bias-pull-up;
  732. };
  733. r_rsb_pins: r-rsb-pins {
  734. pins = "PL0", "PL1";
  735. function = "s_rsb";
  736. drive-strength = <20>;
  737. bias-pull-up;
  738. };
  739. r_uart_pins_a: r-uart-pins {
  740. pins = "PL2", "PL3";
  741. function = "s_uart";
  742. };
  743. };
  744. r_rsb: rsb@1f03400 {
  745. compatible = "allwinner,sun8i-a23-rsb";
  746. reg = <0x01f03400 0x400>;
  747. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  748. clocks = <&apb0_gates 3>;
  749. clock-frequency = <3000000>;
  750. resets = <&apb0_rst 3>;
  751. pinctrl-names = "default";
  752. pinctrl-0 = <&r_rsb_pins>;
  753. status = "disabled";
  754. #address-cells = <1>;
  755. #size-cells = <0>;
  756. };
  757. };
  758. };