sun6i-a31.dtsi 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422
  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/clock/sun6i-a31-ccu.h>
  47. #include <dt-bindings/clock/sun6i-rtc.h>
  48. #include <dt-bindings/reset/sun6i-a31-ccu.h>
  49. / {
  50. interrupt-parent = <&gic>;
  51. #address-cells = <1>;
  52. #size-cells = <1>;
  53. aliases {
  54. ethernet0 = &gmac;
  55. };
  56. chosen {
  57. #address-cells = <1>;
  58. #size-cells = <1>;
  59. ranges;
  60. simplefb_hdmi: framebuffer-lcd0-hdmi {
  61. compatible = "allwinner,simple-framebuffer",
  62. "simple-framebuffer";
  63. allwinner,pipeline = "de_be0-lcd0-hdmi";
  64. clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_AHB1_LCD0>,
  65. <&ccu CLK_AHB1_HDMI>, <&ccu CLK_DRAM_BE0>,
  66. <&ccu CLK_IEP_DRC0>, <&ccu CLK_BE0>,
  67. <&ccu CLK_LCD0_CH1>, <&ccu CLK_HDMI>;
  68. status = "disabled";
  69. };
  70. simplefb_lcd: framebuffer-lcd0 {
  71. compatible = "allwinner,simple-framebuffer",
  72. "simple-framebuffer";
  73. allwinner,pipeline = "de_be0-lcd0";
  74. clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_AHB1_LCD0>,
  75. <&ccu CLK_DRAM_BE0>, <&ccu CLK_IEP_DRC0>,
  76. <&ccu CLK_BE0>, <&ccu CLK_LCD0_CH0>;
  77. status = "disabled";
  78. };
  79. };
  80. timer {
  81. compatible = "arm,armv7-timer";
  82. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  83. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  84. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  85. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  86. clock-frequency = <24000000>;
  87. arm,cpu-registers-not-fw-configured;
  88. };
  89. cpus {
  90. enable-method = "allwinner,sun6i-a31";
  91. #address-cells = <1>;
  92. #size-cells = <0>;
  93. cpu0: cpu@0 {
  94. compatible = "arm,cortex-a7";
  95. device_type = "cpu";
  96. reg = <0>;
  97. clocks = <&ccu CLK_CPU>;
  98. clock-latency = <244144>; /* 8 32k periods */
  99. operating-points =
  100. /* kHz uV */
  101. <1008000 1200000>,
  102. <864000 1200000>,
  103. <720000 1100000>,
  104. <480000 1000000>;
  105. #cooling-cells = <2>;
  106. };
  107. cpu1: cpu@1 {
  108. compatible = "arm,cortex-a7";
  109. device_type = "cpu";
  110. reg = <1>;
  111. clocks = <&ccu CLK_CPU>;
  112. clock-latency = <244144>; /* 8 32k periods */
  113. operating-points =
  114. /* kHz uV */
  115. <1008000 1200000>,
  116. <864000 1200000>,
  117. <720000 1100000>,
  118. <480000 1000000>;
  119. #cooling-cells = <2>;
  120. };
  121. cpu2: cpu@2 {
  122. compatible = "arm,cortex-a7";
  123. device_type = "cpu";
  124. reg = <2>;
  125. clocks = <&ccu CLK_CPU>;
  126. clock-latency = <244144>; /* 8 32k periods */
  127. operating-points =
  128. /* kHz uV */
  129. <1008000 1200000>,
  130. <864000 1200000>,
  131. <720000 1100000>,
  132. <480000 1000000>;
  133. #cooling-cells = <2>;
  134. };
  135. cpu3: cpu@3 {
  136. compatible = "arm,cortex-a7";
  137. device_type = "cpu";
  138. reg = <3>;
  139. clocks = <&ccu CLK_CPU>;
  140. clock-latency = <244144>; /* 8 32k periods */
  141. operating-points =
  142. /* kHz uV */
  143. <1008000 1200000>,
  144. <864000 1200000>,
  145. <720000 1100000>,
  146. <480000 1000000>;
  147. #cooling-cells = <2>;
  148. };
  149. };
  150. thermal-zones {
  151. cpu-thermal {
  152. /* milliseconds */
  153. polling-delay-passive = <250>;
  154. polling-delay = <1000>;
  155. thermal-sensors = <&rtp>;
  156. cooling-maps {
  157. map0 {
  158. trip = <&cpu_alert0>;
  159. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  160. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  161. <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  162. <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  163. };
  164. };
  165. trips {
  166. cpu_alert0: cpu_alert0 {
  167. /* milliCelsius */
  168. temperature = <70000>;
  169. hysteresis = <2000>;
  170. type = "passive";
  171. };
  172. cpu_crit: cpu_crit {
  173. /* milliCelsius */
  174. temperature = <100000>;
  175. hysteresis = <2000>;
  176. type = "critical";
  177. };
  178. };
  179. };
  180. };
  181. pmu {
  182. compatible = "arm,cortex-a7-pmu";
  183. interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
  184. <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
  185. <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
  186. <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
  187. };
  188. clocks {
  189. #address-cells = <1>;
  190. #size-cells = <1>;
  191. ranges;
  192. osc24M: clk-24M {
  193. #clock-cells = <0>;
  194. compatible = "fixed-clock";
  195. clock-frequency = <24000000>;
  196. clock-accuracy = <50000>;
  197. clock-output-names = "osc24M";
  198. };
  199. osc32k: clk-32k {
  200. #clock-cells = <0>;
  201. compatible = "fixed-clock";
  202. clock-frequency = <32768>;
  203. clock-accuracy = <50000>;
  204. clock-output-names = "ext_osc32k";
  205. };
  206. /*
  207. * The following two are dummy clocks, placeholders
  208. * used in the gmac_tx clock. The gmac driver will
  209. * choose one parent depending on the PHY interface
  210. * mode, using clk_set_rate auto-reparenting.
  211. *
  212. * The actual TX clock rate is not controlled by the
  213. * gmac_tx clock.
  214. */
  215. mii_phy_tx_clk: clk-mii-phy-tx {
  216. #clock-cells = <0>;
  217. compatible = "fixed-clock";
  218. clock-frequency = <25000000>;
  219. clock-output-names = "mii_phy_tx";
  220. };
  221. gmac_int_tx_clk: clk-gmac-int-tx {
  222. #clock-cells = <0>;
  223. compatible = "fixed-clock";
  224. clock-frequency = <125000000>;
  225. clock-output-names = "gmac_int_tx";
  226. };
  227. gmac_tx_clk: clk@1c200d0 {
  228. #clock-cells = <0>;
  229. compatible = "allwinner,sun7i-a20-gmac-clk";
  230. reg = <0x01c200d0 0x4>;
  231. clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
  232. clock-output-names = "gmac_tx";
  233. };
  234. };
  235. de: display-engine {
  236. compatible = "allwinner,sun6i-a31-display-engine";
  237. allwinner,pipelines = <&fe0>, <&fe1>;
  238. status = "disabled";
  239. };
  240. soc {
  241. compatible = "simple-bus";
  242. #address-cells = <1>;
  243. #size-cells = <1>;
  244. ranges;
  245. dma: dma-controller@1c02000 {
  246. compatible = "allwinner,sun6i-a31-dma";
  247. reg = <0x01c02000 0x1000>;
  248. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  249. clocks = <&ccu CLK_AHB1_DMA>;
  250. resets = <&ccu RST_AHB1_DMA>;
  251. #dma-cells = <1>;
  252. };
  253. tcon0: lcd-controller@1c0c000 {
  254. compatible = "allwinner,sun6i-a31-tcon";
  255. reg = <0x01c0c000 0x1000>;
  256. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  257. dmas = <&dma 11>;
  258. resets = <&ccu RST_AHB1_LCD0>,
  259. <&ccu RST_AHB1_LVDS>;
  260. reset-names = "lcd",
  261. "lvds";
  262. clocks = <&ccu CLK_AHB1_LCD0>,
  263. <&ccu CLK_LCD0_CH0>,
  264. <&ccu CLK_LCD0_CH1>,
  265. <&ccu 15>;
  266. clock-names = "ahb",
  267. "tcon-ch0",
  268. "tcon-ch1",
  269. "lvds-alt";
  270. clock-output-names = "tcon0-pixel-clock";
  271. #clock-cells = <0>;
  272. ports {
  273. #address-cells = <1>;
  274. #size-cells = <0>;
  275. tcon0_in: port@0 {
  276. #address-cells = <1>;
  277. #size-cells = <0>;
  278. reg = <0>;
  279. tcon0_in_drc0: endpoint@0 {
  280. reg = <0>;
  281. remote-endpoint = <&drc0_out_tcon0>;
  282. };
  283. tcon0_in_drc1: endpoint@1 {
  284. reg = <1>;
  285. remote-endpoint = <&drc1_out_tcon0>;
  286. };
  287. };
  288. tcon0_out: port@1 {
  289. #address-cells = <1>;
  290. #size-cells = <0>;
  291. reg = <1>;
  292. tcon0_out_hdmi: endpoint@1 {
  293. reg = <1>;
  294. remote-endpoint = <&hdmi_in_tcon0>;
  295. allwinner,tcon-channel = <1>;
  296. };
  297. };
  298. };
  299. };
  300. tcon1: lcd-controller@1c0d000 {
  301. compatible = "allwinner,sun6i-a31-tcon";
  302. reg = <0x01c0d000 0x1000>;
  303. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  304. dmas = <&dma 12>;
  305. resets = <&ccu RST_AHB1_LCD1>,
  306. <&ccu RST_AHB1_LVDS>;
  307. reset-names = "lcd", "lvds";
  308. clocks = <&ccu CLK_AHB1_LCD1>,
  309. <&ccu CLK_LCD1_CH0>,
  310. <&ccu CLK_LCD1_CH1>,
  311. <&ccu 15>;
  312. clock-names = "ahb",
  313. "tcon-ch0",
  314. "tcon-ch1",
  315. "lvds-alt";
  316. clock-output-names = "tcon1-pixel-clock";
  317. #clock-cells = <0>;
  318. ports {
  319. #address-cells = <1>;
  320. #size-cells = <0>;
  321. tcon1_in: port@0 {
  322. #address-cells = <1>;
  323. #size-cells = <0>;
  324. reg = <0>;
  325. tcon1_in_drc0: endpoint@0 {
  326. reg = <0>;
  327. remote-endpoint = <&drc0_out_tcon1>;
  328. };
  329. tcon1_in_drc1: endpoint@1 {
  330. reg = <1>;
  331. remote-endpoint = <&drc1_out_tcon1>;
  332. };
  333. };
  334. tcon1_out: port@1 {
  335. #address-cells = <1>;
  336. #size-cells = <0>;
  337. reg = <1>;
  338. tcon1_out_hdmi: endpoint@1 {
  339. reg = <1>;
  340. remote-endpoint = <&hdmi_in_tcon1>;
  341. allwinner,tcon-channel = <1>;
  342. };
  343. };
  344. };
  345. };
  346. mmc0: mmc@1c0f000 {
  347. compatible = "allwinner,sun7i-a20-mmc";
  348. reg = <0x01c0f000 0x1000>;
  349. clocks = <&ccu CLK_AHB1_MMC0>,
  350. <&ccu CLK_MMC0>,
  351. <&ccu CLK_MMC0_OUTPUT>,
  352. <&ccu CLK_MMC0_SAMPLE>;
  353. clock-names = "ahb",
  354. "mmc",
  355. "output",
  356. "sample";
  357. resets = <&ccu RST_AHB1_MMC0>;
  358. reset-names = "ahb";
  359. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  360. pinctrl-names = "default";
  361. pinctrl-0 = <&mmc0_pins>;
  362. status = "disabled";
  363. #address-cells = <1>;
  364. #size-cells = <0>;
  365. };
  366. mmc1: mmc@1c10000 {
  367. compatible = "allwinner,sun7i-a20-mmc";
  368. reg = <0x01c10000 0x1000>;
  369. clocks = <&ccu CLK_AHB1_MMC1>,
  370. <&ccu CLK_MMC1>,
  371. <&ccu CLK_MMC1_OUTPUT>,
  372. <&ccu CLK_MMC1_SAMPLE>;
  373. clock-names = "ahb",
  374. "mmc",
  375. "output",
  376. "sample";
  377. resets = <&ccu RST_AHB1_MMC1>;
  378. reset-names = "ahb";
  379. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  380. pinctrl-names = "default";
  381. pinctrl-0 = <&mmc1_pins>;
  382. status = "disabled";
  383. #address-cells = <1>;
  384. #size-cells = <0>;
  385. };
  386. mmc2: mmc@1c11000 {
  387. compatible = "allwinner,sun7i-a20-mmc";
  388. reg = <0x01c11000 0x1000>;
  389. clocks = <&ccu CLK_AHB1_MMC2>,
  390. <&ccu CLK_MMC2>,
  391. <&ccu CLK_MMC2_OUTPUT>,
  392. <&ccu CLK_MMC2_SAMPLE>;
  393. clock-names = "ahb",
  394. "mmc",
  395. "output",
  396. "sample";
  397. resets = <&ccu RST_AHB1_MMC2>;
  398. reset-names = "ahb";
  399. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  400. status = "disabled";
  401. #address-cells = <1>;
  402. #size-cells = <0>;
  403. };
  404. mmc3: mmc@1c12000 {
  405. compatible = "allwinner,sun7i-a20-mmc";
  406. reg = <0x01c12000 0x1000>;
  407. clocks = <&ccu CLK_AHB1_MMC3>,
  408. <&ccu CLK_MMC3>,
  409. <&ccu CLK_MMC3_OUTPUT>,
  410. <&ccu CLK_MMC3_SAMPLE>;
  411. clock-names = "ahb",
  412. "mmc",
  413. "output",
  414. "sample";
  415. resets = <&ccu RST_AHB1_MMC3>;
  416. reset-names = "ahb";
  417. interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
  418. status = "disabled";
  419. #address-cells = <1>;
  420. #size-cells = <0>;
  421. };
  422. hdmi: hdmi@1c16000 {
  423. compatible = "allwinner,sun6i-a31-hdmi";
  424. reg = <0x01c16000 0x1000>;
  425. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  426. clocks = <&ccu CLK_AHB1_HDMI>, <&ccu CLK_HDMI>,
  427. <&ccu CLK_HDMI_DDC>,
  428. <&ccu CLK_PLL_VIDEO0_2X>,
  429. <&ccu CLK_PLL_VIDEO1_2X>;
  430. clock-names = "ahb", "mod", "ddc", "pll-0", "pll-1";
  431. resets = <&ccu RST_AHB1_HDMI>;
  432. dma-names = "ddc-tx", "ddc-rx", "audio-tx";
  433. dmas = <&dma 13>, <&dma 13>, <&dma 14>;
  434. status = "disabled";
  435. ports {
  436. #address-cells = <1>;
  437. #size-cells = <0>;
  438. hdmi_in: port@0 {
  439. #address-cells = <1>;
  440. #size-cells = <0>;
  441. reg = <0>;
  442. hdmi_in_tcon0: endpoint@0 {
  443. reg = <0>;
  444. remote-endpoint = <&tcon0_out_hdmi>;
  445. };
  446. hdmi_in_tcon1: endpoint@1 {
  447. reg = <1>;
  448. remote-endpoint = <&tcon1_out_hdmi>;
  449. };
  450. };
  451. hdmi_out: port@1 {
  452. reg = <1>;
  453. };
  454. };
  455. };
  456. usb_otg: usb@1c19000 {
  457. compatible = "allwinner,sun6i-a31-musb";
  458. reg = <0x01c19000 0x0400>;
  459. clocks = <&ccu CLK_AHB1_OTG>;
  460. resets = <&ccu RST_AHB1_OTG>;
  461. interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  462. interrupt-names = "mc";
  463. phys = <&usbphy 0>;
  464. phy-names = "usb";
  465. extcon = <&usbphy 0>;
  466. dr_mode = "otg";
  467. status = "disabled";
  468. };
  469. usbphy: phy@1c19400 {
  470. compatible = "allwinner,sun6i-a31-usb-phy";
  471. reg = <0x01c19400 0x10>,
  472. <0x01c1a800 0x4>,
  473. <0x01c1b800 0x4>;
  474. reg-names = "phy_ctrl",
  475. "pmu1",
  476. "pmu2";
  477. clocks = <&ccu CLK_USB_PHY0>,
  478. <&ccu CLK_USB_PHY1>,
  479. <&ccu CLK_USB_PHY2>;
  480. clock-names = "usb0_phy",
  481. "usb1_phy",
  482. "usb2_phy";
  483. resets = <&ccu RST_USB_PHY0>,
  484. <&ccu RST_USB_PHY1>,
  485. <&ccu RST_USB_PHY2>;
  486. reset-names = "usb0_reset",
  487. "usb1_reset",
  488. "usb2_reset";
  489. status = "disabled";
  490. #phy-cells = <1>;
  491. };
  492. ehci0: usb@1c1a000 {
  493. compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
  494. reg = <0x01c1a000 0x100>;
  495. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  496. clocks = <&ccu CLK_AHB1_EHCI0>;
  497. resets = <&ccu RST_AHB1_EHCI0>;
  498. phys = <&usbphy 1>;
  499. phy-names = "usb";
  500. status = "disabled";
  501. };
  502. ohci0: usb@1c1a400 {
  503. compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
  504. reg = <0x01c1a400 0x100>;
  505. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  506. clocks = <&ccu CLK_AHB1_OHCI0>, <&ccu CLK_USB_OHCI0>;
  507. resets = <&ccu RST_AHB1_OHCI0>;
  508. phys = <&usbphy 1>;
  509. phy-names = "usb";
  510. status = "disabled";
  511. };
  512. ehci1: usb@1c1b000 {
  513. compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
  514. reg = <0x01c1b000 0x100>;
  515. interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  516. clocks = <&ccu CLK_AHB1_EHCI1>;
  517. resets = <&ccu RST_AHB1_EHCI1>;
  518. phys = <&usbphy 2>;
  519. phy-names = "usb";
  520. status = "disabled";
  521. };
  522. ohci1: usb@1c1b400 {
  523. compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
  524. reg = <0x01c1b400 0x100>;
  525. interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
  526. clocks = <&ccu CLK_AHB1_OHCI1>, <&ccu CLK_USB_OHCI1>;
  527. resets = <&ccu RST_AHB1_OHCI1>;
  528. phys = <&usbphy 2>;
  529. phy-names = "usb";
  530. status = "disabled";
  531. };
  532. ohci2: usb@1c1c400 {
  533. compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
  534. reg = <0x01c1c400 0x100>;
  535. interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
  536. clocks = <&ccu CLK_AHB1_OHCI2>, <&ccu CLK_USB_OHCI2>;
  537. resets = <&ccu RST_AHB1_OHCI2>;
  538. status = "disabled";
  539. };
  540. ccu: clock@1c20000 {
  541. compatible = "allwinner,sun6i-a31-ccu";
  542. reg = <0x01c20000 0x400>;
  543. clocks = <&osc24M>, <&rtc CLK_OSC32K>;
  544. clock-names = "hosc", "losc";
  545. #clock-cells = <1>;
  546. #reset-cells = <1>;
  547. };
  548. pio: pinctrl@1c20800 {
  549. compatible = "allwinner,sun6i-a31-pinctrl";
  550. reg = <0x01c20800 0x400>;
  551. interrupt-parent = <&r_intc>;
  552. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
  553. <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
  554. <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
  555. <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  556. clocks = <&ccu CLK_APB1_PIO>, <&osc24M>,
  557. <&rtc CLK_OSC32K>;
  558. clock-names = "apb", "hosc", "losc";
  559. gpio-controller;
  560. interrupt-controller;
  561. #interrupt-cells = <3>;
  562. #gpio-cells = <3>;
  563. gmac_gmii_pins: gmac-gmii-pins {
  564. pins = "PA0", "PA1", "PA2", "PA3",
  565. "PA4", "PA5", "PA6", "PA7",
  566. "PA8", "PA9", "PA10", "PA11",
  567. "PA12", "PA13", "PA14", "PA15",
  568. "PA16", "PA17", "PA18", "PA19",
  569. "PA20", "PA21", "PA22", "PA23",
  570. "PA24", "PA25", "PA26", "PA27";
  571. function = "gmac";
  572. /*
  573. * data lines in GMII mode run at 125MHz and
  574. * might need a higher signal drive strength
  575. */
  576. drive-strength = <30>;
  577. };
  578. gmac_mii_pins: gmac-mii-pins {
  579. pins = "PA0", "PA1", "PA2", "PA3",
  580. "PA8", "PA9", "PA11",
  581. "PA12", "PA13", "PA14", "PA19",
  582. "PA20", "PA21", "PA22", "PA23",
  583. "PA24", "PA26", "PA27";
  584. function = "gmac";
  585. };
  586. gmac_rgmii_pins: gmac-rgmii-pins {
  587. pins = "PA0", "PA1", "PA2", "PA3",
  588. "PA9", "PA10", "PA11",
  589. "PA12", "PA13", "PA14", "PA19",
  590. "PA20", "PA25", "PA26", "PA27";
  591. function = "gmac";
  592. /*
  593. * data lines in RGMII mode use DDR mode
  594. * and need a higher signal drive strength
  595. */
  596. drive-strength = <40>;
  597. };
  598. i2c0_pins: i2c0-pins {
  599. pins = "PH14", "PH15";
  600. function = "i2c0";
  601. };
  602. i2c1_pins: i2c1-pins {
  603. pins = "PH16", "PH17";
  604. function = "i2c1";
  605. };
  606. i2c2_pins: i2c2-pins {
  607. pins = "PH18", "PH19";
  608. function = "i2c2";
  609. };
  610. lcd0_rgb888_pins: lcd0-rgb888-pins {
  611. pins = "PD0", "PD1", "PD2", "PD3",
  612. "PD4", "PD5", "PD6", "PD7",
  613. "PD8", "PD9", "PD10", "PD11",
  614. "PD12", "PD13", "PD14", "PD15",
  615. "PD16", "PD17", "PD18", "PD19",
  616. "PD20", "PD21", "PD22", "PD23",
  617. "PD24", "PD25", "PD26", "PD27";
  618. function = "lcd0";
  619. };
  620. mmc0_pins: mmc0-pins {
  621. pins = "PF0", "PF1", "PF2",
  622. "PF3", "PF4", "PF5";
  623. function = "mmc0";
  624. drive-strength = <30>;
  625. bias-pull-up;
  626. };
  627. mmc1_pins: mmc1-pins {
  628. pins = "PG0", "PG1", "PG2", "PG3",
  629. "PG4", "PG5";
  630. function = "mmc1";
  631. drive-strength = <30>;
  632. bias-pull-up;
  633. };
  634. mmc2_4bit_pins: mmc2-4bit-pins {
  635. pins = "PC6", "PC7", "PC8", "PC9",
  636. "PC10", "PC11";
  637. function = "mmc2";
  638. drive-strength = <30>;
  639. bias-pull-up;
  640. };
  641. mmc2_8bit_emmc_pins: mmc2-8bit-emmc-pins {
  642. pins = "PC6", "PC7", "PC8", "PC9",
  643. "PC10", "PC11", "PC12",
  644. "PC13", "PC14", "PC15",
  645. "PC24";
  646. function = "mmc2";
  647. drive-strength = <30>;
  648. bias-pull-up;
  649. };
  650. mmc3_8bit_emmc_pins: mmc3-8bit-emmc-pins {
  651. pins = "PC6", "PC7", "PC8", "PC9",
  652. "PC10", "PC11", "PC12",
  653. "PC13", "PC14", "PC15",
  654. "PC24";
  655. function = "mmc3";
  656. drive-strength = <40>;
  657. bias-pull-up;
  658. };
  659. spdif_tx_pin: spdif-tx-pin {
  660. pins = "PH28";
  661. function = "spdif";
  662. };
  663. uart0_ph_pins: uart0-ph-pins {
  664. pins = "PH20", "PH21";
  665. function = "uart0";
  666. };
  667. };
  668. timer@1c20c00 {
  669. compatible = "allwinner,sun4i-a10-timer";
  670. reg = <0x01c20c00 0xa0>;
  671. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  672. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
  673. <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
  674. <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
  675. <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
  676. <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  677. clocks = <&osc24M>;
  678. };
  679. wdt1: watchdog@1c20ca0 {
  680. compatible = "allwinner,sun6i-a31-wdt";
  681. reg = <0x01c20ca0 0x20>;
  682. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  683. clocks = <&osc24M>;
  684. };
  685. spdif: spdif@1c21000 {
  686. #sound-dai-cells = <0>;
  687. compatible = "allwinner,sun6i-a31-spdif";
  688. reg = <0x01c21000 0x400>;
  689. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  690. clocks = <&ccu CLK_APB1_SPDIF>, <&ccu CLK_SPDIF>;
  691. resets = <&ccu RST_APB1_SPDIF>;
  692. clock-names = "apb", "spdif";
  693. dmas = <&dma 2>, <&dma 2>;
  694. dma-names = "rx", "tx";
  695. status = "disabled";
  696. };
  697. i2s0: i2s@1c22000 {
  698. #sound-dai-cells = <0>;
  699. compatible = "allwinner,sun6i-a31-i2s";
  700. reg = <0x01c22000 0x400>;
  701. interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
  702. clocks = <&ccu CLK_APB1_DAUDIO0>, <&ccu CLK_DAUDIO0>;
  703. resets = <&ccu RST_APB1_DAUDIO0>;
  704. clock-names = "apb", "mod";
  705. dmas = <&dma 3>, <&dma 3>;
  706. dma-names = "rx", "tx";
  707. status = "disabled";
  708. };
  709. i2s1: i2s@1c22400 {
  710. #sound-dai-cells = <0>;
  711. compatible = "allwinner,sun6i-a31-i2s";
  712. reg = <0x01c22400 0x400>;
  713. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  714. clocks = <&ccu CLK_APB1_DAUDIO1>, <&ccu CLK_DAUDIO1>;
  715. resets = <&ccu RST_APB1_DAUDIO1>;
  716. clock-names = "apb", "mod";
  717. dmas = <&dma 4>, <&dma 4>;
  718. dma-names = "rx", "tx";
  719. status = "disabled";
  720. };
  721. lradc: lradc@1c22800 {
  722. compatible = "allwinner,sun4i-a10-lradc-keys";
  723. reg = <0x01c22800 0x100>;
  724. interrupt-parent = <&r_intc>;
  725. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  726. status = "disabled";
  727. };
  728. rtp: rtp@1c25000 {
  729. compatible = "allwinner,sun6i-a31-ts";
  730. reg = <0x01c25000 0x100>;
  731. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  732. #thermal-sensor-cells = <0>;
  733. };
  734. uart0: serial@1c28000 {
  735. compatible = "snps,dw-apb-uart";
  736. reg = <0x01c28000 0x400>;
  737. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  738. reg-shift = <2>;
  739. reg-io-width = <4>;
  740. clocks = <&ccu CLK_APB2_UART0>;
  741. resets = <&ccu RST_APB2_UART0>;
  742. dmas = <&dma 6>, <&dma 6>;
  743. dma-names = "rx", "tx";
  744. status = "disabled";
  745. };
  746. uart1: serial@1c28400 {
  747. compatible = "snps,dw-apb-uart";
  748. reg = <0x01c28400 0x400>;
  749. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  750. reg-shift = <2>;
  751. reg-io-width = <4>;
  752. clocks = <&ccu CLK_APB2_UART1>;
  753. resets = <&ccu RST_APB2_UART1>;
  754. dmas = <&dma 7>, <&dma 7>;
  755. dma-names = "rx", "tx";
  756. status = "disabled";
  757. };
  758. uart2: serial@1c28800 {
  759. compatible = "snps,dw-apb-uart";
  760. reg = <0x01c28800 0x400>;
  761. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  762. reg-shift = <2>;
  763. reg-io-width = <4>;
  764. clocks = <&ccu CLK_APB2_UART2>;
  765. resets = <&ccu RST_APB2_UART2>;
  766. dmas = <&dma 8>, <&dma 8>;
  767. dma-names = "rx", "tx";
  768. status = "disabled";
  769. };
  770. uart3: serial@1c28c00 {
  771. compatible = "snps,dw-apb-uart";
  772. reg = <0x01c28c00 0x400>;
  773. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  774. reg-shift = <2>;
  775. reg-io-width = <4>;
  776. clocks = <&ccu CLK_APB2_UART3>;
  777. resets = <&ccu RST_APB2_UART3>;
  778. dmas = <&dma 9>, <&dma 9>;
  779. dma-names = "rx", "tx";
  780. status = "disabled";
  781. };
  782. uart4: serial@1c29000 {
  783. compatible = "snps,dw-apb-uart";
  784. reg = <0x01c29000 0x400>;
  785. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  786. reg-shift = <2>;
  787. reg-io-width = <4>;
  788. clocks = <&ccu CLK_APB2_UART4>;
  789. resets = <&ccu RST_APB2_UART4>;
  790. dmas = <&dma 10>, <&dma 10>;
  791. dma-names = "rx", "tx";
  792. status = "disabled";
  793. };
  794. uart5: serial@1c29400 {
  795. compatible = "snps,dw-apb-uart";
  796. reg = <0x01c29400 0x400>;
  797. interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
  798. reg-shift = <2>;
  799. reg-io-width = <4>;
  800. clocks = <&ccu CLK_APB2_UART5>;
  801. resets = <&ccu RST_APB2_UART5>;
  802. dmas = <&dma 22>, <&dma 22>;
  803. dma-names = "rx", "tx";
  804. status = "disabled";
  805. };
  806. i2c0: i2c@1c2ac00 {
  807. compatible = "allwinner,sun6i-a31-i2c";
  808. reg = <0x01c2ac00 0x400>;
  809. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  810. clocks = <&ccu CLK_APB2_I2C0>;
  811. resets = <&ccu RST_APB2_I2C0>;
  812. pinctrl-names = "default";
  813. pinctrl-0 = <&i2c0_pins>;
  814. status = "disabled";
  815. #address-cells = <1>;
  816. #size-cells = <0>;
  817. };
  818. i2c1: i2c@1c2b000 {
  819. compatible = "allwinner,sun6i-a31-i2c";
  820. reg = <0x01c2b000 0x400>;
  821. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  822. clocks = <&ccu CLK_APB2_I2C1>;
  823. resets = <&ccu RST_APB2_I2C1>;
  824. pinctrl-names = "default";
  825. pinctrl-0 = <&i2c1_pins>;
  826. status = "disabled";
  827. #address-cells = <1>;
  828. #size-cells = <0>;
  829. };
  830. i2c2: i2c@1c2b400 {
  831. compatible = "allwinner,sun6i-a31-i2c";
  832. reg = <0x01c2b400 0x400>;
  833. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  834. clocks = <&ccu CLK_APB2_I2C2>;
  835. resets = <&ccu RST_APB2_I2C2>;
  836. pinctrl-names = "default";
  837. pinctrl-0 = <&i2c2_pins>;
  838. status = "disabled";
  839. #address-cells = <1>;
  840. #size-cells = <0>;
  841. };
  842. i2c3: i2c@1c2b800 {
  843. compatible = "allwinner,sun6i-a31-i2c";
  844. reg = <0x01c2b800 0x400>;
  845. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
  846. clocks = <&ccu CLK_APB2_I2C3>;
  847. resets = <&ccu RST_APB2_I2C3>;
  848. status = "disabled";
  849. #address-cells = <1>;
  850. #size-cells = <0>;
  851. };
  852. gmac: ethernet@1c30000 {
  853. compatible = "allwinner,sun7i-a20-gmac";
  854. reg = <0x01c30000 0x1054>;
  855. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  856. interrupt-names = "macirq";
  857. clocks = <&ccu CLK_AHB1_EMAC>, <&gmac_tx_clk>;
  858. clock-names = "stmmaceth", "allwinner_gmac_tx";
  859. resets = <&ccu RST_AHB1_EMAC>;
  860. reset-names = "stmmaceth";
  861. snps,pbl = <2>;
  862. snps,fixed-burst;
  863. snps,force_sf_dma_mode;
  864. status = "disabled";
  865. mdio: mdio {
  866. compatible = "snps,dwmac-mdio";
  867. #address-cells = <1>;
  868. #size-cells = <0>;
  869. };
  870. };
  871. crypto: crypto-engine@1c15000 {
  872. compatible = "allwinner,sun6i-a31-crypto",
  873. "allwinner,sun4i-a10-crypto";
  874. reg = <0x01c15000 0x1000>;
  875. interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  876. clocks = <&ccu CLK_AHB1_SS>, <&ccu CLK_SS>;
  877. clock-names = "ahb", "mod";
  878. resets = <&ccu RST_AHB1_SS>;
  879. reset-names = "ahb";
  880. };
  881. codec: codec@1c22c00 {
  882. #sound-dai-cells = <0>;
  883. compatible = "allwinner,sun6i-a31-codec";
  884. reg = <0x01c22c00 0x400>;
  885. interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
  886. clocks = <&ccu CLK_APB1_CODEC>, <&ccu CLK_CODEC>;
  887. clock-names = "apb", "codec";
  888. resets = <&ccu RST_APB1_CODEC>;
  889. dmas = <&dma 15>, <&dma 15>;
  890. dma-names = "rx", "tx";
  891. status = "disabled";
  892. };
  893. timer@1c60000 {
  894. compatible = "allwinner,sun6i-a31-hstimer",
  895. "allwinner,sun7i-a20-hstimer";
  896. reg = <0x01c60000 0x1000>;
  897. interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
  898. <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
  899. <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
  900. <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
  901. clocks = <&ccu CLK_AHB1_HSTIMER>;
  902. resets = <&ccu RST_AHB1_HSTIMER>;
  903. };
  904. spi0: spi@1c68000 {
  905. compatible = "allwinner,sun6i-a31-spi";
  906. reg = <0x01c68000 0x1000>;
  907. interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  908. clocks = <&ccu CLK_AHB1_SPI0>, <&ccu CLK_SPI0>;
  909. clock-names = "ahb", "mod";
  910. dmas = <&dma 23>, <&dma 23>;
  911. dma-names = "rx", "tx";
  912. resets = <&ccu RST_AHB1_SPI0>;
  913. status = "disabled";
  914. #address-cells = <1>;
  915. #size-cells = <0>;
  916. };
  917. spi1: spi@1c69000 {
  918. compatible = "allwinner,sun6i-a31-spi";
  919. reg = <0x01c69000 0x1000>;
  920. interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
  921. clocks = <&ccu CLK_AHB1_SPI1>, <&ccu CLK_SPI1>;
  922. clock-names = "ahb", "mod";
  923. dmas = <&dma 24>, <&dma 24>;
  924. dma-names = "rx", "tx";
  925. resets = <&ccu RST_AHB1_SPI1>;
  926. status = "disabled";
  927. #address-cells = <1>;
  928. #size-cells = <0>;
  929. };
  930. spi2: spi@1c6a000 {
  931. compatible = "allwinner,sun6i-a31-spi";
  932. reg = <0x01c6a000 0x1000>;
  933. interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  934. clocks = <&ccu CLK_AHB1_SPI2>, <&ccu CLK_SPI2>;
  935. clock-names = "ahb", "mod";
  936. dmas = <&dma 25>, <&dma 25>;
  937. dma-names = "rx", "tx";
  938. resets = <&ccu RST_AHB1_SPI2>;
  939. status = "disabled";
  940. #address-cells = <1>;
  941. #size-cells = <0>;
  942. };
  943. spi3: spi@1c6b000 {
  944. compatible = "allwinner,sun6i-a31-spi";
  945. reg = <0x01c6b000 0x1000>;
  946. interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
  947. clocks = <&ccu CLK_AHB1_SPI3>, <&ccu CLK_SPI3>;
  948. clock-names = "ahb", "mod";
  949. dmas = <&dma 26>, <&dma 26>;
  950. dma-names = "rx", "tx";
  951. resets = <&ccu RST_AHB1_SPI3>;
  952. status = "disabled";
  953. #address-cells = <1>;
  954. #size-cells = <0>;
  955. };
  956. gic: interrupt-controller@1c81000 {
  957. compatible = "arm,gic-400";
  958. reg = <0x01c81000 0x1000>,
  959. <0x01c82000 0x2000>,
  960. <0x01c84000 0x2000>,
  961. <0x01c86000 0x2000>;
  962. interrupt-controller;
  963. #interrupt-cells = <3>;
  964. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  965. };
  966. fe0: display-frontend@1e00000 {
  967. compatible = "allwinner,sun6i-a31-display-frontend";
  968. reg = <0x01e00000 0x20000>;
  969. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  970. clocks = <&ccu CLK_AHB1_FE0>, <&ccu CLK_FE0>,
  971. <&ccu CLK_DRAM_FE0>;
  972. clock-names = "ahb", "mod",
  973. "ram";
  974. resets = <&ccu RST_AHB1_FE0>;
  975. ports {
  976. #address-cells = <1>;
  977. #size-cells = <0>;
  978. fe0_out: port@1 {
  979. #address-cells = <1>;
  980. #size-cells = <0>;
  981. reg = <1>;
  982. fe0_out_be0: endpoint@0 {
  983. reg = <0>;
  984. remote-endpoint = <&be0_in_fe0>;
  985. };
  986. fe0_out_be1: endpoint@1 {
  987. reg = <1>;
  988. remote-endpoint = <&be1_in_fe0>;
  989. };
  990. };
  991. };
  992. };
  993. fe1: display-frontend@1e20000 {
  994. compatible = "allwinner,sun6i-a31-display-frontend";
  995. reg = <0x01e20000 0x20000>;
  996. interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
  997. clocks = <&ccu CLK_AHB1_FE1>, <&ccu CLK_FE1>,
  998. <&ccu CLK_DRAM_FE1>;
  999. clock-names = "ahb", "mod",
  1000. "ram";
  1001. resets = <&ccu RST_AHB1_FE1>;
  1002. ports {
  1003. #address-cells = <1>;
  1004. #size-cells = <0>;
  1005. fe1_out: port@1 {
  1006. #address-cells = <1>;
  1007. #size-cells = <0>;
  1008. reg = <1>;
  1009. fe1_out_be0: endpoint@0 {
  1010. reg = <0>;
  1011. remote-endpoint = <&be0_in_fe1>;
  1012. };
  1013. fe1_out_be1: endpoint@1 {
  1014. reg = <1>;
  1015. remote-endpoint = <&be1_in_fe1>;
  1016. };
  1017. };
  1018. };
  1019. };
  1020. be1: display-backend@1e40000 {
  1021. compatible = "allwinner,sun6i-a31-display-backend";
  1022. reg = <0x01e40000 0x10000>;
  1023. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  1024. clocks = <&ccu CLK_AHB1_BE1>, <&ccu CLK_BE1>,
  1025. <&ccu CLK_DRAM_BE1>;
  1026. clock-names = "ahb", "mod",
  1027. "ram";
  1028. resets = <&ccu RST_AHB1_BE1>;
  1029. ports {
  1030. #address-cells = <1>;
  1031. #size-cells = <0>;
  1032. be1_in: port@0 {
  1033. #address-cells = <1>;
  1034. #size-cells = <0>;
  1035. reg = <0>;
  1036. be1_in_fe0: endpoint@0 {
  1037. reg = <0>;
  1038. remote-endpoint = <&fe0_out_be1>;
  1039. };
  1040. be1_in_fe1: endpoint@1 {
  1041. reg = <1>;
  1042. remote-endpoint = <&fe1_out_be1>;
  1043. };
  1044. };
  1045. be1_out: port@1 {
  1046. #address-cells = <1>;
  1047. #size-cells = <0>;
  1048. reg = <1>;
  1049. be1_out_drc1: endpoint@1 {
  1050. reg = <1>;
  1051. remote-endpoint = <&drc1_in_be1>;
  1052. };
  1053. };
  1054. };
  1055. };
  1056. drc1: drc@1e50000 {
  1057. compatible = "allwinner,sun6i-a31-drc";
  1058. reg = <0x01e50000 0x10000>;
  1059. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  1060. clocks = <&ccu CLK_AHB1_DRC1>, <&ccu CLK_IEP_DRC1>,
  1061. <&ccu CLK_DRAM_DRC1>;
  1062. clock-names = "ahb", "mod",
  1063. "ram";
  1064. resets = <&ccu RST_AHB1_DRC1>;
  1065. ports {
  1066. #address-cells = <1>;
  1067. #size-cells = <0>;
  1068. drc1_in: port@0 {
  1069. #address-cells = <1>;
  1070. #size-cells = <0>;
  1071. reg = <0>;
  1072. drc1_in_be1: endpoint@1 {
  1073. reg = <1>;
  1074. remote-endpoint = <&be1_out_drc1>;
  1075. };
  1076. };
  1077. drc1_out: port@1 {
  1078. #address-cells = <1>;
  1079. #size-cells = <0>;
  1080. reg = <1>;
  1081. drc1_out_tcon0: endpoint@0 {
  1082. reg = <0>;
  1083. remote-endpoint = <&tcon0_in_drc1>;
  1084. };
  1085. drc1_out_tcon1: endpoint@1 {
  1086. reg = <1>;
  1087. remote-endpoint = <&tcon1_in_drc1>;
  1088. };
  1089. };
  1090. };
  1091. };
  1092. be0: display-backend@1e60000 {
  1093. compatible = "allwinner,sun6i-a31-display-backend";
  1094. reg = <0x01e60000 0x10000>;
  1095. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  1096. clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_BE0>,
  1097. <&ccu CLK_DRAM_BE0>;
  1098. clock-names = "ahb", "mod",
  1099. "ram";
  1100. resets = <&ccu RST_AHB1_BE0>;
  1101. ports {
  1102. #address-cells = <1>;
  1103. #size-cells = <0>;
  1104. be0_in: port@0 {
  1105. #address-cells = <1>;
  1106. #size-cells = <0>;
  1107. reg = <0>;
  1108. be0_in_fe0: endpoint@0 {
  1109. reg = <0>;
  1110. remote-endpoint = <&fe0_out_be0>;
  1111. };
  1112. be0_in_fe1: endpoint@1 {
  1113. reg = <1>;
  1114. remote-endpoint = <&fe1_out_be0>;
  1115. };
  1116. };
  1117. be0_out: port@1 {
  1118. reg = <1>;
  1119. be0_out_drc0: endpoint {
  1120. remote-endpoint = <&drc0_in_be0>;
  1121. };
  1122. };
  1123. };
  1124. };
  1125. drc0: drc@1e70000 {
  1126. compatible = "allwinner,sun6i-a31-drc";
  1127. reg = <0x01e70000 0x10000>;
  1128. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  1129. clocks = <&ccu CLK_AHB1_DRC0>, <&ccu CLK_IEP_DRC0>,
  1130. <&ccu CLK_DRAM_DRC0>;
  1131. clock-names = "ahb", "mod",
  1132. "ram";
  1133. resets = <&ccu RST_AHB1_DRC0>;
  1134. ports {
  1135. #address-cells = <1>;
  1136. #size-cells = <0>;
  1137. drc0_in: port@0 {
  1138. reg = <0>;
  1139. drc0_in_be0: endpoint {
  1140. remote-endpoint = <&be0_out_drc0>;
  1141. };
  1142. };
  1143. drc0_out: port@1 {
  1144. #address-cells = <1>;
  1145. #size-cells = <0>;
  1146. reg = <1>;
  1147. drc0_out_tcon0: endpoint@0 {
  1148. reg = <0>;
  1149. remote-endpoint = <&tcon0_in_drc0>;
  1150. };
  1151. drc0_out_tcon1: endpoint@1 {
  1152. reg = <1>;
  1153. remote-endpoint = <&tcon1_in_drc0>;
  1154. };
  1155. };
  1156. };
  1157. };
  1158. rtc: rtc@1f00000 {
  1159. #clock-cells = <1>;
  1160. compatible = "allwinner,sun6i-a31-rtc";
  1161. reg = <0x01f00000 0x54>;
  1162. interrupt-parent = <&r_intc>;
  1163. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  1164. <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  1165. clocks = <&osc32k>;
  1166. clock-output-names = "osc32k";
  1167. };
  1168. r_intc: interrupt-controller@1f00c00 {
  1169. compatible = "allwinner,sun6i-a31-r-intc";
  1170. interrupt-controller;
  1171. #interrupt-cells = <3>;
  1172. reg = <0x01f00c00 0x400>;
  1173. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  1174. };
  1175. prcm@1f01400 {
  1176. compatible = "allwinner,sun6i-a31-prcm";
  1177. reg = <0x01f01400 0x200>;
  1178. ar100: ar100_clk {
  1179. compatible = "allwinner,sun6i-a31-ar100-clk";
  1180. #clock-cells = <0>;
  1181. clocks = <&rtc CLK_OSC32K>, <&osc24M>,
  1182. <&ccu CLK_PLL_PERIPH>,
  1183. <&ccu CLK_PLL_PERIPH>;
  1184. clock-output-names = "ar100";
  1185. };
  1186. ahb0: ahb0_clk {
  1187. compatible = "fixed-factor-clock";
  1188. #clock-cells = <0>;
  1189. clock-div = <1>;
  1190. clock-mult = <1>;
  1191. clocks = <&ar100>;
  1192. clock-output-names = "ahb0";
  1193. };
  1194. apb0: apb0_clk {
  1195. compatible = "allwinner,sun6i-a31-apb0-clk";
  1196. #clock-cells = <0>;
  1197. clocks = <&ahb0>;
  1198. clock-output-names = "apb0";
  1199. };
  1200. apb0_gates: apb0_gates_clk {
  1201. compatible = "allwinner,sun6i-a31-apb0-gates-clk";
  1202. #clock-cells = <1>;
  1203. clocks = <&apb0>;
  1204. clock-output-names = "apb0_pio", "apb0_ir",
  1205. "apb0_timer", "apb0_p2wi",
  1206. "apb0_uart", "apb0_1wire",
  1207. "apb0_i2c";
  1208. };
  1209. ir_clk: ir_clk {
  1210. #clock-cells = <0>;
  1211. compatible = "allwinner,sun4i-a10-mod0-clk";
  1212. clocks = <&rtc CLK_OSC32K>, <&osc24M>;
  1213. clock-output-names = "ir";
  1214. };
  1215. apb0_rst: apb0_rst {
  1216. compatible = "allwinner,sun6i-a31-clock-reset";
  1217. #reset-cells = <1>;
  1218. };
  1219. };
  1220. cpucfg@1f01c00 {
  1221. compatible = "allwinner,sun6i-a31-cpuconfig";
  1222. reg = <0x01f01c00 0x300>;
  1223. };
  1224. ir: ir@1f02000 {
  1225. compatible = "allwinner,sun6i-a31-ir";
  1226. clocks = <&apb0_gates 1>, <&ir_clk>;
  1227. clock-names = "apb", "ir";
  1228. resets = <&apb0_rst 1>;
  1229. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  1230. reg = <0x01f02000 0x40>;
  1231. status = "disabled";
  1232. };
  1233. r_pio: pinctrl@1f02c00 {
  1234. compatible = "allwinner,sun6i-a31-r-pinctrl";
  1235. reg = <0x01f02c00 0x400>;
  1236. interrupt-parent = <&r_intc>;
  1237. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
  1238. <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
  1239. clocks = <&apb0_gates 0>, <&osc24M>, <&rtc CLK_OSC32K>;
  1240. clock-names = "apb", "hosc", "losc";
  1241. gpio-controller;
  1242. interrupt-controller;
  1243. #interrupt-cells = <3>;
  1244. #gpio-cells = <3>;
  1245. s_ir_rx_pin: s-ir-rx-pin {
  1246. pins = "PL4";
  1247. function = "s_ir";
  1248. };
  1249. s_p2wi_pins: s-p2wi-pins {
  1250. pins = "PL0", "PL1";
  1251. function = "s_p2wi";
  1252. };
  1253. };
  1254. p2wi: i2c@1f03400 {
  1255. compatible = "allwinner,sun6i-a31-p2wi";
  1256. reg = <0x01f03400 0x400>;
  1257. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  1258. clocks = <&apb0_gates 3>;
  1259. clock-frequency = <100000>;
  1260. resets = <&apb0_rst 3>;
  1261. pinctrl-names = "default";
  1262. pinctrl-0 = <&s_p2wi_pins>;
  1263. status = "disabled";
  1264. #address-cells = <1>;
  1265. #size-cells = <0>;
  1266. };
  1267. };
  1268. };