sun5i-gr8.dtsi 27 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088
  1. /*
  2. * Copyright 2016 Mylène Josserand
  3. *
  4. * Mylène Josserand <mylene.josserand@free-electrons.com>
  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 library 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 library 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/clock/sun4i-a10-pll2.h>
  45. #include <dt-bindings/dma/sun4i-a10.h>
  46. #include <dt-bindings/pinctrl/sun4i-a10.h>
  47. / {
  48. interrupt-parent = <&intc>;
  49. #address-cells = <1>;
  50. #size-cells = <1>;
  51. cpus {
  52. #address-cells = <1>;
  53. #size-cells = <0>;
  54. cpu0: cpu@0 {
  55. device_type = "cpu";
  56. compatible = "arm,cortex-a8";
  57. reg = <0x0>;
  58. clocks = <&cpu>;
  59. };
  60. };
  61. clocks {
  62. #address-cells = <1>;
  63. #size-cells = <1>;
  64. ranges;
  65. /*
  66. * This is a dummy clock, to be used as placeholder on
  67. * other mux clocks when a specific parent clock is not
  68. * yet implemented. It should be dropped when the driver
  69. * is complete.
  70. */
  71. dummy: dummy {
  72. #clock-cells = <0>;
  73. compatible = "fixed-clock";
  74. clock-frequency = <0>;
  75. };
  76. osc24M: clk@01c20050 {
  77. #clock-cells = <0>;
  78. compatible = "allwinner,sun4i-a10-osc-clk";
  79. reg = <0x01c20050 0x4>;
  80. clock-frequency = <24000000>;
  81. clock-output-names = "osc24M";
  82. };
  83. osc3M: osc3M-clk {
  84. compatible = "fixed-factor-clock";
  85. #clock-cells = <0>;
  86. clock-div = <8>;
  87. clock-mult = <1>;
  88. clocks = <&osc24M>;
  89. clock-output-names = "osc3M";
  90. };
  91. osc32k: clk@0 {
  92. #clock-cells = <0>;
  93. compatible = "fixed-clock";
  94. clock-frequency = <32768>;
  95. clock-output-names = "osc32k";
  96. };
  97. pll1: clk@01c20000 {
  98. #clock-cells = <0>;
  99. compatible = "allwinner,sun4i-a10-pll1-clk";
  100. reg = <0x01c20000 0x4>;
  101. clocks = <&osc24M>;
  102. clock-output-names = "pll1";
  103. };
  104. pll2: clk@01c20008 {
  105. #clock-cells = <1>;
  106. compatible = "allwinner,sun5i-a13-pll2-clk";
  107. reg = <0x01c20008 0x8>;
  108. clocks = <&osc24M>;
  109. clock-output-names = "pll2-1x", "pll2-2x",
  110. "pll2-4x", "pll2-8x";
  111. };
  112. pll3: clk@01c20010 {
  113. #clock-cells = <0>;
  114. compatible = "allwinner,sun4i-a10-pll3-clk";
  115. reg = <0x01c20010 0x4>;
  116. clocks = <&osc3M>;
  117. clock-output-names = "pll3";
  118. };
  119. pll3x2: pll3x2-clk {
  120. compatible = "allwinner,sun4i-a10-pll3-2x-clk";
  121. #clock-cells = <0>;
  122. clock-div = <1>;
  123. clock-mult = <2>;
  124. clocks = <&pll3>;
  125. clock-output-names = "pll3-2x";
  126. };
  127. pll4: clk@01c20018 {
  128. #clock-cells = <0>;
  129. compatible = "allwinner,sun4i-a10-pll1-clk";
  130. reg = <0x01c20018 0x4>;
  131. clocks = <&osc24M>;
  132. clock-output-names = "pll4";
  133. };
  134. pll5: clk@01c20020 {
  135. #clock-cells = <1>;
  136. compatible = "allwinner,sun4i-a10-pll5-clk";
  137. reg = <0x01c20020 0x4>;
  138. clocks = <&osc24M>;
  139. clock-output-names = "pll5_ddr", "pll5_other";
  140. };
  141. pll6: clk@01c20028 {
  142. #clock-cells = <1>;
  143. compatible = "allwinner,sun4i-a10-pll6-clk";
  144. reg = <0x01c20028 0x4>;
  145. clocks = <&osc24M>;
  146. clock-output-names = "pll6_sata", "pll6_other", "pll6";
  147. };
  148. pll7: clk@01c20030 {
  149. #clock-cells = <0>;
  150. compatible = "allwinner,sun4i-a10-pll3-clk";
  151. reg = <0x01c20030 0x4>;
  152. clocks = <&osc3M>;
  153. clock-output-names = "pll7";
  154. };
  155. pll7x2: pll7x2-clk {
  156. compatible = "allwinner,sun4i-a10-pll3-2x-clk";
  157. #clock-cells = <0>;
  158. clock-div = <1>;
  159. clock-mult = <2>;
  160. clocks = <&pll7>;
  161. clock-output-names = "pll7-2x";
  162. };
  163. /* dummy is 200M */
  164. cpu: cpu@01c20054 {
  165. #clock-cells = <0>;
  166. compatible = "allwinner,sun4i-a10-cpu-clk";
  167. reg = <0x01c20054 0x4>;
  168. clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>;
  169. clock-output-names = "cpu";
  170. };
  171. axi: axi@01c20054 {
  172. #clock-cells = <0>;
  173. compatible = "allwinner,sun4i-a10-axi-clk";
  174. reg = <0x01c20054 0x4>;
  175. clocks = <&cpu>;
  176. clock-output-names = "axi";
  177. };
  178. ahb: ahb@01c20054 {
  179. #clock-cells = <0>;
  180. compatible = "allwinner,sun5i-a13-ahb-clk";
  181. reg = <0x01c20054 0x4>;
  182. clocks = <&axi>, <&cpu>, <&pll6 1>;
  183. clock-output-names = "ahb";
  184. /*
  185. * Use PLL6 as parent, instead of CPU/AXI
  186. * which has rate changes due to cpufreq
  187. */
  188. assigned-clocks = <&ahb>;
  189. assigned-clock-parents = <&pll6 1>;
  190. };
  191. apb0: apb0@01c20054 {
  192. #clock-cells = <0>;
  193. compatible = "allwinner,sun4i-a10-apb0-clk";
  194. reg = <0x01c20054 0x4>;
  195. clocks = <&ahb>;
  196. clock-output-names = "apb0";
  197. };
  198. apb1: clk@01c20058 {
  199. #clock-cells = <0>;
  200. compatible = "allwinner,sun4i-a10-apb1-clk";
  201. reg = <0x01c20058 0x4>;
  202. clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
  203. clock-output-names = "apb1";
  204. };
  205. axi_gates: clk@01c2005c {
  206. #clock-cells = <1>;
  207. compatible = "allwinner,sun4i-a10-gates-clk";
  208. reg = <0x01c2005c 0x4>;
  209. clocks = <&axi>;
  210. clock-indices = <0>;
  211. clock-output-names = "axi_dram";
  212. };
  213. ahb_gates: clk@01c20060 {
  214. #clock-cells = <1>;
  215. compatible = "allwinner,sun5i-a13-ahb-gates-clk";
  216. reg = <0x01c20060 0x8>;
  217. clocks = <&ahb>;
  218. clock-indices = <0>, <1>,
  219. <2>, <5>, <6>,
  220. <7>, <8>, <9>,
  221. <10>, <13>,
  222. <14>, <17>, <20>,
  223. <21>, <22>,
  224. <28>, <32>, <34>,
  225. <36>, <40>, <44>,
  226. <46>, <51>,
  227. <52>;
  228. clock-output-names = "ahb_usbotg", "ahb_ehci",
  229. "ahb_ohci", "ahb_ss", "ahb_dma",
  230. "ahb_bist", "ahb_mmc0", "ahb_mmc1",
  231. "ahb_mmc2", "ahb_nand",
  232. "ahb_sdram", "ahb_emac", "ahb_spi0",
  233. "ahb_spi1", "ahb_spi2",
  234. "ahb_hstimer", "ahb_ve", "ahb_tve",
  235. "ahb_lcd", "ahb_csi", "ahb_de_be",
  236. "ahb_de_fe", "ahb_iep",
  237. "ahb_mali400";
  238. };
  239. apb0_gates: clk@01c20068 {
  240. #clock-cells = <1>;
  241. compatible = "allwinner,sun4i-a10-gates-clk";
  242. reg = <0x01c20068 0x4>;
  243. clocks = <&apb0>;
  244. clock-indices = <0>, <3>,
  245. <5>, <6>;
  246. clock-output-names = "apb0_codec", "apb0_i2s0",
  247. "apb0_pio", "apb0_ir";
  248. };
  249. apb1_gates: clk@01c2006c {
  250. #clock-cells = <1>;
  251. compatible = "allwinner,sun4i-a10-gates-clk";
  252. reg = <0x01c2006c 0x4>;
  253. clocks = <&apb1>;
  254. clock-indices = <0>, <1>,
  255. <2>, <17>,
  256. <18>, <19>;
  257. clock-output-names = "apb1_i2c0", "apb1_i2c1",
  258. "apb1_i2c2", "apb1_uart1",
  259. "apb1_uart2", "apb1_uart3";
  260. };
  261. nand_clk: clk@01c20080 {
  262. #clock-cells = <0>;
  263. compatible = "allwinner,sun4i-a10-mod0-clk";
  264. reg = <0x01c20080 0x4>;
  265. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  266. clock-output-names = "nand";
  267. };
  268. ms_clk: clk@01c20084 {
  269. #clock-cells = <0>;
  270. compatible = "allwinner,sun4i-a10-mod0-clk";
  271. reg = <0x01c20084 0x4>;
  272. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  273. clock-output-names = "ms";
  274. };
  275. mmc0_clk: clk@01c20088 {
  276. #clock-cells = <1>;
  277. compatible = "allwinner,sun4i-a10-mmc-clk";
  278. reg = <0x01c20088 0x4>;
  279. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  280. clock-output-names = "mmc0",
  281. "mmc0_output",
  282. "mmc0_sample";
  283. };
  284. mmc1_clk: clk@01c2008c {
  285. #clock-cells = <1>;
  286. compatible = "allwinner,sun4i-a10-mmc-clk";
  287. reg = <0x01c2008c 0x4>;
  288. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  289. clock-output-names = "mmc1",
  290. "mmc1_output",
  291. "mmc1_sample";
  292. };
  293. mmc2_clk: clk@01c20090 {
  294. #clock-cells = <1>;
  295. compatible = "allwinner,sun4i-a10-mmc-clk";
  296. reg = <0x01c20090 0x4>;
  297. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  298. clock-output-names = "mmc2",
  299. "mmc2_output",
  300. "mmc2_sample";
  301. };
  302. ts_clk: clk@01c20098 {
  303. #clock-cells = <0>;
  304. compatible = "allwinner,sun4i-a10-mod0-clk";
  305. reg = <0x01c20098 0x4>;
  306. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  307. clock-output-names = "ts";
  308. };
  309. ss_clk: clk@01c2009c {
  310. #clock-cells = <0>;
  311. compatible = "allwinner,sun4i-a10-mod0-clk";
  312. reg = <0x01c2009c 0x4>;
  313. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  314. clock-output-names = "ss";
  315. };
  316. spi0_clk: clk@01c200a0 {
  317. #clock-cells = <0>;
  318. compatible = "allwinner,sun4i-a10-mod0-clk";
  319. reg = <0x01c200a0 0x4>;
  320. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  321. clock-output-names = "spi0";
  322. };
  323. spi1_clk: clk@01c200a4 {
  324. #clock-cells = <0>;
  325. compatible = "allwinner,sun4i-a10-mod0-clk";
  326. reg = <0x01c200a4 0x4>;
  327. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  328. clock-output-names = "spi1";
  329. };
  330. spi2_clk: clk@01c200a8 {
  331. #clock-cells = <0>;
  332. compatible = "allwinner,sun4i-a10-mod0-clk";
  333. reg = <0x01c200a8 0x4>;
  334. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  335. clock-output-names = "spi2";
  336. };
  337. ir0_clk: clk@01c200b0 {
  338. #clock-cells = <0>;
  339. compatible = "allwinner,sun4i-a10-mod0-clk";
  340. reg = <0x01c200b0 0x4>;
  341. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  342. clock-output-names = "ir0";
  343. };
  344. i2s0_clk: clk@01c200b8 {
  345. #clock-cells = <0>;
  346. compatible = "allwinner,sun4i-a10-mod1-clk";
  347. reg = <0x01c200b8 0x4>;
  348. clocks = <&pll2 SUN4I_A10_PLL2_8X>,
  349. <&pll2 SUN4I_A10_PLL2_4X>,
  350. <&pll2 SUN4I_A10_PLL2_2X>,
  351. <&pll2 SUN4I_A10_PLL2_1X>;
  352. clock-output-names = "i2s0";
  353. };
  354. spdif_clk: clk@01c200c0 {
  355. #clock-cells = <0>;
  356. compatible = "allwinner,sun4i-a10-mod1-clk";
  357. reg = <0x01c200c0 0x4>;
  358. clocks = <&pll2 SUN4I_A10_PLL2_8X>,
  359. <&pll2 SUN4I_A10_PLL2_4X>,
  360. <&pll2 SUN4I_A10_PLL2_2X>,
  361. <&pll2 SUN4I_A10_PLL2_1X>;
  362. clock-output-names = "spdif";
  363. };
  364. usb_clk: clk@01c200cc {
  365. #clock-cells = <1>;
  366. #reset-cells = <1>;
  367. compatible = "allwinner,sun5i-a13-usb-clk";
  368. reg = <0x01c200cc 0x4>;
  369. clocks = <&pll6 1>;
  370. clock-output-names = "usb_ohci0", "usb_phy";
  371. };
  372. dram_gates: clk@01c20100 {
  373. #clock-cells = <1>;
  374. compatible = "nextthing,gr8-dram-gates-clk",
  375. "allwinner,sun4i-a10-gates-clk";
  376. reg = <0x01c20100 0x4>;
  377. clocks = <&pll5 0>;
  378. clock-indices = <0>,
  379. <1>,
  380. <25>,
  381. <26>,
  382. <29>,
  383. <31>;
  384. clock-output-names = "dram_ve",
  385. "dram_csi",
  386. "dram_de_fe",
  387. "dram_de_be",
  388. "dram_ace",
  389. "dram_iep";
  390. };
  391. de_be_clk: clk@01c20104 {
  392. #clock-cells = <0>;
  393. #reset-cells = <0>;
  394. compatible = "allwinner,sun4i-a10-display-clk";
  395. reg = <0x01c20104 0x4>;
  396. clocks = <&pll3>, <&pll7>, <&pll5 1>;
  397. clock-output-names = "de-be";
  398. };
  399. de_fe_clk: clk@01c2010c {
  400. #clock-cells = <0>;
  401. #reset-cells = <0>;
  402. compatible = "allwinner,sun4i-a10-display-clk";
  403. reg = <0x01c2010c 0x4>;
  404. clocks = <&pll3>, <&pll7>, <&pll5 1>;
  405. clock-output-names = "de-fe";
  406. };
  407. tcon_ch0_clk: clk@01c20118 {
  408. #clock-cells = <0>;
  409. #reset-cells = <1>;
  410. compatible = "allwinner,sun4i-a10-tcon-ch0-clk";
  411. reg = <0x01c20118 0x4>;
  412. clocks = <&pll3>, <&pll7>, <&pll3x2>, <&pll7x2>;
  413. clock-output-names = "tcon-ch0-sclk";
  414. };
  415. tcon_ch1_clk: clk@01c2012c {
  416. #clock-cells = <0>;
  417. compatible = "allwinner,sun4i-a10-tcon-ch1-clk";
  418. reg = <0x01c2012c 0x4>;
  419. clocks = <&pll3>, <&pll7>, <&pll3x2>, <&pll7x2>;
  420. clock-output-names = "tcon-ch1-sclk";
  421. };
  422. codec_clk: clk@01c20140 {
  423. #clock-cells = <0>;
  424. compatible = "allwinner,sun4i-a10-codec-clk";
  425. reg = <0x01c20140 0x4>;
  426. clocks = <&pll2 SUN4I_A10_PLL2_1X>;
  427. clock-output-names = "codec";
  428. };
  429. mbus_clk: clk@01c2015c {
  430. #clock-cells = <0>;
  431. compatible = "allwinner,sun5i-a13-mbus-clk";
  432. reg = <0x01c2015c 0x4>;
  433. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  434. clock-output-names = "mbus";
  435. };
  436. };
  437. display-engine {
  438. compatible = "allwinner,sun5i-a13-display-engine";
  439. allwinner,pipelines = <&fe0>;
  440. };
  441. soc@01c00000 {
  442. compatible = "simple-bus";
  443. #address-cells = <1>;
  444. #size-cells = <1>;
  445. ranges;
  446. sram-controller@01c00000 {
  447. compatible = "allwinner,sun4i-a10-sram-controller";
  448. reg = <0x01c00000 0x30>;
  449. #address-cells = <1>;
  450. #size-cells = <1>;
  451. ranges;
  452. sram_a: sram@00000000 {
  453. compatible = "mmio-sram";
  454. reg = <0x00000000 0xc000>;
  455. #address-cells = <1>;
  456. #size-cells = <1>;
  457. ranges = <0 0x00000000 0xc000>;
  458. };
  459. sram_d: sram@00010000 {
  460. compatible = "mmio-sram";
  461. reg = <0x00010000 0x1000>;
  462. #address-cells = <1>;
  463. #size-cells = <1>;
  464. ranges = <0 0x00010000 0x1000>;
  465. otg_sram: sram-section@0000 {
  466. compatible = "allwinner,sun4i-a10-sram-d";
  467. reg = <0x0000 0x1000>;
  468. status = "disabled";
  469. };
  470. };
  471. };
  472. dma: dma-controller@01c02000 {
  473. compatible = "allwinner,sun4i-a10-dma";
  474. reg = <0x01c02000 0x1000>;
  475. interrupts = <27>;
  476. clocks = <&ahb_gates 6>;
  477. #dma-cells = <2>;
  478. };
  479. nfc: nand@01c03000 {
  480. compatible = "allwinner,sun4i-a10-nand";
  481. reg = <0x01c03000 0x1000>;
  482. interrupts = <37>;
  483. clocks = <&ahb_gates 13>, <&nand_clk>;
  484. clock-names = "ahb", "mod";
  485. dmas = <&dma SUN4I_DMA_DEDICATED 3>;
  486. dma-names = "rxtx";
  487. status = "disabled";
  488. #address-cells = <1>;
  489. #size-cells = <0>;
  490. };
  491. spi0: spi@01c05000 {
  492. compatible = "allwinner,sun4i-a10-spi";
  493. reg = <0x01c05000 0x1000>;
  494. interrupts = <10>;
  495. clocks = <&ahb_gates 20>, <&spi0_clk>;
  496. clock-names = "ahb", "mod";
  497. dmas = <&dma SUN4I_DMA_DEDICATED 27>,
  498. <&dma SUN4I_DMA_DEDICATED 26>;
  499. dma-names = "rx", "tx";
  500. status = "disabled";
  501. #address-cells = <1>;
  502. #size-cells = <0>;
  503. };
  504. spi1: spi@01c06000 {
  505. compatible = "allwinner,sun4i-a10-spi";
  506. reg = <0x01c06000 0x1000>;
  507. interrupts = <11>;
  508. clocks = <&ahb_gates 21>, <&spi1_clk>;
  509. clock-names = "ahb", "mod";
  510. dmas = <&dma SUN4I_DMA_DEDICATED 9>,
  511. <&dma SUN4I_DMA_DEDICATED 8>;
  512. dma-names = "rx", "tx";
  513. status = "disabled";
  514. #address-cells = <1>;
  515. #size-cells = <0>;
  516. };
  517. tve0: tv-encoder@01c0a000 {
  518. compatible = "allwinner,sun4i-a10-tv-encoder";
  519. reg = <0x01c0a000 0x1000>;
  520. clocks = <&ahb_gates 34>;
  521. resets = <&tcon_ch0_clk 0>;
  522. status = "disabled";
  523. port {
  524. #address-cells = <1>;
  525. #size-cells = <0>;
  526. tve0_in_tcon0: endpoint@0 {
  527. reg = <0>;
  528. remote-endpoint = <&tcon0_out_tve0>;
  529. };
  530. };
  531. };
  532. tcon0: lcd-controller@01c0c000 {
  533. compatible = "allwinner,sun5i-a13-tcon";
  534. reg = <0x01c0c000 0x1000>;
  535. interrupts = <44>;
  536. resets = <&tcon_ch0_clk 1>;
  537. reset-names = "lcd";
  538. clocks = <&ahb_gates 36>,
  539. <&tcon_ch0_clk>,
  540. <&tcon_ch1_clk>;
  541. clock-names = "ahb",
  542. "tcon-ch0",
  543. "tcon-ch1";
  544. clock-output-names = "tcon-pixel-clock";
  545. status = "disabled";
  546. ports {
  547. #address-cells = <1>;
  548. #size-cells = <0>;
  549. tcon0_in: port@0 {
  550. #address-cells = <1>;
  551. #size-cells = <0>;
  552. reg = <0>;
  553. tcon0_in_be0: endpoint@0 {
  554. reg = <0>;
  555. remote-endpoint = <&be0_out_tcon0>;
  556. };
  557. };
  558. tcon0_out: port@1 {
  559. #address-cells = <1>;
  560. #size-cells = <0>;
  561. reg = <1>;
  562. tcon0_out_tve0: endpoint@1 {
  563. reg = <1>;
  564. remote-endpoint = <&tve0_in_tcon0>;
  565. };
  566. };
  567. };
  568. };
  569. mmc0: mmc@01c0f000 {
  570. compatible = "allwinner,sun5i-a13-mmc";
  571. reg = <0x01c0f000 0x1000>;
  572. clocks = <&ahb_gates 8>,
  573. <&mmc0_clk 0>,
  574. <&mmc0_clk 1>,
  575. <&mmc0_clk 2>;
  576. clock-names = "ahb",
  577. "mmc",
  578. "output",
  579. "sample";
  580. interrupts = <32>;
  581. status = "disabled";
  582. #address-cells = <1>;
  583. #size-cells = <0>;
  584. };
  585. mmc1: mmc@01c10000 {
  586. compatible = "allwinner,sun5i-a13-mmc";
  587. reg = <0x01c10000 0x1000>;
  588. clocks = <&ahb_gates 9>,
  589. <&mmc1_clk 0>,
  590. <&mmc1_clk 1>,
  591. <&mmc1_clk 2>;
  592. clock-names = "ahb",
  593. "mmc",
  594. "output",
  595. "sample";
  596. interrupts = <33>;
  597. status = "disabled";
  598. #address-cells = <1>;
  599. #size-cells = <0>;
  600. };
  601. mmc2: mmc@01c11000 {
  602. compatible = "allwinner,sun5i-a13-mmc";
  603. reg = <0x01c11000 0x1000>;
  604. clocks = <&ahb_gates 10>,
  605. <&mmc2_clk 0>,
  606. <&mmc2_clk 1>,
  607. <&mmc2_clk 2>;
  608. clock-names = "ahb",
  609. "mmc",
  610. "output",
  611. "sample";
  612. interrupts = <34>;
  613. status = "disabled";
  614. #address-cells = <1>;
  615. #size-cells = <0>;
  616. };
  617. usb_otg: usb@01c13000 {
  618. compatible = "allwinner,sun4i-a10-musb";
  619. reg = <0x01c13000 0x0400>;
  620. clocks = <&ahb_gates 0>;
  621. interrupts = <38>;
  622. interrupt-names = "mc";
  623. phys = <&usbphy 0>;
  624. phy-names = "usb";
  625. extcon = <&usbphy 0>;
  626. allwinner,sram = <&otg_sram 1>;
  627. status = "disabled";
  628. dr_mode = "otg";
  629. };
  630. usbphy: phy@01c13400 {
  631. #phy-cells = <1>;
  632. compatible = "allwinner,sun5i-a13-usb-phy";
  633. reg = <0x01c13400 0x10 0x01c14800 0x4>;
  634. reg-names = "phy_ctrl", "pmu1";
  635. clocks = <&usb_clk 8>;
  636. clock-names = "usb_phy";
  637. resets = <&usb_clk 0>, <&usb_clk 1>;
  638. reset-names = "usb0_reset", "usb1_reset";
  639. status = "disabled";
  640. };
  641. ehci0: usb@01c14000 {
  642. compatible = "allwinner,sun5i-a13-ehci", "generic-ehci";
  643. reg = <0x01c14000 0x100>;
  644. interrupts = <39>;
  645. clocks = <&ahb_gates 1>;
  646. phys = <&usbphy 1>;
  647. phy-names = "usb";
  648. status = "disabled";
  649. };
  650. ohci0: usb@01c14400 {
  651. compatible = "allwinner,sun5i-a13-ohci", "generic-ohci";
  652. reg = <0x01c14400 0x100>;
  653. interrupts = <40>;
  654. clocks = <&usb_clk 6>, <&ahb_gates 2>;
  655. phys = <&usbphy 1>;
  656. phy-names = "usb";
  657. status = "disabled";
  658. };
  659. spi2: spi@01c17000 {
  660. compatible = "allwinner,sun4i-a10-spi";
  661. reg = <0x01c17000 0x1000>;
  662. interrupts = <12>;
  663. clocks = <&ahb_gates 22>, <&spi2_clk>;
  664. clock-names = "ahb", "mod";
  665. dmas = <&dma SUN4I_DMA_DEDICATED 29>,
  666. <&dma SUN4I_DMA_DEDICATED 28>;
  667. dma-names = "rx", "tx";
  668. status = "disabled";
  669. #address-cells = <1>;
  670. #size-cells = <0>;
  671. };
  672. intc: interrupt-controller@01c20400 {
  673. compatible = "allwinner,sun4i-a10-ic";
  674. reg = <0x01c20400 0x400>;
  675. interrupt-controller;
  676. #interrupt-cells = <1>;
  677. };
  678. pio: pinctrl@01c20800 {
  679. compatible = "nextthing,gr8-pinctrl";
  680. reg = <0x01c20800 0x400>;
  681. interrupts = <28>;
  682. clocks = <&apb0_gates 5>;
  683. gpio-controller;
  684. interrupt-controller;
  685. #interrupt-cells = <3>;
  686. #gpio-cells = <3>;
  687. i2c0_pins_a: i2c0@0 {
  688. allwinner,pins = "PB0", "PB1";
  689. allwinner,function = "i2c0";
  690. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  691. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  692. };
  693. i2c1_pins_a: i2c1@0 {
  694. allwinner,pins = "PB15", "PB16";
  695. allwinner,function = "i2c1";
  696. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  697. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  698. };
  699. i2c2_pins_a: i2c2@0 {
  700. allwinner,pins = "PB17", "PB18";
  701. allwinner,function = "i2c2";
  702. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  703. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  704. };
  705. i2s0_data_pins_a: i2s0-data@0 {
  706. allwinner,pins = "PB6", "PB7", "PB8", "PB9";
  707. allwinner,function = "i2s0";
  708. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  709. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  710. };
  711. i2s0_mclk_pins_a: i2s0-mclk@0 {
  712. allwinner,pins = "PB6", "PB7", "PB8", "PB9";
  713. allwinner,function = "i2s0";
  714. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  715. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  716. };
  717. ir0_rx_pins_a: ir0@0 {
  718. allwinner,pins = "PB4";
  719. allwinner,function = "ir0";
  720. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  721. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  722. };
  723. lcd_rgb666_pins: lcd-rgb666@0 {
  724. allwinner,pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7",
  725. "PD10", "PD11", "PD12", "PD13", "PD14", "PD15",
  726. "PD18", "PD19", "PD20", "PD21", "PD22", "PD23",
  727. "PD24", "PD25", "PD26", "PD27";
  728. allwinner,function = "lcd0";
  729. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  730. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  731. };
  732. mmc0_pins_a: mmc0@0 {
  733. allwinner,pins = "PF0", "PF1", "PF2", "PF3",
  734. "PF4", "PF5";
  735. allwinner,function = "mmc0";
  736. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  737. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  738. };
  739. nand_pins_a: nand-base0@0 {
  740. allwinner,pins = "PC0", "PC1", "PC2",
  741. "PC5", "PC8", "PC9", "PC10",
  742. "PC11", "PC12", "PC13", "PC14",
  743. "PC15";
  744. allwinner,function = "nand0";
  745. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  746. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  747. };
  748. nand_cs0_pins_a: nand-cs@0 {
  749. allwinner,pins = "PC4";
  750. allwinner,function = "nand0";
  751. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  752. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  753. };
  754. nand_rb0_pins_a: nand-rb@0 {
  755. allwinner,pins = "PC6";
  756. allwinner,function = "nand0";
  757. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  758. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  759. };
  760. pwm0_pins_a: pwm0@0 {
  761. allwinner,pins = "PB2";
  762. allwinner,function = "pwm0";
  763. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  764. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  765. };
  766. spdif_tx_pins_a: spdif@0 {
  767. allwinner,pins = "PB10";
  768. allwinner,function = "spdif";
  769. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  770. allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
  771. };
  772. uart1_pins_a: uart1@1 {
  773. allwinner,pins = "PG3", "PG4";
  774. allwinner,function = "uart1";
  775. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  776. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  777. };
  778. uart1_cts_rts_pins_a: uart1-cts-rts@0 {
  779. allwinner,pins = "PG5", "PG6";
  780. allwinner,function = "uart1";
  781. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  782. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  783. };
  784. };
  785. pwm: pwm@01c20e00 {
  786. compatible = "allwinner,sun5i-a10s-pwm";
  787. reg = <0x01c20e00 0xc>;
  788. clocks = <&osc24M>;
  789. #pwm-cells = <3>;
  790. status = "disabled";
  791. };
  792. timer@01c20c00 {
  793. compatible = "allwinner,sun4i-a10-timer";
  794. reg = <0x01c20c00 0x90>;
  795. interrupts = <22>;
  796. clocks = <&osc24M>;
  797. };
  798. wdt: watchdog@01c20c90 {
  799. compatible = "allwinner,sun4i-a10-wdt";
  800. reg = <0x01c20c90 0x10>;
  801. };
  802. spdif: spdif@01c21000 {
  803. #sound-dai-cells = <0>;
  804. compatible = "allwinner,sun4i-a10-spdif";
  805. reg = <0x01c21000 0x400>;
  806. interrupts = <13>;
  807. clocks = <&apb0_gates 1>, <&spdif_clk>;
  808. clock-names = "apb", "spdif";
  809. dmas = <&dma SUN4I_DMA_NORMAL 2>,
  810. <&dma SUN4I_DMA_NORMAL 2>;
  811. dma-names = "rx", "tx";
  812. status = "disabled";
  813. };
  814. ir0: ir@01c21800 {
  815. compatible = "allwinner,sun4i-a10-ir";
  816. clocks = <&apb0_gates 6>, <&ir0_clk>;
  817. clock-names = "apb", "ir";
  818. interrupts = <5>;
  819. reg = <0x01c21800 0x40>;
  820. status = "disabled";
  821. };
  822. i2s0: i2s@01c22400 {
  823. #sound-dai-cells = <0>;
  824. compatible = "allwinner,sun4i-a10-i2s";
  825. reg = <0x01c22400 0x400>;
  826. interrupts = <16>;
  827. clocks = <&apb0_gates 3>, <&i2s0_clk>;
  828. clock-names = "apb", "mod";
  829. dmas = <&dma SUN4I_DMA_NORMAL 3>,
  830. <&dma SUN4I_DMA_NORMAL 3>;
  831. dma-names = "rx", "tx";
  832. status = "disabled";
  833. };
  834. lradc: lradc@01c22800 {
  835. compatible = "allwinner,sun4i-a10-lradc-keys";
  836. reg = <0x01c22800 0x100>;
  837. interrupts = <31>;
  838. status = "disabled";
  839. };
  840. codec: codec@01c22c00 {
  841. #sound-dai-cells = <0>;
  842. compatible = "allwinner,sun4i-a10-codec";
  843. reg = <0x01c22c00 0x40>;
  844. interrupts = <30>;
  845. clocks = <&apb0_gates 0>, <&codec_clk>;
  846. clock-names = "apb", "codec";
  847. dmas = <&dma SUN4I_DMA_NORMAL 19>,
  848. <&dma SUN4I_DMA_NORMAL 19>;
  849. dma-names = "rx", "tx";
  850. status = "disabled";
  851. };
  852. rtp: rtp@01c25000 {
  853. compatible = "allwinner,sun5i-a13-ts";
  854. reg = <0x01c25000 0x100>;
  855. interrupts = <29>;
  856. #thermal-sensor-cells = <0>;
  857. };
  858. uart1: serial@01c28400 {
  859. compatible = "snps,dw-apb-uart";
  860. reg = <0x01c28400 0x400>;
  861. interrupts = <2>;
  862. reg-shift = <2>;
  863. reg-io-width = <4>;
  864. clocks = <&apb1_gates 17>;
  865. status = "disabled";
  866. };
  867. uart2: serial@01c28800 {
  868. compatible = "snps,dw-apb-uart";
  869. reg = <0x01c28800 0x400>;
  870. interrupts = <3>;
  871. reg-shift = <2>;
  872. reg-io-width = <4>;
  873. clocks = <&apb1_gates 18>;
  874. status = "disabled";
  875. };
  876. i2c0: i2c@01c2ac00 {
  877. compatible = "allwinner,sun4i-a10-i2c";
  878. reg = <0x01c2ac00 0x400>;
  879. interrupts = <7>;
  880. clocks = <&apb1_gates 0>;
  881. status = "disabled";
  882. #address-cells = <1>;
  883. #size-cells = <0>;
  884. };
  885. i2c1: i2c@01c2b000 {
  886. compatible = "allwinner,sun4i-a10-i2c";
  887. reg = <0x01c2b000 0x400>;
  888. interrupts = <8>;
  889. clocks = <&apb1_gates 1>;
  890. status = "disabled";
  891. #address-cells = <1>;
  892. #size-cells = <0>;
  893. };
  894. i2c2: i2c@01c2b400 {
  895. compatible = "allwinner,sun4i-a10-i2c";
  896. reg = <0x01c2b400 0x400>;
  897. interrupts = <9>;
  898. clocks = <&apb1_gates 2>;
  899. status = "disabled";
  900. #address-cells = <1>;
  901. #size-cells = <0>;
  902. };
  903. timer@01c60000 {
  904. compatible = "allwinner,sun5i-a13-hstimer";
  905. reg = <0x01c60000 0x1000>;
  906. interrupts = <82>, <83>;
  907. clocks = <&ahb_gates 28>;
  908. };
  909. fe0: display-frontend@01e00000 {
  910. compatible = "allwinner,sun5i-a13-display-frontend";
  911. reg = <0x01e00000 0x20000>;
  912. interrupts = <47>;
  913. clocks = <&ahb_gates 46>, <&de_fe_clk>,
  914. <&dram_gates 25>;
  915. clock-names = "ahb", "mod",
  916. "ram";
  917. resets = <&de_fe_clk>;
  918. status = "disabled";
  919. ports {
  920. #address-cells = <1>;
  921. #size-cells = <0>;
  922. fe0_out: port@1 {
  923. #address-cells = <1>;
  924. #size-cells = <0>;
  925. reg = <1>;
  926. fe0_out_be0: endpoint@0 {
  927. reg = <0>;
  928. remote-endpoint = <&be0_in_fe0>;
  929. };
  930. };
  931. };
  932. };
  933. be0: display-backend@01e60000 {
  934. compatible = "allwinner,sun5i-a13-display-backend";
  935. reg = <0x01e60000 0x10000>;
  936. clocks = <&ahb_gates 44>, <&de_be_clk>,
  937. <&dram_gates 26>;
  938. clock-names = "ahb", "mod",
  939. "ram";
  940. resets = <&de_be_clk>;
  941. status = "disabled";
  942. assigned-clocks = <&de_be_clk>;
  943. assigned-clock-rates = <300000000>;
  944. ports {
  945. #address-cells = <1>;
  946. #size-cells = <0>;
  947. be0_in: port@0 {
  948. #address-cells = <1>;
  949. #size-cells = <0>;
  950. reg = <0>;
  951. be0_in_fe0: endpoint@0 {
  952. reg = <0>;
  953. remote-endpoint = <&fe0_out_be0>;
  954. };
  955. };
  956. be0_out: port@1 {
  957. #address-cells = <1>;
  958. #size-cells = <0>;
  959. reg = <1>;
  960. be0_out_tcon0: endpoint@0 {
  961. reg = <0>;
  962. remote-endpoint = <&tcon0_in_be0>;
  963. };
  964. };
  965. };
  966. };
  967. };
  968. };