sun7i-a20.dtsi 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710
  1. /*
  2. * Copyright 2013 Maxime Ripard
  3. *
  4. * Maxime Ripard <[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/thermal/thermal.h>
  46. #include <dt-bindings/dma/sun4i-a10.h>
  47. #include <dt-bindings/clock/sun7i-a20-ccu.h>
  48. #include <dt-bindings/reset/sun4i-a10-ccu.h>
  49. #include <dt-bindings/pinctrl/sun4i-a10.h>
  50. / {
  51. interrupt-parent = <&gic>;
  52. #address-cells = <1>;
  53. #size-cells = <1>;
  54. aliases {
  55. ethernet0 = &gmac;
  56. };
  57. chosen {
  58. #address-cells = <1>;
  59. #size-cells = <1>;
  60. ranges;
  61. framebuffer-lcd0-hdmi {
  62. compatible = "allwinner,simple-framebuffer",
  63. "simple-framebuffer";
  64. allwinner,pipeline = "de_be0-lcd0-hdmi";
  65. clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_HDMI0>,
  66. <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
  67. <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_DE_BE0>,
  68. <&ccu CLK_HDMI>;
  69. status = "disabled";
  70. };
  71. framebuffer-lcd0 {
  72. compatible = "allwinner,simple-framebuffer",
  73. "simple-framebuffer";
  74. allwinner,pipeline = "de_be0-lcd0";
  75. clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_DE_BE0>,
  76. <&ccu CLK_DE_BE0>, <&ccu CLK_TCON0_CH0>,
  77. <&ccu CLK_DRAM_DE_BE0>;
  78. status = "disabled";
  79. };
  80. framebuffer-lcd0-tve0 {
  81. compatible = "allwinner,simple-framebuffer",
  82. "simple-framebuffer";
  83. allwinner,pipeline = "de_be0-lcd0-tve0";
  84. clocks = <&ccu CLK_AHB_TVE0>, <&ccu CLK_AHB_LCD0>,
  85. <&ccu CLK_AHB_DE_BE0>,
  86. <&ccu CLK_DE_BE0>, <&ccu CLK_TCON0_CH1>,
  87. <&ccu CLK_DRAM_TVE0>, <&ccu CLK_DRAM_DE_BE0>;
  88. status = "disabled";
  89. };
  90. };
  91. cpus {
  92. #address-cells = <1>;
  93. #size-cells = <0>;
  94. cpu0: cpu@0 {
  95. compatible = "arm,cortex-a7";
  96. device_type = "cpu";
  97. reg = <0>;
  98. clocks = <&ccu CLK_CPU>;
  99. clock-latency = <244144>; /* 8 32k periods */
  100. operating-points =
  101. /* kHz uV */
  102. <960000 1400000>,
  103. <912000 1400000>,
  104. <864000 1300000>,
  105. <720000 1200000>,
  106. <528000 1100000>,
  107. <312000 1000000>,
  108. <144000 1000000>;
  109. #cooling-cells = <2>;
  110. };
  111. cpu1: cpu@1 {
  112. compatible = "arm,cortex-a7";
  113. device_type = "cpu";
  114. reg = <1>;
  115. clocks = <&ccu CLK_CPU>;
  116. clock-latency = <244144>; /* 8 32k periods */
  117. operating-points =
  118. /* kHz uV */
  119. <960000 1400000>,
  120. <912000 1400000>,
  121. <864000 1300000>,
  122. <720000 1200000>,
  123. <528000 1100000>,
  124. <312000 1000000>,
  125. <144000 1000000>;
  126. #cooling-cells = <2>;
  127. };
  128. };
  129. thermal-zones {
  130. cpu-thermal {
  131. /* milliseconds */
  132. polling-delay-passive = <250>;
  133. polling-delay = <1000>;
  134. thermal-sensors = <&rtp>;
  135. cooling-maps {
  136. map0 {
  137. trip = <&cpu_alert0>;
  138. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  139. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  140. };
  141. };
  142. trips {
  143. cpu_alert0: cpu_alert0 {
  144. /* milliCelsius */
  145. temperature = <75000>;
  146. hysteresis = <2000>;
  147. type = "passive";
  148. };
  149. cpu_crit: cpu_crit {
  150. /* milliCelsius */
  151. temperature = <100000>;
  152. hysteresis = <2000>;
  153. type = "critical";
  154. };
  155. };
  156. };
  157. };
  158. reserved-memory {
  159. #address-cells = <1>;
  160. #size-cells = <1>;
  161. ranges;
  162. /* Address must be kept in the lower 256 MiBs of DRAM for VE. */
  163. default-pool {
  164. compatible = "shared-dma-pool";
  165. size = <0x6000000>;
  166. alloc-ranges = <0x40000000 0x10000000>;
  167. reusable;
  168. linux,cma-default;
  169. };
  170. };
  171. timer {
  172. compatible = "arm,armv7-timer";
  173. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  174. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  175. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  176. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  177. };
  178. pmu {
  179. compatible = "arm,cortex-a7-pmu";
  180. interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
  181. <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
  182. };
  183. clocks {
  184. #address-cells = <1>;
  185. #size-cells = <1>;
  186. ranges;
  187. osc24M: clk-24M {
  188. #clock-cells = <0>;
  189. compatible = "fixed-clock";
  190. clock-frequency = <24000000>;
  191. clock-output-names = "osc24M";
  192. };
  193. osc32k: clk-32k {
  194. #clock-cells = <0>;
  195. compatible = "fixed-clock";
  196. clock-frequency = <32768>;
  197. clock-output-names = "osc32k";
  198. };
  199. /*
  200. * The following two are dummy clocks, placeholders
  201. * used in the gmac_tx clock. The gmac driver will
  202. * choose one parent depending on the PHY interface
  203. * mode, using clk_set_rate auto-reparenting.
  204. *
  205. * The actual TX clock rate is not controlled by the
  206. * gmac_tx clock.
  207. */
  208. mii_phy_tx_clk: clk-mii-phy-tx {
  209. #clock-cells = <0>;
  210. compatible = "fixed-clock";
  211. clock-frequency = <25000000>;
  212. clock-output-names = "mii_phy_tx";
  213. };
  214. gmac_int_tx_clk: clk-gmac-int-tx {
  215. #clock-cells = <0>;
  216. compatible = "fixed-clock";
  217. clock-frequency = <125000000>;
  218. clock-output-names = "gmac_int_tx";
  219. };
  220. gmac_tx_clk: clk@1c20164 {
  221. #clock-cells = <0>;
  222. compatible = "allwinner,sun7i-a20-gmac-clk";
  223. reg = <0x01c20164 0x4>;
  224. clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
  225. clock-output-names = "gmac_tx";
  226. };
  227. };
  228. de: display-engine {
  229. compatible = "allwinner,sun7i-a20-display-engine";
  230. allwinner,pipelines = <&fe0>, <&fe1>;
  231. status = "disabled";
  232. };
  233. soc {
  234. compatible = "simple-bus";
  235. #address-cells = <1>;
  236. #size-cells = <1>;
  237. ranges;
  238. system-control@1c00000 {
  239. compatible = "allwinner,sun7i-a20-system-control",
  240. "allwinner,sun4i-a10-system-control";
  241. reg = <0x01c00000 0x30>;
  242. #address-cells = <1>;
  243. #size-cells = <1>;
  244. ranges;
  245. sram_a: sram@0 {
  246. compatible = "mmio-sram";
  247. reg = <0x00000000 0xc000>;
  248. #address-cells = <1>;
  249. #size-cells = <1>;
  250. ranges = <0 0x00000000 0xc000>;
  251. emac_sram: sram-section@8000 {
  252. compatible = "allwinner,sun7i-a20-sram-a3-a4",
  253. "allwinner,sun4i-a10-sram-a3-a4";
  254. reg = <0x8000 0x4000>;
  255. status = "disabled";
  256. };
  257. };
  258. sram_d: sram@10000 {
  259. compatible = "mmio-sram";
  260. reg = <0x00010000 0x1000>;
  261. #address-cells = <1>;
  262. #size-cells = <1>;
  263. ranges = <0 0x00010000 0x1000>;
  264. otg_sram: sram-section@0 {
  265. compatible = "allwinner,sun7i-a20-sram-d",
  266. "allwinner,sun4i-a10-sram-d";
  267. reg = <0x0000 0x1000>;
  268. status = "disabled";
  269. };
  270. };
  271. sram_c: sram@1d00000 {
  272. compatible = "mmio-sram";
  273. reg = <0x01d00000 0xd0000>;
  274. #address-cells = <1>;
  275. #size-cells = <1>;
  276. ranges = <0 0x01d00000 0xd0000>;
  277. ve_sram: sram-section@0 {
  278. compatible = "allwinner,sun7i-a20-sram-c1",
  279. "allwinner,sun4i-a10-sram-c1";
  280. reg = <0x000000 0x80000>;
  281. };
  282. };
  283. };
  284. nmi_intc: interrupt-controller@1c00030 {
  285. compatible = "allwinner,sun7i-a20-sc-nmi";
  286. interrupt-controller;
  287. #interrupt-cells = <2>;
  288. reg = <0x01c00030 0x0c>;
  289. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  290. };
  291. dma: dma-controller@1c02000 {
  292. compatible = "allwinner,sun4i-a10-dma";
  293. reg = <0x01c02000 0x1000>;
  294. interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
  295. clocks = <&ccu CLK_AHB_DMA>;
  296. #dma-cells = <2>;
  297. };
  298. nfc: nand-controller@1c03000 {
  299. compatible = "allwinner,sun4i-a10-nand";
  300. reg = <0x01c03000 0x1000>;
  301. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  302. clocks = <&ccu CLK_AHB_NAND>, <&ccu CLK_NAND>;
  303. clock-names = "ahb", "mod";
  304. dmas = <&dma SUN4I_DMA_DEDICATED 3>;
  305. dma-names = "rxtx";
  306. status = "disabled";
  307. #address-cells = <1>;
  308. #size-cells = <0>;
  309. };
  310. spi0: spi@1c05000 {
  311. compatible = "allwinner,sun4i-a10-spi";
  312. reg = <0x01c05000 0x1000>;
  313. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  314. clocks = <&ccu CLK_AHB_SPI0>, <&ccu CLK_SPI0>;
  315. clock-names = "ahb", "mod";
  316. dmas = <&dma SUN4I_DMA_DEDICATED 27>,
  317. <&dma SUN4I_DMA_DEDICATED 26>;
  318. dma-names = "rx", "tx";
  319. status = "disabled";
  320. #address-cells = <1>;
  321. #size-cells = <0>;
  322. num-cs = <4>;
  323. };
  324. spi1: spi@1c06000 {
  325. compatible = "allwinner,sun4i-a10-spi";
  326. reg = <0x01c06000 0x1000>;
  327. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
  328. clocks = <&ccu CLK_AHB_SPI1>, <&ccu CLK_SPI1>;
  329. clock-names = "ahb", "mod";
  330. dmas = <&dma SUN4I_DMA_DEDICATED 9>,
  331. <&dma SUN4I_DMA_DEDICATED 8>;
  332. dma-names = "rx", "tx";
  333. status = "disabled";
  334. #address-cells = <1>;
  335. #size-cells = <0>;
  336. num-cs = <1>;
  337. };
  338. csi0: csi@1c09000 {
  339. compatible = "allwinner,sun7i-a20-csi0";
  340. reg = <0x01c09000 0x1000>;
  341. interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
  342. clocks = <&ccu CLK_AHB_CSI0>, <&ccu CLK_CSI_SCLK>, <&ccu CLK_DRAM_CSI0>;
  343. clock-names = "bus", "isp", "ram";
  344. resets = <&ccu RST_CSI0>;
  345. status = "disabled";
  346. };
  347. emac: ethernet@1c0b000 {
  348. compatible = "allwinner,sun4i-a10-emac";
  349. reg = <0x01c0b000 0x1000>;
  350. interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
  351. clocks = <&ccu CLK_AHB_EMAC>;
  352. allwinner,sram = <&emac_sram 1>;
  353. status = "disabled";
  354. };
  355. mdio: mdio@1c0b080 {
  356. compatible = "allwinner,sun4i-a10-mdio";
  357. reg = <0x01c0b080 0x14>;
  358. status = "disabled";
  359. #address-cells = <1>;
  360. #size-cells = <0>;
  361. };
  362. tcon0: lcd-controller@1c0c000 {
  363. compatible = "allwinner,sun7i-a20-tcon0",
  364. "allwinner,sun7i-a20-tcon";
  365. reg = <0x01c0c000 0x1000>;
  366. interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
  367. resets = <&ccu RST_TCON0>, <&ccu RST_LVDS>;
  368. reset-names = "lcd", "lvds";
  369. clocks = <&ccu CLK_AHB_LCD0>,
  370. <&ccu CLK_TCON0_CH0>,
  371. <&ccu CLK_TCON0_CH1>;
  372. clock-names = "ahb",
  373. "tcon-ch0",
  374. "tcon-ch1";
  375. clock-output-names = "tcon0-pixel-clock";
  376. #clock-cells = <0>;
  377. dmas = <&dma SUN4I_DMA_DEDICATED 14>;
  378. ports {
  379. #address-cells = <1>;
  380. #size-cells = <0>;
  381. tcon0_in: port@0 {
  382. #address-cells = <1>;
  383. #size-cells = <0>;
  384. reg = <0>;
  385. tcon0_in_be0: endpoint@0 {
  386. reg = <0>;
  387. remote-endpoint = <&be0_out_tcon0>;
  388. };
  389. tcon0_in_be1: endpoint@1 {
  390. reg = <1>;
  391. remote-endpoint = <&be1_out_tcon0>;
  392. };
  393. };
  394. tcon0_out: port@1 {
  395. #address-cells = <1>;
  396. #size-cells = <0>;
  397. reg = <1>;
  398. tcon0_out_hdmi: endpoint@1 {
  399. reg = <1>;
  400. remote-endpoint = <&hdmi_in_tcon0>;
  401. allwinner,tcon-channel = <1>;
  402. };
  403. };
  404. };
  405. };
  406. tcon1: lcd-controller@1c0d000 {
  407. compatible = "allwinner,sun7i-a20-tcon1",
  408. "allwinner,sun7i-a20-tcon";
  409. reg = <0x01c0d000 0x1000>;
  410. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  411. resets = <&ccu RST_TCON1>;
  412. reset-names = "lcd";
  413. clocks = <&ccu CLK_AHB_LCD1>,
  414. <&ccu CLK_TCON1_CH0>,
  415. <&ccu CLK_TCON1_CH1>;
  416. clock-names = "ahb",
  417. "tcon-ch0",
  418. "tcon-ch1";
  419. clock-output-names = "tcon1-pixel-clock";
  420. #clock-cells = <0>;
  421. dmas = <&dma SUN4I_DMA_DEDICATED 15>;
  422. ports {
  423. #address-cells = <1>;
  424. #size-cells = <0>;
  425. tcon1_in: port@0 {
  426. #address-cells = <1>;
  427. #size-cells = <0>;
  428. reg = <0>;
  429. tcon1_in_be0: endpoint@0 {
  430. reg = <0>;
  431. remote-endpoint = <&be0_out_tcon1>;
  432. };
  433. tcon1_in_be1: endpoint@1 {
  434. reg = <1>;
  435. remote-endpoint = <&be1_out_tcon1>;
  436. };
  437. };
  438. tcon1_out: port@1 {
  439. #address-cells = <1>;
  440. #size-cells = <0>;
  441. reg = <1>;
  442. tcon1_out_hdmi: endpoint@1 {
  443. reg = <1>;
  444. remote-endpoint = <&hdmi_in_tcon1>;
  445. allwinner,tcon-channel = <1>;
  446. };
  447. };
  448. };
  449. };
  450. video-codec@1c0e000 {
  451. compatible = "allwinner,sun7i-a20-video-engine";
  452. reg = <0x01c0e000 0x1000>;
  453. clocks = <&ccu CLK_AHB_VE>, <&ccu CLK_VE>,
  454. <&ccu CLK_DRAM_VE>;
  455. clock-names = "ahb", "mod", "ram";
  456. resets = <&ccu RST_VE>;
  457. interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
  458. allwinner,sram = <&ve_sram 1>;
  459. };
  460. mmc0: mmc@1c0f000 {
  461. compatible = "allwinner,sun7i-a20-mmc";
  462. reg = <0x01c0f000 0x1000>;
  463. clocks = <&ccu CLK_AHB_MMC0>,
  464. <&ccu CLK_MMC0>,
  465. <&ccu CLK_MMC0_OUTPUT>,
  466. <&ccu CLK_MMC0_SAMPLE>;
  467. clock-names = "ahb",
  468. "mmc",
  469. "output",
  470. "sample";
  471. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  472. pinctrl-names = "default";
  473. pinctrl-0 = <&mmc0_pins>;
  474. status = "disabled";
  475. #address-cells = <1>;
  476. #size-cells = <0>;
  477. };
  478. mmc1: mmc@1c10000 {
  479. compatible = "allwinner,sun7i-a20-mmc";
  480. reg = <0x01c10000 0x1000>;
  481. clocks = <&ccu CLK_AHB_MMC1>,
  482. <&ccu CLK_MMC1>,
  483. <&ccu CLK_MMC1_OUTPUT>,
  484. <&ccu CLK_MMC1_SAMPLE>;
  485. clock-names = "ahb",
  486. "mmc",
  487. "output",
  488. "sample";
  489. interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
  490. status = "disabled";
  491. #address-cells = <1>;
  492. #size-cells = <0>;
  493. };
  494. mmc2: mmc@1c11000 {
  495. compatible = "allwinner,sun7i-a20-mmc";
  496. reg = <0x01c11000 0x1000>;
  497. clocks = <&ccu CLK_AHB_MMC2>,
  498. <&ccu CLK_MMC2>,
  499. <&ccu CLK_MMC2_OUTPUT>,
  500. <&ccu CLK_MMC2_SAMPLE>;
  501. clock-names = "ahb",
  502. "mmc",
  503. "output",
  504. "sample";
  505. interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
  506. pinctrl-names = "default";
  507. pinctrl-0 = <&mmc2_pins>;
  508. status = "disabled";
  509. #address-cells = <1>;
  510. #size-cells = <0>;
  511. };
  512. mmc3: mmc@1c12000 {
  513. compatible = "allwinner,sun7i-a20-mmc";
  514. reg = <0x01c12000 0x1000>;
  515. clocks = <&ccu CLK_AHB_MMC3>,
  516. <&ccu CLK_MMC3>,
  517. <&ccu CLK_MMC3_OUTPUT>,
  518. <&ccu CLK_MMC3_SAMPLE>;
  519. clock-names = "ahb",
  520. "mmc",
  521. "output",
  522. "sample";
  523. interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
  524. pinctrl-names = "default";
  525. pinctrl-0 = <&mmc3_pins>;
  526. status = "disabled";
  527. #address-cells = <1>;
  528. #size-cells = <0>;
  529. };
  530. usb_otg: usb@1c13000 {
  531. compatible = "allwinner,sun4i-a10-musb";
  532. reg = <0x01c13000 0x0400>;
  533. clocks = <&ccu CLK_AHB_OTG>;
  534. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  535. interrupt-names = "mc";
  536. phys = <&usbphy 0>;
  537. phy-names = "usb";
  538. extcon = <&usbphy 0>;
  539. allwinner,sram = <&otg_sram 1>;
  540. dr_mode = "otg";
  541. status = "disabled";
  542. };
  543. usbphy: phy@1c13400 {
  544. #phy-cells = <1>;
  545. compatible = "allwinner,sun7i-a20-usb-phy";
  546. reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>;
  547. reg-names = "phy_ctrl", "pmu1", "pmu2";
  548. clocks = <&ccu CLK_USB_PHY>;
  549. clock-names = "usb_phy";
  550. resets = <&ccu RST_USB_PHY0>,
  551. <&ccu RST_USB_PHY1>,
  552. <&ccu RST_USB_PHY2>;
  553. reset-names = "usb0_reset", "usb1_reset", "usb2_reset";
  554. status = "disabled";
  555. };
  556. ehci0: usb@1c14000 {
  557. compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
  558. reg = <0x01c14000 0x100>;
  559. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  560. clocks = <&ccu CLK_AHB_EHCI0>;
  561. phys = <&usbphy 1>;
  562. phy-names = "usb";
  563. status = "disabled";
  564. };
  565. ohci0: usb@1c14400 {
  566. compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
  567. reg = <0x01c14400 0x100>;
  568. interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
  569. clocks = <&ccu CLK_USB_OHCI0>, <&ccu CLK_AHB_OHCI0>;
  570. phys = <&usbphy 1>;
  571. phy-names = "usb";
  572. status = "disabled";
  573. };
  574. crypto: crypto-engine@1c15000 {
  575. compatible = "allwinner,sun7i-a20-crypto",
  576. "allwinner,sun4i-a10-crypto";
  577. reg = <0x01c15000 0x1000>;
  578. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  579. clocks = <&ccu CLK_AHB_SS>, <&ccu CLK_SS>;
  580. clock-names = "ahb", "mod";
  581. };
  582. hdmi: hdmi@1c16000 {
  583. compatible = "allwinner,sun7i-a20-hdmi",
  584. "allwinner,sun5i-a10s-hdmi";
  585. reg = <0x01c16000 0x1000>;
  586. interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
  587. clocks = <&ccu CLK_AHB_HDMI0>, <&ccu CLK_HDMI>,
  588. <&ccu CLK_PLL_VIDEO0_2X>,
  589. <&ccu CLK_PLL_VIDEO1_2X>;
  590. clock-names = "ahb", "mod", "pll-0", "pll-1";
  591. dmas = <&dma SUN4I_DMA_NORMAL 16>,
  592. <&dma SUN4I_DMA_NORMAL 16>,
  593. <&dma SUN4I_DMA_DEDICATED 24>;
  594. dma-names = "ddc-tx", "ddc-rx", "audio-tx";
  595. status = "disabled";
  596. ports {
  597. #address-cells = <1>;
  598. #size-cells = <0>;
  599. hdmi_in: port@0 {
  600. #address-cells = <1>;
  601. #size-cells = <0>;
  602. reg = <0>;
  603. hdmi_in_tcon0: endpoint@0 {
  604. reg = <0>;
  605. remote-endpoint = <&tcon0_out_hdmi>;
  606. };
  607. hdmi_in_tcon1: endpoint@1 {
  608. reg = <1>;
  609. remote-endpoint = <&tcon1_out_hdmi>;
  610. };
  611. };
  612. hdmi_out: port@1 {
  613. reg = <1>;
  614. };
  615. };
  616. };
  617. spi2: spi@1c17000 {
  618. compatible = "allwinner,sun4i-a10-spi";
  619. reg = <0x01c17000 0x1000>;
  620. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  621. clocks = <&ccu CLK_AHB_SPI2>, <&ccu CLK_SPI2>;
  622. clock-names = "ahb", "mod";
  623. dmas = <&dma SUN4I_DMA_DEDICATED 29>,
  624. <&dma SUN4I_DMA_DEDICATED 28>;
  625. dma-names = "rx", "tx";
  626. status = "disabled";
  627. #address-cells = <1>;
  628. #size-cells = <0>;
  629. num-cs = <1>;
  630. };
  631. ahci: sata@1c18000 {
  632. compatible = "allwinner,sun4i-a10-ahci";
  633. reg = <0x01c18000 0x1000>;
  634. interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
  635. clocks = <&ccu CLK_AHB_SATA>, <&ccu CLK_SATA>;
  636. status = "disabled";
  637. };
  638. ehci1: usb@1c1c000 {
  639. compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
  640. reg = <0x01c1c000 0x100>;
  641. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  642. clocks = <&ccu CLK_AHB_EHCI1>;
  643. phys = <&usbphy 2>;
  644. phy-names = "usb";
  645. status = "disabled";
  646. };
  647. ohci1: usb@1c1c400 {
  648. compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
  649. reg = <0x01c1c400 0x100>;
  650. interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  651. clocks = <&ccu CLK_USB_OHCI1>, <&ccu CLK_AHB_OHCI1>;
  652. phys = <&usbphy 2>;
  653. phy-names = "usb";
  654. status = "disabled";
  655. };
  656. csi1: csi@1c1d000 {
  657. compatible = "allwinner,sun7i-a20-csi1",
  658. "allwinner,sun4i-a10-csi1";
  659. reg = <0x01c1d000 0x1000>;
  660. interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
  661. clocks = <&ccu CLK_AHB_CSI1>, <&ccu CLK_DRAM_CSI1>;
  662. clock-names = "bus", "ram";
  663. resets = <&ccu RST_CSI1>;
  664. status = "disabled";
  665. };
  666. spi3: spi@1c1f000 {
  667. compatible = "allwinner,sun4i-a10-spi";
  668. reg = <0x01c1f000 0x1000>;
  669. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  670. clocks = <&ccu CLK_AHB_SPI3>, <&ccu CLK_SPI3>;
  671. clock-names = "ahb", "mod";
  672. dmas = <&dma SUN4I_DMA_DEDICATED 31>,
  673. <&dma SUN4I_DMA_DEDICATED 30>;
  674. dma-names = "rx", "tx";
  675. status = "disabled";
  676. #address-cells = <1>;
  677. #size-cells = <0>;
  678. num-cs = <1>;
  679. };
  680. ccu: clock@1c20000 {
  681. compatible = "allwinner,sun7i-a20-ccu";
  682. reg = <0x01c20000 0x400>;
  683. clocks = <&osc24M>, <&osc32k>;
  684. clock-names = "hosc", "losc";
  685. #clock-cells = <1>;
  686. #reset-cells = <1>;
  687. };
  688. pio: pinctrl@1c20800 {
  689. compatible = "allwinner,sun7i-a20-pinctrl";
  690. reg = <0x01c20800 0x400>;
  691. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  692. clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
  693. clock-names = "apb", "hosc", "losc";
  694. gpio-controller;
  695. interrupt-controller;
  696. #interrupt-cells = <3>;
  697. #gpio-cells = <3>;
  698. /omit-if-no-ref/
  699. can_pa_pins: can-pa-pins {
  700. pins = "PA16", "PA17";
  701. function = "can";
  702. };
  703. /omit-if-no-ref/
  704. can_ph_pins: can-ph-pins {
  705. pins = "PH20", "PH21";
  706. function = "can";
  707. };
  708. /omit-if-no-ref/
  709. clk_out_a_pin: clk-out-a-pin {
  710. pins = "PI12";
  711. function = "clk_out_a";
  712. };
  713. /omit-if-no-ref/
  714. clk_out_b_pin: clk-out-b-pin {
  715. pins = "PI13";
  716. function = "clk_out_b";
  717. };
  718. /omit-if-no-ref/
  719. csi0_8bits_pins: csi-8bits-pins {
  720. pins = "PE0", "PE2", "PE3", "PE4", "PE5",
  721. "PE6", "PE7", "PE8", "PE9", "PE10",
  722. "PE11";
  723. function = "csi0";
  724. };
  725. /omit-if-no-ref/
  726. csi0_clk_pin: csi-clk-pin {
  727. pins = "PE1";
  728. function = "csi0";
  729. };
  730. /omit-if-no-ref/
  731. csi1_8bits_pg_pins: csi1-8bits-pg-pins {
  732. pins = "PG0", "PG2", "PG3", "PG4", "PG5",
  733. "PG6", "PG7", "PG8", "PG9", "PG10",
  734. "PG11";
  735. function = "csi1";
  736. };
  737. /omit-if-no-ref/
  738. csi1_24bits_ph_pins: csi1-24bits-ph-pins {
  739. pins = "PH0", "PH1", "PH2", "PH3", "PH4",
  740. "PH5", "PH6", "PH7", "PH8", "PH9",
  741. "PH10", "PH11", "PH12", "PH13", "PH14",
  742. "PH15", "PH16", "PH17", "PH18", "PH19",
  743. "PH20", "PH21", "PH22", "PH23", "PH24",
  744. "PH25", "PH26", "PH27";
  745. function = "csi1";
  746. };
  747. /omit-if-no-ref/
  748. csi1_clk_pg_pin: csi1-clk-pg-pin {
  749. pins = "PG1";
  750. function = "csi1";
  751. };
  752. /omit-if-no-ref/
  753. emac_pa_pins: emac-pa-pins {
  754. pins = "PA0", "PA1", "PA2",
  755. "PA3", "PA4", "PA5", "PA6",
  756. "PA7", "PA8", "PA9", "PA10",
  757. "PA11", "PA12", "PA13", "PA14",
  758. "PA15", "PA16";
  759. function = "emac";
  760. };
  761. /omit-if-no-ref/
  762. emac_ph_pins: emac-ph-pins {
  763. pins = "PH8", "PH9", "PH10", "PH11",
  764. "PH14", "PH15", "PH16", "PH17",
  765. "PH18", "PH19", "PH20", "PH21",
  766. "PH22", "PH23", "PH24", "PH25",
  767. "PH26";
  768. function = "emac";
  769. };
  770. /omit-if-no-ref/
  771. gmac_mii_pins: gmac-mii-pins {
  772. pins = "PA0", "PA1", "PA2",
  773. "PA3", "PA4", "PA5", "PA6",
  774. "PA7", "PA8", "PA9", "PA10",
  775. "PA11", "PA12", "PA13", "PA14",
  776. "PA15", "PA16";
  777. function = "gmac";
  778. };
  779. /omit-if-no-ref/
  780. gmac_rgmii_pins: gmac-rgmii-pins {
  781. pins = "PA0", "PA1", "PA2",
  782. "PA3", "PA4", "PA5", "PA6",
  783. "PA7", "PA8", "PA10",
  784. "PA11", "PA12", "PA13",
  785. "PA15", "PA16";
  786. function = "gmac";
  787. /*
  788. * data lines in RGMII mode use DDR mode
  789. * and need a higher signal drive strength
  790. */
  791. drive-strength = <40>;
  792. };
  793. /omit-if-no-ref/
  794. i2c0_pins: i2c0-pins {
  795. pins = "PB0", "PB1";
  796. function = "i2c0";
  797. };
  798. /omit-if-no-ref/
  799. i2c1_pins: i2c1-pins {
  800. pins = "PB18", "PB19";
  801. function = "i2c1";
  802. };
  803. /omit-if-no-ref/
  804. i2c2_pins: i2c2-pins {
  805. pins = "PB20", "PB21";
  806. function = "i2c2";
  807. };
  808. /omit-if-no-ref/
  809. i2c3_pins: i2c3-pins {
  810. pins = "PI0", "PI1";
  811. function = "i2c3";
  812. };
  813. /omit-if-no-ref/
  814. ir0_rx_pin: ir0-rx-pin {
  815. pins = "PB4";
  816. function = "ir0";
  817. };
  818. /omit-if-no-ref/
  819. ir0_tx_pin: ir0-tx-pin {
  820. pins = "PB3";
  821. function = "ir0";
  822. };
  823. /omit-if-no-ref/
  824. ir1_rx_pin: ir1-rx-pin {
  825. pins = "PB23";
  826. function = "ir1";
  827. };
  828. /omit-if-no-ref/
  829. ir1_tx_pin: ir1-tx-pin {
  830. pins = "PB22";
  831. function = "ir1";
  832. };
  833. /omit-if-no-ref/
  834. lcd_lvds0_pins: lcd-lvds0-pins {
  835. pins = "PD0", "PD1", "PD2", "PD3", "PD4",
  836. "PD5", "PD6", "PD7", "PD8", "PD9";
  837. function = "lvds0";
  838. };
  839. /omit-if-no-ref/
  840. lcd_lvds1_pins: lcd-lvds1-pins {
  841. pins = "PD10", "PD11", "PD12", "PD13", "PD14",
  842. "PD15", "PD16", "PD17", "PD18", "PD19";
  843. function = "lvds1";
  844. };
  845. /omit-if-no-ref/
  846. mmc0_pins: mmc0-pins {
  847. pins = "PF0", "PF1", "PF2",
  848. "PF3", "PF4", "PF5";
  849. function = "mmc0";
  850. drive-strength = <30>;
  851. bias-pull-up;
  852. };
  853. /omit-if-no-ref/
  854. mmc2_pins: mmc2-pins {
  855. pins = "PC6", "PC7", "PC8",
  856. "PC9", "PC10", "PC11";
  857. function = "mmc2";
  858. drive-strength = <30>;
  859. bias-pull-up;
  860. };
  861. /omit-if-no-ref/
  862. mmc3_pins: mmc3-pins {
  863. pins = "PI4", "PI5", "PI6",
  864. "PI7", "PI8", "PI9";
  865. function = "mmc3";
  866. drive-strength = <30>;
  867. bias-pull-up;
  868. };
  869. /omit-if-no-ref/
  870. ps2_0_pins: ps2-0-pins {
  871. pins = "PI20", "PI21";
  872. function = "ps2";
  873. };
  874. /omit-if-no-ref/
  875. ps2_1_ph_pins: ps2-1-ph-pins {
  876. pins = "PH12", "PH13";
  877. function = "ps2";
  878. };
  879. /omit-if-no-ref/
  880. pwm0_pin: pwm0-pin {
  881. pins = "PB2";
  882. function = "pwm";
  883. };
  884. /omit-if-no-ref/
  885. pwm1_pin: pwm1-pin {
  886. pins = "PI3";
  887. function = "pwm";
  888. };
  889. /omit-if-no-ref/
  890. spdif_tx_pin: spdif-tx-pin {
  891. pins = "PB13";
  892. function = "spdif";
  893. bias-pull-up;
  894. };
  895. /omit-if-no-ref/
  896. spi0_pi_pins: spi0-pi-pins {
  897. pins = "PI11", "PI12", "PI13";
  898. function = "spi0";
  899. };
  900. /omit-if-no-ref/
  901. spi0_cs0_pi_pin: spi0-cs0-pi-pin {
  902. pins = "PI10";
  903. function = "spi0";
  904. };
  905. /omit-if-no-ref/
  906. spi0_cs1_pi_pin: spi0-cs1-pi-pin {
  907. pins = "PI14";
  908. function = "spi0";
  909. };
  910. /omit-if-no-ref/
  911. spi1_pi_pins: spi1-pi-pins {
  912. pins = "PI17", "PI18", "PI19";
  913. function = "spi1";
  914. };
  915. /omit-if-no-ref/
  916. spi1_cs0_pi_pin: spi1-cs0-pi-pin {
  917. pins = "PI16";
  918. function = "spi1";
  919. };
  920. /omit-if-no-ref/
  921. spi2_pb_pins: spi2-pb-pins {
  922. pins = "PB15", "PB16", "PB17";
  923. function = "spi2";
  924. };
  925. /omit-if-no-ref/
  926. spi2_cs0_pb_pin: spi2-cs0-pb-pin {
  927. pins = "PB14";
  928. function = "spi2";
  929. };
  930. /omit-if-no-ref/
  931. spi2_pc_pins: spi2-pc-pins {
  932. pins = "PC20", "PC21", "PC22";
  933. function = "spi2";
  934. };
  935. /omit-if-no-ref/
  936. spi2_cs0_pc_pin: spi2-cs0-pc-pin {
  937. pins = "PC19";
  938. function = "spi2";
  939. };
  940. /omit-if-no-ref/
  941. uart0_pb_pins: uart0-pb-pins {
  942. pins = "PB22", "PB23";
  943. function = "uart0";
  944. };
  945. /omit-if-no-ref/
  946. uart0_pf_pins: uart0-pf-pins {
  947. pins = "PF2", "PF4";
  948. function = "uart0";
  949. };
  950. /omit-if-no-ref/
  951. uart1_pa_pins: uart1-pa-pins {
  952. pins = "PA10", "PA11";
  953. function = "uart1";
  954. };
  955. /omit-if-no-ref/
  956. uart1_cts_rts_pa_pins: uart1-cts-rts-pa-pins {
  957. pins = "PA12", "PA13";
  958. function = "uart1";
  959. };
  960. /omit-if-no-ref/
  961. uart2_pa_pins: uart2-pa-pins {
  962. pins = "PA2", "PA3";
  963. function = "uart2";
  964. };
  965. /omit-if-no-ref/
  966. uart2_cts_rts_pa_pins: uart2-cts-rts-pa-pins {
  967. pins = "PA0", "PA1";
  968. function = "uart2";
  969. };
  970. /omit-if-no-ref/
  971. uart2_pi_pins: uart2-pi-pins {
  972. pins = "PI18", "PI19";
  973. function = "uart2";
  974. };
  975. /omit-if-no-ref/
  976. uart2_cts_rts_pi_pins: uart2-cts-rts-pi-pins {
  977. pins = "PI16", "PI17";
  978. function = "uart2";
  979. };
  980. /omit-if-no-ref/
  981. uart3_pg_pins: uart3-pg-pins {
  982. pins = "PG6", "PG7";
  983. function = "uart3";
  984. };
  985. /omit-if-no-ref/
  986. uart3_cts_rts_pg_pins: uart3-cts-rts-pg-pins {
  987. pins = "PG8", "PG9";
  988. function = "uart3";
  989. };
  990. /omit-if-no-ref/
  991. uart3_ph_pins: uart3-ph-pins {
  992. pins = "PH0", "PH1";
  993. function = "uart3";
  994. };
  995. /omit-if-no-ref/
  996. uart3_cts_rts_ph_pins: uart3-cts-rts-ph-pins {
  997. pins = "PH2", "PH3";
  998. function = "uart3";
  999. };
  1000. /omit-if-no-ref/
  1001. uart4_pg_pins: uart4-pg-pins {
  1002. pins = "PG10", "PG11";
  1003. function = "uart4";
  1004. };
  1005. /omit-if-no-ref/
  1006. uart4_ph_pins: uart4-ph-pins {
  1007. pins = "PH4", "PH5";
  1008. function = "uart4";
  1009. };
  1010. /omit-if-no-ref/
  1011. uart5_ph_pins: uart5-ph-pins {
  1012. pins = "PH6", "PH7";
  1013. function = "uart5";
  1014. };
  1015. /omit-if-no-ref/
  1016. uart5_pi_pins: uart5-pi-pins {
  1017. pins = "PI10", "PI11";
  1018. function = "uart5";
  1019. };
  1020. /omit-if-no-ref/
  1021. uart6_pa_pins: uart6-pa-pins {
  1022. pins = "PA12", "PA13";
  1023. function = "uart6";
  1024. };
  1025. /omit-if-no-ref/
  1026. uart6_pi_pins: uart6-pi-pins {
  1027. pins = "PI12", "PI13";
  1028. function = "uart6";
  1029. };
  1030. /omit-if-no-ref/
  1031. uart7_pa_pins: uart7-pa-pins {
  1032. pins = "PA14", "PA15";
  1033. function = "uart7";
  1034. };
  1035. /omit-if-no-ref/
  1036. uart7_pi_pins: uart7-pi-pins {
  1037. pins = "PI20", "PI21";
  1038. function = "uart7";
  1039. };
  1040. };
  1041. timer@1c20c00 {
  1042. compatible = "allwinner,sun4i-a10-timer";
  1043. reg = <0x01c20c00 0x90>;
  1044. interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
  1045. <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
  1046. <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
  1047. <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
  1048. <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
  1049. <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
  1050. clocks = <&osc24M>;
  1051. };
  1052. wdt: watchdog@1c20c90 {
  1053. compatible = "allwinner,sun4i-a10-wdt";
  1054. reg = <0x01c20c90 0x10>;
  1055. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  1056. clocks = <&osc24M>;
  1057. };
  1058. rtc: rtc@1c20d00 {
  1059. compatible = "allwinner,sun7i-a20-rtc";
  1060. reg = <0x01c20d00 0x20>;
  1061. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  1062. };
  1063. pwm: pwm@1c20e00 {
  1064. compatible = "allwinner,sun7i-a20-pwm";
  1065. reg = <0x01c20e00 0xc>;
  1066. clocks = <&osc24M>;
  1067. #pwm-cells = <3>;
  1068. status = "disabled";
  1069. };
  1070. spdif: spdif@1c21000 {
  1071. #sound-dai-cells = <0>;
  1072. compatible = "allwinner,sun4i-a10-spdif";
  1073. reg = <0x01c21000 0x400>;
  1074. interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
  1075. clocks = <&ccu CLK_APB0_SPDIF>, <&ccu CLK_SPDIF>;
  1076. clock-names = "apb", "spdif";
  1077. dmas = <&dma SUN4I_DMA_NORMAL 2>,
  1078. <&dma SUN4I_DMA_NORMAL 2>;
  1079. dma-names = "rx", "tx";
  1080. status = "disabled";
  1081. };
  1082. ir0: ir@1c21800 {
  1083. compatible = "allwinner,sun4i-a10-ir";
  1084. clocks = <&ccu CLK_APB0_IR0>, <&ccu CLK_IR0>;
  1085. clock-names = "apb", "ir";
  1086. interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
  1087. reg = <0x01c21800 0x40>;
  1088. status = "disabled";
  1089. };
  1090. ir1: ir@1c21c00 {
  1091. compatible = "allwinner,sun4i-a10-ir";
  1092. clocks = <&ccu CLK_APB0_IR1>, <&ccu CLK_IR1>;
  1093. clock-names = "apb", "ir";
  1094. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  1095. reg = <0x01c21c00 0x40>;
  1096. status = "disabled";
  1097. };
  1098. i2s1: i2s@1c22000 {
  1099. #sound-dai-cells = <0>;
  1100. compatible = "allwinner,sun4i-a10-i2s";
  1101. reg = <0x01c22000 0x400>;
  1102. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  1103. clocks = <&ccu CLK_APB0_I2S1>, <&ccu CLK_I2S1>;
  1104. clock-names = "apb", "mod";
  1105. dmas = <&dma SUN4I_DMA_NORMAL 4>,
  1106. <&dma SUN4I_DMA_NORMAL 4>;
  1107. dma-names = "rx", "tx";
  1108. status = "disabled";
  1109. };
  1110. i2s0: i2s@1c22400 {
  1111. #sound-dai-cells = <0>;
  1112. compatible = "allwinner,sun4i-a10-i2s";
  1113. reg = <0x01c22400 0x400>;
  1114. interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
  1115. clocks = <&ccu CLK_APB0_I2S0>, <&ccu CLK_I2S0>;
  1116. clock-names = "apb", "mod";
  1117. dmas = <&dma SUN4I_DMA_NORMAL 3>,
  1118. <&dma SUN4I_DMA_NORMAL 3>;
  1119. dma-names = "rx", "tx";
  1120. status = "disabled";
  1121. };
  1122. lradc: lradc@1c22800 {
  1123. compatible = "allwinner,sun4i-a10-lradc-keys";
  1124. reg = <0x01c22800 0x100>;
  1125. interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
  1126. status = "disabled";
  1127. };
  1128. codec: codec@1c22c00 {
  1129. #sound-dai-cells = <0>;
  1130. compatible = "allwinner,sun7i-a20-codec";
  1131. reg = <0x01c22c00 0x40>;
  1132. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  1133. clocks = <&ccu CLK_APB0_CODEC>, <&ccu CLK_CODEC>;
  1134. clock-names = "apb", "codec";
  1135. dmas = <&dma SUN4I_DMA_NORMAL 19>,
  1136. <&dma SUN4I_DMA_NORMAL 19>;
  1137. dma-names = "rx", "tx";
  1138. status = "disabled";
  1139. };
  1140. sid: eeprom@1c23800 {
  1141. compatible = "allwinner,sun7i-a20-sid";
  1142. reg = <0x01c23800 0x200>;
  1143. };
  1144. i2s2: i2s@1c24400 {
  1145. #sound-dai-cells = <0>;
  1146. compatible = "allwinner,sun4i-a10-i2s";
  1147. reg = <0x01c24400 0x400>;
  1148. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  1149. clocks = <&ccu CLK_APB0_I2S2>, <&ccu CLK_I2S2>;
  1150. clock-names = "apb", "mod";
  1151. dmas = <&dma SUN4I_DMA_NORMAL 6>,
  1152. <&dma SUN4I_DMA_NORMAL 6>;
  1153. dma-names = "rx", "tx";
  1154. status = "disabled";
  1155. };
  1156. rtp: rtp@1c25000 {
  1157. compatible = "allwinner,sun5i-a13-ts";
  1158. reg = <0x01c25000 0x100>;
  1159. interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
  1160. #thermal-sensor-cells = <0>;
  1161. };
  1162. uart0: serial@1c28000 {
  1163. compatible = "snps,dw-apb-uart";
  1164. reg = <0x01c28000 0x400>;
  1165. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  1166. reg-shift = <2>;
  1167. reg-io-width = <4>;
  1168. clocks = <&ccu CLK_APB1_UART0>;
  1169. status = "disabled";
  1170. };
  1171. uart1: serial@1c28400 {
  1172. compatible = "snps,dw-apb-uart";
  1173. reg = <0x01c28400 0x400>;
  1174. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  1175. reg-shift = <2>;
  1176. reg-io-width = <4>;
  1177. clocks = <&ccu CLK_APB1_UART1>;
  1178. status = "disabled";
  1179. };
  1180. uart2: serial@1c28800 {
  1181. compatible = "snps,dw-apb-uart";
  1182. reg = <0x01c28800 0x400>;
  1183. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  1184. reg-shift = <2>;
  1185. reg-io-width = <4>;
  1186. clocks = <&ccu CLK_APB1_UART2>;
  1187. status = "disabled";
  1188. };
  1189. uart3: serial@1c28c00 {
  1190. compatible = "snps,dw-apb-uart";
  1191. reg = <0x01c28c00 0x400>;
  1192. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  1193. reg-shift = <2>;
  1194. reg-io-width = <4>;
  1195. clocks = <&ccu CLK_APB1_UART3>;
  1196. status = "disabled";
  1197. };
  1198. uart4: serial@1c29000 {
  1199. compatible = "snps,dw-apb-uart";
  1200. reg = <0x01c29000 0x400>;
  1201. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  1202. reg-shift = <2>;
  1203. reg-io-width = <4>;
  1204. clocks = <&ccu CLK_APB1_UART4>;
  1205. status = "disabled";
  1206. };
  1207. uart5: serial@1c29400 {
  1208. compatible = "snps,dw-apb-uart";
  1209. reg = <0x01c29400 0x400>;
  1210. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
  1211. reg-shift = <2>;
  1212. reg-io-width = <4>;
  1213. clocks = <&ccu CLK_APB1_UART5>;
  1214. status = "disabled";
  1215. };
  1216. uart6: serial@1c29800 {
  1217. compatible = "snps,dw-apb-uart";
  1218. reg = <0x01c29800 0x400>;
  1219. interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  1220. reg-shift = <2>;
  1221. reg-io-width = <4>;
  1222. clocks = <&ccu CLK_APB1_UART6>;
  1223. status = "disabled";
  1224. };
  1225. uart7: serial@1c29c00 {
  1226. compatible = "snps,dw-apb-uart";
  1227. reg = <0x01c29c00 0x400>;
  1228. interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
  1229. reg-shift = <2>;
  1230. reg-io-width = <4>;
  1231. clocks = <&ccu CLK_APB1_UART7>;
  1232. status = "disabled";
  1233. };
  1234. ps20: ps2@1c2a000 {
  1235. compatible = "allwinner,sun4i-a10-ps2";
  1236. reg = <0x01c2a000 0x400>;
  1237. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  1238. clocks = <&ccu CLK_APB1_PS20>;
  1239. status = "disabled";
  1240. };
  1241. ps21: ps2@1c2a400 {
  1242. compatible = "allwinner,sun4i-a10-ps2";
  1243. reg = <0x01c2a400 0x400>;
  1244. interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
  1245. clocks = <&ccu CLK_APB1_PS21>;
  1246. status = "disabled";
  1247. };
  1248. i2c0: i2c@1c2ac00 {
  1249. compatible = "allwinner,sun7i-a20-i2c",
  1250. "allwinner,sun4i-a10-i2c";
  1251. reg = <0x01c2ac00 0x400>;
  1252. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  1253. clocks = <&ccu CLK_APB1_I2C0>;
  1254. pinctrl-names = "default";
  1255. pinctrl-0 = <&i2c0_pins>;
  1256. status = "disabled";
  1257. #address-cells = <1>;
  1258. #size-cells = <0>;
  1259. };
  1260. i2c1: i2c@1c2b000 {
  1261. compatible = "allwinner,sun7i-a20-i2c",
  1262. "allwinner,sun4i-a10-i2c";
  1263. reg = <0x01c2b000 0x400>;
  1264. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  1265. clocks = <&ccu CLK_APB1_I2C1>;
  1266. pinctrl-names = "default";
  1267. pinctrl-0 = <&i2c1_pins>;
  1268. status = "disabled";
  1269. #address-cells = <1>;
  1270. #size-cells = <0>;
  1271. };
  1272. i2c2: i2c@1c2b400 {
  1273. compatible = "allwinner,sun7i-a20-i2c",
  1274. "allwinner,sun4i-a10-i2c";
  1275. reg = <0x01c2b400 0x400>;
  1276. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
  1277. clocks = <&ccu CLK_APB1_I2C2>;
  1278. pinctrl-names = "default";
  1279. pinctrl-0 = <&i2c2_pins>;
  1280. status = "disabled";
  1281. #address-cells = <1>;
  1282. #size-cells = <0>;
  1283. };
  1284. i2c3: i2c@1c2b800 {
  1285. compatible = "allwinner,sun7i-a20-i2c",
  1286. "allwinner,sun4i-a10-i2c";
  1287. reg = <0x01c2b800 0x400>;
  1288. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  1289. clocks = <&ccu CLK_APB1_I2C3>;
  1290. pinctrl-names = "default";
  1291. pinctrl-0 = <&i2c3_pins>;
  1292. status = "disabled";
  1293. #address-cells = <1>;
  1294. #size-cells = <0>;
  1295. };
  1296. can0: can@1c2bc00 {
  1297. compatible = "allwinner,sun7i-a20-can",
  1298. "allwinner,sun4i-a10-can";
  1299. reg = <0x01c2bc00 0x400>;
  1300. interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
  1301. clocks = <&ccu CLK_APB1_CAN>;
  1302. status = "disabled";
  1303. };
  1304. i2c4: i2c@1c2c000 {
  1305. compatible = "allwinner,sun7i-a20-i2c",
  1306. "allwinner,sun4i-a10-i2c";
  1307. reg = <0x01c2c000 0x400>;
  1308. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  1309. clocks = <&ccu CLK_APB1_I2C4>;
  1310. status = "disabled";
  1311. #address-cells = <1>;
  1312. #size-cells = <0>;
  1313. };
  1314. mali: gpu@1c40000 {
  1315. compatible = "allwinner,sun7i-a20-mali", "arm,mali-400";
  1316. reg = <0x01c40000 0x10000>;
  1317. interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
  1318. <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
  1319. <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
  1320. <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
  1321. <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
  1322. <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
  1323. <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  1324. interrupt-names = "gp",
  1325. "gpmmu",
  1326. "pp0",
  1327. "ppmmu0",
  1328. "pp1",
  1329. "ppmmu1",
  1330. "pmu";
  1331. clocks = <&ccu CLK_AHB_GPU>, <&ccu CLK_GPU>;
  1332. clock-names = "bus", "core";
  1333. resets = <&ccu RST_GPU>;
  1334. assigned-clocks = <&ccu CLK_GPU>;
  1335. assigned-clock-rates = <384000000>;
  1336. };
  1337. gmac: ethernet@1c50000 {
  1338. compatible = "allwinner,sun7i-a20-gmac";
  1339. reg = <0x01c50000 0x10000>;
  1340. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  1341. interrupt-names = "macirq";
  1342. clocks = <&ccu CLK_AHB_GMAC>, <&gmac_tx_clk>;
  1343. clock-names = "stmmaceth", "allwinner_gmac_tx";
  1344. snps,pbl = <2>;
  1345. snps,fixed-burst;
  1346. snps,force_sf_dma_mode;
  1347. status = "disabled";
  1348. gmac_mdio: mdio {
  1349. compatible = "snps,dwmac-mdio";
  1350. #address-cells = <1>;
  1351. #size-cells = <0>;
  1352. };
  1353. };
  1354. hstimer@1c60000 {
  1355. compatible = "allwinner,sun7i-a20-hstimer";
  1356. reg = <0x01c60000 0x1000>;
  1357. interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
  1358. <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
  1359. <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
  1360. <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  1361. clocks = <&ccu CLK_AHB_HSTIMER>;
  1362. };
  1363. gic: interrupt-controller@1c81000 {
  1364. compatible = "arm,gic-400";
  1365. reg = <0x01c81000 0x1000>,
  1366. <0x01c82000 0x2000>,
  1367. <0x01c84000 0x2000>,
  1368. <0x01c86000 0x2000>;
  1369. interrupt-controller;
  1370. #interrupt-cells = <3>;
  1371. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  1372. };
  1373. fe0: display-frontend@1e00000 {
  1374. compatible = "allwinner,sun7i-a20-display-frontend";
  1375. reg = <0x01e00000 0x20000>;
  1376. interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  1377. clocks = <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_FE0>,
  1378. <&ccu CLK_DRAM_DE_FE0>;
  1379. clock-names = "ahb", "mod",
  1380. "ram";
  1381. resets = <&ccu RST_DE_FE0>;
  1382. ports {
  1383. #address-cells = <1>;
  1384. #size-cells = <0>;
  1385. fe0_out: port@1 {
  1386. #address-cells = <1>;
  1387. #size-cells = <0>;
  1388. reg = <1>;
  1389. fe0_out_be0: endpoint@0 {
  1390. reg = <0>;
  1391. remote-endpoint = <&be0_in_fe0>;
  1392. };
  1393. fe0_out_be1: endpoint@1 {
  1394. reg = <1>;
  1395. remote-endpoint = <&be1_in_fe0>;
  1396. };
  1397. };
  1398. };
  1399. };
  1400. fe1: display-frontend@1e20000 {
  1401. compatible = "allwinner,sun7i-a20-display-frontend";
  1402. reg = <0x01e20000 0x20000>;
  1403. interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
  1404. clocks = <&ccu CLK_AHB_DE_FE1>, <&ccu CLK_DE_FE1>,
  1405. <&ccu CLK_DRAM_DE_FE1>;
  1406. clock-names = "ahb", "mod",
  1407. "ram";
  1408. resets = <&ccu RST_DE_FE1>;
  1409. ports {
  1410. #address-cells = <1>;
  1411. #size-cells = <0>;
  1412. fe1_out: port@1 {
  1413. #address-cells = <1>;
  1414. #size-cells = <0>;
  1415. reg = <1>;
  1416. fe1_out_be0: endpoint@0 {
  1417. reg = <0>;
  1418. remote-endpoint = <&be0_in_fe1>;
  1419. };
  1420. fe1_out_be1: endpoint@1 {
  1421. reg = <1>;
  1422. remote-endpoint = <&be1_in_fe1>;
  1423. };
  1424. };
  1425. };
  1426. };
  1427. be1: display-backend@1e40000 {
  1428. compatible = "allwinner,sun7i-a20-display-backend";
  1429. reg = <0x01e40000 0x10000>;
  1430. interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
  1431. clocks = <&ccu CLK_AHB_DE_BE1>, <&ccu CLK_DE_BE1>,
  1432. <&ccu CLK_DRAM_DE_BE1>;
  1433. clock-names = "ahb", "mod",
  1434. "ram";
  1435. resets = <&ccu RST_DE_BE1>;
  1436. ports {
  1437. #address-cells = <1>;
  1438. #size-cells = <0>;
  1439. be1_in: port@0 {
  1440. #address-cells = <1>;
  1441. #size-cells = <0>;
  1442. reg = <0>;
  1443. be1_in_fe0: endpoint@0 {
  1444. reg = <0>;
  1445. remote-endpoint = <&fe0_out_be1>;
  1446. };
  1447. be1_in_fe1: endpoint@1 {
  1448. reg = <1>;
  1449. remote-endpoint = <&fe1_out_be1>;
  1450. };
  1451. };
  1452. be1_out: port@1 {
  1453. #address-cells = <1>;
  1454. #size-cells = <0>;
  1455. reg = <1>;
  1456. be1_out_tcon0: endpoint@0 {
  1457. reg = <0>;
  1458. remote-endpoint = <&tcon0_in_be1>;
  1459. };
  1460. be1_out_tcon1: endpoint@1 {
  1461. reg = <1>;
  1462. remote-endpoint = <&tcon1_in_be1>;
  1463. };
  1464. };
  1465. };
  1466. };
  1467. be0: display-backend@1e60000 {
  1468. compatible = "allwinner,sun7i-a20-display-backend";
  1469. reg = <0x01e60000 0x10000>;
  1470. interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  1471. clocks = <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
  1472. <&ccu CLK_DRAM_DE_BE0>;
  1473. clock-names = "ahb", "mod",
  1474. "ram";
  1475. resets = <&ccu RST_DE_BE0>;
  1476. ports {
  1477. #address-cells = <1>;
  1478. #size-cells = <0>;
  1479. be0_in: port@0 {
  1480. #address-cells = <1>;
  1481. #size-cells = <0>;
  1482. reg = <0>;
  1483. be0_in_fe0: endpoint@0 {
  1484. reg = <0>;
  1485. remote-endpoint = <&fe0_out_be0>;
  1486. };
  1487. be0_in_fe1: endpoint@1 {
  1488. reg = <1>;
  1489. remote-endpoint = <&fe1_out_be0>;
  1490. };
  1491. };
  1492. be0_out: port@1 {
  1493. #address-cells = <1>;
  1494. #size-cells = <0>;
  1495. reg = <1>;
  1496. be0_out_tcon0: endpoint@0 {
  1497. reg = <0>;
  1498. remote-endpoint = <&tcon0_in_be0>;
  1499. };
  1500. be0_out_tcon1: endpoint@1 {
  1501. reg = <1>;
  1502. remote-endpoint = <&tcon1_in_be0>;
  1503. };
  1504. };
  1505. };
  1506. };
  1507. };
  1508. };