sun6i-a31.dtsi 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160
  1. /*
  2. * Copyright 2013 Maxime Ripard
  3. *
  4. * Maxime Ripard <maxime.ripard@free-electrons.com>
  5. *
  6. * This file is dual-licensed: you can use it either under the terms
  7. * of the GPL or the X11 license, at your option. Note that this dual
  8. * licensing only applies to this file, and not this project as a
  9. * whole.
  10. *
  11. * a) This file is free software; you can redistribute it and/or
  12. * modify it under the terms of the GNU General Public License as
  13. * published by the Free Software Foundation; either version 2 of the
  14. * License, or (at your option) any later version.
  15. *
  16. * This file is distributed in the hope that it will be useful,
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. * GNU General Public License for more details.
  20. *
  21. * Or, alternatively,
  22. *
  23. * b) Permission is hereby granted, free of charge, to any person
  24. * obtaining a copy of this software and associated documentation
  25. * files (the "Software"), to deal in the Software without
  26. * restriction, including without limitation the rights to use,
  27. * copy, modify, merge, publish, distribute, sublicense, and/or
  28. * sell copies of the Software, and to permit persons to whom the
  29. * Software is furnished to do so, subject to the following
  30. * conditions:
  31. *
  32. * The above copyright notice and this permission notice shall be
  33. * included in all copies or substantial portions of the Software.
  34. *
  35. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  36. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  37. * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  38. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  39. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  40. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  41. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  42. * OTHER DEALINGS IN THE SOFTWARE.
  43. */
  44. #include "skeleton.dtsi"
  45. #include <dt-bindings/interrupt-controller/arm-gic.h>
  46. #include <dt-bindings/thermal/thermal.h>
  47. #include <dt-bindings/pinctrl/sun4i-a10.h>
  48. / {
  49. interrupt-parent = <&gic>;
  50. aliases {
  51. ethernet0 = &gmac;
  52. };
  53. chosen {
  54. #address-cells = <1>;
  55. #size-cells = <1>;
  56. ranges;
  57. simplefb_hdmi: framebuffer@0 {
  58. compatible = "allwinner,simple-framebuffer",
  59. "simple-framebuffer";
  60. allwinner,pipeline = "de_be0-lcd0-hdmi";
  61. clocks = <&pll6 0>;
  62. status = "disabled";
  63. };
  64. simplefb_lcd: framebuffer@1 {
  65. compatible = "allwinner,simple-framebuffer",
  66. "simple-framebuffer";
  67. allwinner,pipeline = "de_be0-lcd0";
  68. clocks = <&pll6 0>;
  69. status = "disabled";
  70. };
  71. };
  72. timer {
  73. compatible = "arm,armv7-timer";
  74. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  75. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  76. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  77. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  78. clock-frequency = <24000000>;
  79. arm,cpu-registers-not-fw-configured;
  80. };
  81. cpus {
  82. enable-method = "allwinner,sun6i-a31";
  83. #address-cells = <1>;
  84. #size-cells = <0>;
  85. cpu0: cpu@0 {
  86. compatible = "arm,cortex-a7";
  87. device_type = "cpu";
  88. reg = <0>;
  89. clocks = <&cpu>;
  90. clock-latency = <244144>; /* 8 32k periods */
  91. operating-points = <
  92. /* kHz uV */
  93. 1008000 1200000
  94. 864000 1200000
  95. 720000 1100000
  96. 480000 1000000
  97. >;
  98. #cooling-cells = <2>;
  99. cooling-min-level = <0>;
  100. cooling-max-level = <3>;
  101. };
  102. cpu@1 {
  103. compatible = "arm,cortex-a7";
  104. device_type = "cpu";
  105. reg = <1>;
  106. };
  107. cpu@2 {
  108. compatible = "arm,cortex-a7";
  109. device_type = "cpu";
  110. reg = <2>;
  111. };
  112. cpu@3 {
  113. compatible = "arm,cortex-a7";
  114. device_type = "cpu";
  115. reg = <3>;
  116. };
  117. };
  118. thermal-zones {
  119. cpu_thermal {
  120. /* milliseconds */
  121. polling-delay-passive = <250>;
  122. polling-delay = <1000>;
  123. thermal-sensors = <&rtp>;
  124. cooling-maps {
  125. map0 {
  126. trip = <&cpu_alert0>;
  127. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  128. };
  129. };
  130. trips {
  131. cpu_alert0: cpu_alert0 {
  132. /* milliCelsius */
  133. temperature = <70000>;
  134. hysteresis = <2000>;
  135. type = "passive";
  136. };
  137. cpu_crit: cpu_crit {
  138. /* milliCelsius */
  139. temperature = <100000>;
  140. hysteresis = <2000>;
  141. type = "critical";
  142. };
  143. };
  144. };
  145. };
  146. memory {
  147. reg = <0x40000000 0x80000000>;
  148. };
  149. pmu {
  150. compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
  151. interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
  152. <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
  153. <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
  154. <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
  155. };
  156. clocks {
  157. #address-cells = <1>;
  158. #size-cells = <1>;
  159. ranges;
  160. osc24M: osc24M {
  161. #clock-cells = <0>;
  162. compatible = "fixed-clock";
  163. clock-frequency = <24000000>;
  164. };
  165. osc32k: clk@0 {
  166. #clock-cells = <0>;
  167. compatible = "fixed-clock";
  168. clock-frequency = <32768>;
  169. clock-output-names = "osc32k";
  170. };
  171. pll1: clk@01c20000 {
  172. #clock-cells = <0>;
  173. compatible = "allwinner,sun6i-a31-pll1-clk";
  174. reg = <0x01c20000 0x4>;
  175. clocks = <&osc24M>;
  176. clock-output-names = "pll1";
  177. };
  178. pll6: clk@01c20028 {
  179. #clock-cells = <1>;
  180. compatible = "allwinner,sun6i-a31-pll6-clk";
  181. reg = <0x01c20028 0x4>;
  182. clocks = <&osc24M>;
  183. clock-output-names = "pll6", "pll6x2";
  184. };
  185. cpu: cpu@01c20050 {
  186. #clock-cells = <0>;
  187. compatible = "allwinner,sun4i-a10-cpu-clk";
  188. reg = <0x01c20050 0x4>;
  189. /*
  190. * PLL1 is listed twice here.
  191. * While it looks suspicious, it's actually documented
  192. * that way both in the datasheet and in the code from
  193. * Allwinner.
  194. */
  195. clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>;
  196. clock-output-names = "cpu";
  197. };
  198. axi: axi@01c20050 {
  199. #clock-cells = <0>;
  200. compatible = "allwinner,sun4i-a10-axi-clk";
  201. reg = <0x01c20050 0x4>;
  202. clocks = <&cpu>;
  203. clock-output-names = "axi";
  204. };
  205. ahb1: ahb1@01c20054 {
  206. #clock-cells = <0>;
  207. compatible = "allwinner,sun6i-a31-ahb1-clk";
  208. reg = <0x01c20054 0x4>;
  209. clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>;
  210. clock-output-names = "ahb1";
  211. /*
  212. * Clock AHB1 from PLL6, instead of CPU/AXI which
  213. * has rate changes due to cpufreq. Also the DMA
  214. * controller requires AHB1 clocked from PLL6.
  215. */
  216. assigned-clocks = <&ahb1>;
  217. assigned-clock-parents = <&pll6 0>;
  218. };
  219. ahb1_gates: clk@01c20060 {
  220. #clock-cells = <1>;
  221. compatible = "allwinner,sun6i-a31-ahb1-gates-clk";
  222. reg = <0x01c20060 0x8>;
  223. clocks = <&ahb1>;
  224. clock-indices = <1>, <5>,
  225. <6>, <8>, <9>,
  226. <10>, <11>, <12>,
  227. <13>, <14>,
  228. <17>, <18>, <19>,
  229. <20>, <21>, <22>,
  230. <23>, <24>, <26>,
  231. <27>, <29>,
  232. <30>, <31>, <32>,
  233. <36>, <37>, <40>,
  234. <43>, <44>, <45>,
  235. <46>, <47>, <50>,
  236. <52>, <55>, <56>,
  237. <57>, <58>;
  238. clock-output-names = "ahb1_mipidsi", "ahb1_ss",
  239. "ahb1_dma", "ahb1_mmc0", "ahb1_mmc1",
  240. "ahb1_mmc2", "ahb1_mmc3", "ahb1_nand1",
  241. "ahb1_nand0", "ahb1_sdram",
  242. "ahb1_gmac", "ahb1_ts", "ahb1_hstimer",
  243. "ahb1_spi0", "ahb1_spi1", "ahb1_spi2",
  244. "ahb1_spi3", "ahb1_otg", "ahb1_ehci0",
  245. "ahb1_ehci1", "ahb1_ohci0",
  246. "ahb1_ohci1", "ahb1_ohci2", "ahb1_ve",
  247. "ahb1_lcd0", "ahb1_lcd1", "ahb1_csi",
  248. "ahb1_hdmi", "ahb1_de0", "ahb1_de1",
  249. "ahb1_fe0", "ahb1_fe1", "ahb1_mp",
  250. "ahb1_gpu", "ahb1_deu0", "ahb1_deu1",
  251. "ahb1_drc0", "ahb1_drc1";
  252. };
  253. apb1: apb1@01c20054 {
  254. #clock-cells = <0>;
  255. compatible = "allwinner,sun4i-a10-apb0-clk";
  256. reg = <0x01c20054 0x4>;
  257. clocks = <&ahb1>;
  258. clock-output-names = "apb1";
  259. };
  260. apb1_gates: clk@01c20068 {
  261. #clock-cells = <1>;
  262. compatible = "allwinner,sun6i-a31-apb1-gates-clk";
  263. reg = <0x01c20068 0x4>;
  264. clocks = <&apb1>;
  265. clock-indices = <0>, <4>,
  266. <5>, <12>,
  267. <13>;
  268. clock-output-names = "apb1_codec", "apb1_digital_mic",
  269. "apb1_pio", "apb1_daudio0",
  270. "apb1_daudio1";
  271. };
  272. apb2: clk@01c20058 {
  273. #clock-cells = <0>;
  274. compatible = "allwinner,sun4i-a10-apb1-clk";
  275. reg = <0x01c20058 0x4>;
  276. clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
  277. clock-output-names = "apb2";
  278. };
  279. apb2_gates: clk@01c2006c {
  280. #clock-cells = <1>;
  281. compatible = "allwinner,sun6i-a31-apb2-gates-clk";
  282. reg = <0x01c2006c 0x4>;
  283. clocks = <&apb2>;
  284. clock-indices = <0>, <1>,
  285. <2>, <3>, <16>,
  286. <17>, <18>, <19>,
  287. <20>, <21>;
  288. clock-output-names = "apb2_i2c0", "apb2_i2c1",
  289. "apb2_i2c2", "apb2_i2c3",
  290. "apb2_uart0", "apb2_uart1",
  291. "apb2_uart2", "apb2_uart3",
  292. "apb2_uart4", "apb2_uart5";
  293. };
  294. mmc0_clk: clk@01c20088 {
  295. #clock-cells = <1>;
  296. compatible = "allwinner,sun4i-a10-mmc-clk";
  297. reg = <0x01c20088 0x4>;
  298. clocks = <&osc24M>, <&pll6 0>;
  299. clock-output-names = "mmc0",
  300. "mmc0_output",
  301. "mmc0_sample";
  302. };
  303. mmc1_clk: clk@01c2008c {
  304. #clock-cells = <1>;
  305. compatible = "allwinner,sun4i-a10-mmc-clk";
  306. reg = <0x01c2008c 0x4>;
  307. clocks = <&osc24M>, <&pll6 0>;
  308. clock-output-names = "mmc1",
  309. "mmc1_output",
  310. "mmc1_sample";
  311. };
  312. mmc2_clk: clk@01c20090 {
  313. #clock-cells = <1>;
  314. compatible = "allwinner,sun4i-a10-mmc-clk";
  315. reg = <0x01c20090 0x4>;
  316. clocks = <&osc24M>, <&pll6 0>;
  317. clock-output-names = "mmc2",
  318. "mmc2_output",
  319. "mmc2_sample";
  320. };
  321. mmc3_clk: clk@01c20094 {
  322. #clock-cells = <1>;
  323. compatible = "allwinner,sun4i-a10-mmc-clk";
  324. reg = <0x01c20094 0x4>;
  325. clocks = <&osc24M>, <&pll6 0>;
  326. clock-output-names = "mmc3",
  327. "mmc3_output",
  328. "mmc3_sample";
  329. };
  330. ss_clk: clk@01c2009c {
  331. #clock-cells = <0>;
  332. compatible = "allwinner,sun4i-a10-mod0-clk";
  333. reg = <0x01c2009c 0x4>;
  334. clocks = <&osc24M>, <&pll6 0>;
  335. clock-output-names = "ss";
  336. };
  337. spi0_clk: clk@01c200a0 {
  338. #clock-cells = <0>;
  339. compatible = "allwinner,sun4i-a10-mod0-clk";
  340. reg = <0x01c200a0 0x4>;
  341. clocks = <&osc24M>, <&pll6 0>;
  342. clock-output-names = "spi0";
  343. };
  344. spi1_clk: clk@01c200a4 {
  345. #clock-cells = <0>;
  346. compatible = "allwinner,sun4i-a10-mod0-clk";
  347. reg = <0x01c200a4 0x4>;
  348. clocks = <&osc24M>, <&pll6 0>;
  349. clock-output-names = "spi1";
  350. };
  351. spi2_clk: clk@01c200a8 {
  352. #clock-cells = <0>;
  353. compatible = "allwinner,sun4i-a10-mod0-clk";
  354. reg = <0x01c200a8 0x4>;
  355. clocks = <&osc24M>, <&pll6 0>;
  356. clock-output-names = "spi2";
  357. };
  358. spi3_clk: clk@01c200ac {
  359. #clock-cells = <0>;
  360. compatible = "allwinner,sun4i-a10-mod0-clk";
  361. reg = <0x01c200ac 0x4>;
  362. clocks = <&osc24M>, <&pll6 0>;
  363. clock-output-names = "spi3";
  364. };
  365. usb_clk: clk@01c200cc {
  366. #clock-cells = <1>;
  367. #reset-cells = <1>;
  368. compatible = "allwinner,sun6i-a31-usb-clk";
  369. reg = <0x01c200cc 0x4>;
  370. clocks = <&osc24M>;
  371. clock-indices = <8>, <9>, <10>,
  372. <16>, <17>,
  373. <18>;
  374. clock-output-names = "usb_phy0", "usb_phy1", "usb_phy2",
  375. "usb_ohci0", "usb_ohci1",
  376. "usb_ohci2";
  377. };
  378. /*
  379. * The following two are dummy clocks, placeholders
  380. * used in the gmac_tx clock. The gmac driver will
  381. * choose one parent depending on the PHY interface
  382. * mode, using clk_set_rate auto-reparenting.
  383. *
  384. * The actual TX clock rate is not controlled by the
  385. * gmac_tx clock.
  386. */
  387. mii_phy_tx_clk: clk@1 {
  388. #clock-cells = <0>;
  389. compatible = "fixed-clock";
  390. clock-frequency = <25000000>;
  391. clock-output-names = "mii_phy_tx";
  392. };
  393. gmac_int_tx_clk: clk@2 {
  394. #clock-cells = <0>;
  395. compatible = "fixed-clock";
  396. clock-frequency = <125000000>;
  397. clock-output-names = "gmac_int_tx";
  398. };
  399. gmac_tx_clk: clk@01c200d0 {
  400. #clock-cells = <0>;
  401. compatible = "allwinner,sun7i-a20-gmac-clk";
  402. reg = <0x01c200d0 0x4>;
  403. clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
  404. clock-output-names = "gmac_tx";
  405. };
  406. };
  407. soc@01c00000 {
  408. compatible = "simple-bus";
  409. #address-cells = <1>;
  410. #size-cells = <1>;
  411. ranges;
  412. dma: dma-controller@01c02000 {
  413. compatible = "allwinner,sun6i-a31-dma";
  414. reg = <0x01c02000 0x1000>;
  415. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  416. clocks = <&ahb1_gates 6>;
  417. resets = <&ahb1_rst 6>;
  418. #dma-cells = <1>;
  419. };
  420. mmc0: mmc@01c0f000 {
  421. compatible = "allwinner,sun7i-a20-mmc",
  422. "allwinner,sun5i-a13-mmc";
  423. reg = <0x01c0f000 0x1000>;
  424. clocks = <&ahb1_gates 8>,
  425. <&mmc0_clk 0>,
  426. <&mmc0_clk 1>,
  427. <&mmc0_clk 2>;
  428. clock-names = "ahb",
  429. "mmc",
  430. "output",
  431. "sample";
  432. resets = <&ahb1_rst 8>;
  433. reset-names = "ahb";
  434. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  435. status = "disabled";
  436. #address-cells = <1>;
  437. #size-cells = <0>;
  438. };
  439. mmc1: mmc@01c10000 {
  440. compatible = "allwinner,sun7i-a20-mmc",
  441. "allwinner,sun5i-a13-mmc";
  442. reg = <0x01c10000 0x1000>;
  443. clocks = <&ahb1_gates 9>,
  444. <&mmc1_clk 0>,
  445. <&mmc1_clk 1>,
  446. <&mmc1_clk 2>;
  447. clock-names = "ahb",
  448. "mmc",
  449. "output",
  450. "sample";
  451. resets = <&ahb1_rst 9>;
  452. reset-names = "ahb";
  453. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  454. status = "disabled";
  455. #address-cells = <1>;
  456. #size-cells = <0>;
  457. };
  458. mmc2: mmc@01c11000 {
  459. compatible = "allwinner,sun7i-a20-mmc",
  460. "allwinner,sun5i-a13-mmc";
  461. reg = <0x01c11000 0x1000>;
  462. clocks = <&ahb1_gates 10>,
  463. <&mmc2_clk 0>,
  464. <&mmc2_clk 1>,
  465. <&mmc2_clk 2>;
  466. clock-names = "ahb",
  467. "mmc",
  468. "output",
  469. "sample";
  470. resets = <&ahb1_rst 10>;
  471. reset-names = "ahb";
  472. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  473. status = "disabled";
  474. #address-cells = <1>;
  475. #size-cells = <0>;
  476. };
  477. mmc3: mmc@01c12000 {
  478. compatible = "allwinner,sun7i-a20-mmc",
  479. "allwinner,sun5i-a13-mmc";
  480. reg = <0x01c12000 0x1000>;
  481. clocks = <&ahb1_gates 11>,
  482. <&mmc3_clk 0>,
  483. <&mmc3_clk 1>,
  484. <&mmc3_clk 2>;
  485. clock-names = "ahb",
  486. "mmc",
  487. "output",
  488. "sample";
  489. resets = <&ahb1_rst 11>;
  490. reset-names = "ahb";
  491. interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
  492. status = "disabled";
  493. #address-cells = <1>;
  494. #size-cells = <0>;
  495. };
  496. usb_otg: usb@01c19000 {
  497. compatible = "allwinner,sun6i-a31-musb";
  498. reg = <0x01c19000 0x0400>;
  499. clocks = <&ahb1_gates 24>;
  500. resets = <&ahb1_rst 24>;
  501. interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  502. interrupt-names = "mc";
  503. phys = <&usbphy 0>;
  504. phy-names = "usb";
  505. extcon = <&usbphy 0>;
  506. status = "disabled";
  507. };
  508. usbphy: phy@01c19400 {
  509. compatible = "allwinner,sun6i-a31-usb-phy";
  510. reg = <0x01c19400 0x10>,
  511. <0x01c1a800 0x4>,
  512. <0x01c1b800 0x4>;
  513. reg-names = "phy_ctrl",
  514. "pmu1",
  515. "pmu2";
  516. clocks = <&usb_clk 8>,
  517. <&usb_clk 9>,
  518. <&usb_clk 10>;
  519. clock-names = "usb0_phy",
  520. "usb1_phy",
  521. "usb2_phy";
  522. resets = <&usb_clk 0>,
  523. <&usb_clk 1>,
  524. <&usb_clk 2>;
  525. reset-names = "usb0_reset",
  526. "usb1_reset",
  527. "usb2_reset";
  528. status = "disabled";
  529. #phy-cells = <1>;
  530. };
  531. ehci0: usb@01c1a000 {
  532. compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
  533. reg = <0x01c1a000 0x100>;
  534. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  535. clocks = <&ahb1_gates 26>;
  536. resets = <&ahb1_rst 26>;
  537. phys = <&usbphy 1>;
  538. phy-names = "usb";
  539. status = "disabled";
  540. };
  541. ohci0: usb@01c1a400 {
  542. compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
  543. reg = <0x01c1a400 0x100>;
  544. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  545. clocks = <&ahb1_gates 29>, <&usb_clk 16>;
  546. resets = <&ahb1_rst 29>;
  547. phys = <&usbphy 1>;
  548. phy-names = "usb";
  549. status = "disabled";
  550. };
  551. ehci1: usb@01c1b000 {
  552. compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
  553. reg = <0x01c1b000 0x100>;
  554. interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  555. clocks = <&ahb1_gates 27>;
  556. resets = <&ahb1_rst 27>;
  557. phys = <&usbphy 2>;
  558. phy-names = "usb";
  559. status = "disabled";
  560. };
  561. ohci1: usb@01c1b400 {
  562. compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
  563. reg = <0x01c1b400 0x100>;
  564. interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
  565. clocks = <&ahb1_gates 30>, <&usb_clk 17>;
  566. resets = <&ahb1_rst 30>;
  567. phys = <&usbphy 2>;
  568. phy-names = "usb";
  569. status = "disabled";
  570. };
  571. ohci2: usb@01c1c400 {
  572. compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
  573. reg = <0x01c1c400 0x100>;
  574. interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
  575. clocks = <&ahb1_gates 31>, <&usb_clk 18>;
  576. resets = <&ahb1_rst 31>;
  577. status = "disabled";
  578. };
  579. pio: pinctrl@01c20800 {
  580. compatible = "allwinner,sun6i-a31-pinctrl";
  581. reg = <0x01c20800 0x400>;
  582. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
  583. <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
  584. <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
  585. <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  586. clocks = <&apb1_gates 5>;
  587. gpio-controller;
  588. interrupt-controller;
  589. #interrupt-cells = <3>;
  590. #gpio-cells = <3>;
  591. uart0_pins_a: uart0@0 {
  592. allwinner,pins = "PH20", "PH21";
  593. allwinner,function = "uart0";
  594. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  595. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  596. };
  597. i2c0_pins_a: i2c0@0 {
  598. allwinner,pins = "PH14", "PH15";
  599. allwinner,function = "i2c0";
  600. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  601. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  602. };
  603. i2c1_pins_a: i2c1@0 {
  604. allwinner,pins = "PH16", "PH17";
  605. allwinner,function = "i2c1";
  606. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  607. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  608. };
  609. i2c2_pins_a: i2c2@0 {
  610. allwinner,pins = "PH18", "PH19";
  611. allwinner,function = "i2c2";
  612. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  613. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  614. };
  615. mmc0_pins_a: mmc0@0 {
  616. allwinner,pins = "PF0", "PF1", "PF2",
  617. "PF3", "PF4", "PF5";
  618. allwinner,function = "mmc0";
  619. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  620. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  621. };
  622. mmc1_pins_a: mmc1@0 {
  623. allwinner,pins = "PG0", "PG1", "PG2", "PG3",
  624. "PG4", "PG5";
  625. allwinner,function = "mmc1";
  626. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  627. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  628. };
  629. mmc2_pins_a: mmc2@0 {
  630. allwinner,pins = "PC6", "PC7", "PC8", "PC9",
  631. "PC10", "PC11";
  632. allwinner,function = "mmc2";
  633. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  634. allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
  635. };
  636. mmc2_8bit_emmc_pins: mmc2@1 {
  637. allwinner,pins = "PC6", "PC7", "PC8", "PC9",
  638. "PC10", "PC11", "PC12",
  639. "PC13", "PC14", "PC15",
  640. "PC24";
  641. allwinner,function = "mmc2";
  642. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  643. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  644. };
  645. mmc3_8bit_emmc_pins: mmc3@1 {
  646. allwinner,pins = "PC6", "PC7", "PC8", "PC9",
  647. "PC10", "PC11", "PC12",
  648. "PC13", "PC14", "PC15",
  649. "PC24";
  650. allwinner,function = "mmc3";
  651. allwinner,drive = <SUN4I_PINCTRL_40_MA>;
  652. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  653. };
  654. gmac_pins_mii_a: gmac_mii@0 {
  655. allwinner,pins = "PA0", "PA1", "PA2", "PA3",
  656. "PA8", "PA9", "PA11",
  657. "PA12", "PA13", "PA14", "PA19",
  658. "PA20", "PA21", "PA22", "PA23",
  659. "PA24", "PA26", "PA27";
  660. allwinner,function = "gmac";
  661. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  662. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  663. };
  664. gmac_pins_gmii_a: gmac_gmii@0 {
  665. allwinner,pins = "PA0", "PA1", "PA2", "PA3",
  666. "PA4", "PA5", "PA6", "PA7",
  667. "PA8", "PA9", "PA10", "PA11",
  668. "PA12", "PA13", "PA14", "PA15",
  669. "PA16", "PA17", "PA18", "PA19",
  670. "PA20", "PA21", "PA22", "PA23",
  671. "PA24", "PA25", "PA26", "PA27";
  672. allwinner,function = "gmac";
  673. /*
  674. * data lines in GMII mode run at 125MHz and
  675. * might need a higher signal drive strength
  676. */
  677. allwinner,drive = <SUN4I_PINCTRL_30_MA>;
  678. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  679. };
  680. gmac_pins_rgmii_a: gmac_rgmii@0 {
  681. allwinner,pins = "PA0", "PA1", "PA2", "PA3",
  682. "PA9", "PA10", "PA11",
  683. "PA12", "PA13", "PA14", "PA19",
  684. "PA20", "PA25", "PA26", "PA27";
  685. allwinner,function = "gmac";
  686. /*
  687. * data lines in RGMII mode use DDR mode
  688. * and need a higher signal drive strength
  689. */
  690. allwinner,drive = <SUN4I_PINCTRL_40_MA>;
  691. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  692. };
  693. };
  694. ahb1_rst: reset@01c202c0 {
  695. #reset-cells = <1>;
  696. compatible = "allwinner,sun6i-a31-ahb1-reset";
  697. reg = <0x01c202c0 0xc>;
  698. };
  699. apb1_rst: reset@01c202d0 {
  700. #reset-cells = <1>;
  701. compatible = "allwinner,sun6i-a31-clock-reset";
  702. reg = <0x01c202d0 0x4>;
  703. };
  704. apb2_rst: reset@01c202d8 {
  705. #reset-cells = <1>;
  706. compatible = "allwinner,sun6i-a31-clock-reset";
  707. reg = <0x01c202d8 0x4>;
  708. };
  709. timer@01c20c00 {
  710. compatible = "allwinner,sun4i-a10-timer";
  711. reg = <0x01c20c00 0xa0>;
  712. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  713. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
  714. <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
  715. <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
  716. <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
  717. clocks = <&osc24M>;
  718. };
  719. wdt1: watchdog@01c20ca0 {
  720. compatible = "allwinner,sun6i-a31-wdt";
  721. reg = <0x01c20ca0 0x20>;
  722. };
  723. lradc: lradc@01c22800 {
  724. compatible = "allwinner,sun4i-a10-lradc-keys";
  725. reg = <0x01c22800 0x100>;
  726. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  727. status = "disabled";
  728. };
  729. rtp: rtp@01c25000 {
  730. compatible = "allwinner,sun6i-a31-ts";
  731. reg = <0x01c25000 0x100>;
  732. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  733. #thermal-sensor-cells = <0>;
  734. };
  735. uart0: serial@01c28000 {
  736. compatible = "snps,dw-apb-uart";
  737. reg = <0x01c28000 0x400>;
  738. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  739. reg-shift = <2>;
  740. reg-io-width = <4>;
  741. clocks = <&apb2_gates 16>;
  742. resets = <&apb2_rst 16>;
  743. dmas = <&dma 6>, <&dma 6>;
  744. dma-names = "rx", "tx";
  745. status = "disabled";
  746. };
  747. uart1: serial@01c28400 {
  748. compatible = "snps,dw-apb-uart";
  749. reg = <0x01c28400 0x400>;
  750. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  751. reg-shift = <2>;
  752. reg-io-width = <4>;
  753. clocks = <&apb2_gates 17>;
  754. resets = <&apb2_rst 17>;
  755. dmas = <&dma 7>, <&dma 7>;
  756. dma-names = "rx", "tx";
  757. status = "disabled";
  758. };
  759. uart2: serial@01c28800 {
  760. compatible = "snps,dw-apb-uart";
  761. reg = <0x01c28800 0x400>;
  762. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  763. reg-shift = <2>;
  764. reg-io-width = <4>;
  765. clocks = <&apb2_gates 18>;
  766. resets = <&apb2_rst 18>;
  767. dmas = <&dma 8>, <&dma 8>;
  768. dma-names = "rx", "tx";
  769. status = "disabled";
  770. };
  771. uart3: serial@01c28c00 {
  772. compatible = "snps,dw-apb-uart";
  773. reg = <0x01c28c00 0x400>;
  774. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  775. reg-shift = <2>;
  776. reg-io-width = <4>;
  777. clocks = <&apb2_gates 19>;
  778. resets = <&apb2_rst 19>;
  779. dmas = <&dma 9>, <&dma 9>;
  780. dma-names = "rx", "tx";
  781. status = "disabled";
  782. };
  783. uart4: serial@01c29000 {
  784. compatible = "snps,dw-apb-uart";
  785. reg = <0x01c29000 0x400>;
  786. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  787. reg-shift = <2>;
  788. reg-io-width = <4>;
  789. clocks = <&apb2_gates 20>;
  790. resets = <&apb2_rst 20>;
  791. dmas = <&dma 10>, <&dma 10>;
  792. dma-names = "rx", "tx";
  793. status = "disabled";
  794. };
  795. uart5: serial@01c29400 {
  796. compatible = "snps,dw-apb-uart";
  797. reg = <0x01c29400 0x400>;
  798. interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
  799. reg-shift = <2>;
  800. reg-io-width = <4>;
  801. clocks = <&apb2_gates 21>;
  802. resets = <&apb2_rst 21>;
  803. dmas = <&dma 22>, <&dma 22>;
  804. dma-names = "rx", "tx";
  805. status = "disabled";
  806. };
  807. i2c0: i2c@01c2ac00 {
  808. compatible = "allwinner,sun6i-a31-i2c";
  809. reg = <0x01c2ac00 0x400>;
  810. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  811. clocks = <&apb2_gates 0>;
  812. resets = <&apb2_rst 0>;
  813. status = "disabled";
  814. #address-cells = <1>;
  815. #size-cells = <0>;
  816. };
  817. i2c1: i2c@01c2b000 {
  818. compatible = "allwinner,sun6i-a31-i2c";
  819. reg = <0x01c2b000 0x400>;
  820. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  821. clocks = <&apb2_gates 1>;
  822. resets = <&apb2_rst 1>;
  823. status = "disabled";
  824. #address-cells = <1>;
  825. #size-cells = <0>;
  826. };
  827. i2c2: i2c@01c2b400 {
  828. compatible = "allwinner,sun6i-a31-i2c";
  829. reg = <0x01c2b400 0x400>;
  830. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  831. clocks = <&apb2_gates 2>;
  832. resets = <&apb2_rst 2>;
  833. status = "disabled";
  834. #address-cells = <1>;
  835. #size-cells = <0>;
  836. };
  837. i2c3: i2c@01c2b800 {
  838. compatible = "allwinner,sun6i-a31-i2c";
  839. reg = <0x01c2b800 0x400>;
  840. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
  841. clocks = <&apb2_gates 3>;
  842. resets = <&apb2_rst 3>;
  843. status = "disabled";
  844. #address-cells = <1>;
  845. #size-cells = <0>;
  846. };
  847. gmac: ethernet@01c30000 {
  848. compatible = "allwinner,sun7i-a20-gmac";
  849. reg = <0x01c30000 0x1054>;
  850. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  851. interrupt-names = "macirq";
  852. clocks = <&ahb1_gates 17>, <&gmac_tx_clk>;
  853. clock-names = "stmmaceth", "allwinner_gmac_tx";
  854. resets = <&ahb1_rst 17>;
  855. reset-names = "stmmaceth";
  856. snps,pbl = <2>;
  857. snps,fixed-burst;
  858. snps,force_sf_dma_mode;
  859. status = "disabled";
  860. #address-cells = <1>;
  861. #size-cells = <0>;
  862. };
  863. crypto: crypto-engine@01c15000 {
  864. compatible = "allwinner,sun4i-a10-crypto";
  865. reg = <0x01c15000 0x1000>;
  866. interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  867. clocks = <&ahb1_gates 5>, <&ss_clk>;
  868. clock-names = "ahb", "mod";
  869. resets = <&ahb1_rst 5>;
  870. reset-names = "ahb";
  871. };
  872. timer@01c60000 {
  873. compatible = "allwinner,sun6i-a31-hstimer",
  874. "allwinner,sun7i-a20-hstimer";
  875. reg = <0x01c60000 0x1000>;
  876. interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
  877. <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
  878. <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
  879. <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
  880. clocks = <&ahb1_gates 19>;
  881. resets = <&ahb1_rst 19>;
  882. };
  883. spi0: spi@01c68000 {
  884. compatible = "allwinner,sun6i-a31-spi";
  885. reg = <0x01c68000 0x1000>;
  886. interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  887. clocks = <&ahb1_gates 20>, <&spi0_clk>;
  888. clock-names = "ahb", "mod";
  889. dmas = <&dma 23>, <&dma 23>;
  890. dma-names = "rx", "tx";
  891. resets = <&ahb1_rst 20>;
  892. status = "disabled";
  893. };
  894. spi1: spi@01c69000 {
  895. compatible = "allwinner,sun6i-a31-spi";
  896. reg = <0x01c69000 0x1000>;
  897. interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
  898. clocks = <&ahb1_gates 21>, <&spi1_clk>;
  899. clock-names = "ahb", "mod";
  900. dmas = <&dma 24>, <&dma 24>;
  901. dma-names = "rx", "tx";
  902. resets = <&ahb1_rst 21>;
  903. status = "disabled";
  904. };
  905. spi2: spi@01c6a000 {
  906. compatible = "allwinner,sun6i-a31-spi";
  907. reg = <0x01c6a000 0x1000>;
  908. interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  909. clocks = <&ahb1_gates 22>, <&spi2_clk>;
  910. clock-names = "ahb", "mod";
  911. dmas = <&dma 25>, <&dma 25>;
  912. dma-names = "rx", "tx";
  913. resets = <&ahb1_rst 22>;
  914. status = "disabled";
  915. };
  916. spi3: spi@01c6b000 {
  917. compatible = "allwinner,sun6i-a31-spi";
  918. reg = <0x01c6b000 0x1000>;
  919. interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
  920. clocks = <&ahb1_gates 23>, <&spi3_clk>;
  921. clock-names = "ahb", "mod";
  922. dmas = <&dma 26>, <&dma 26>;
  923. dma-names = "rx", "tx";
  924. resets = <&ahb1_rst 23>;
  925. status = "disabled";
  926. };
  927. gic: interrupt-controller@01c81000 {
  928. compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
  929. reg = <0x01c81000 0x1000>,
  930. <0x01c82000 0x1000>,
  931. <0x01c84000 0x2000>,
  932. <0x01c86000 0x2000>;
  933. interrupt-controller;
  934. #interrupt-cells = <3>;
  935. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  936. };
  937. rtc: rtc@01f00000 {
  938. compatible = "allwinner,sun6i-a31-rtc";
  939. reg = <0x01f00000 0x54>;
  940. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  941. <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  942. };
  943. nmi_intc: interrupt-controller@01f00c0c {
  944. compatible = "allwinner,sun6i-a31-sc-nmi";
  945. interrupt-controller;
  946. #interrupt-cells = <2>;
  947. reg = <0x01f00c0c 0x38>;
  948. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  949. };
  950. prcm@01f01400 {
  951. compatible = "allwinner,sun6i-a31-prcm";
  952. reg = <0x01f01400 0x200>;
  953. ar100: ar100_clk {
  954. compatible = "allwinner,sun6i-a31-ar100-clk";
  955. #clock-cells = <0>;
  956. clocks = <&osc32k>, <&osc24M>, <&pll6 0>,
  957. <&pll6 0>;
  958. clock-output-names = "ar100";
  959. };
  960. ahb0: ahb0_clk {
  961. compatible = "fixed-factor-clock";
  962. #clock-cells = <0>;
  963. clock-div = <1>;
  964. clock-mult = <1>;
  965. clocks = <&ar100>;
  966. clock-output-names = "ahb0";
  967. };
  968. apb0: apb0_clk {
  969. compatible = "allwinner,sun6i-a31-apb0-clk";
  970. #clock-cells = <0>;
  971. clocks = <&ahb0>;
  972. clock-output-names = "apb0";
  973. };
  974. apb0_gates: apb0_gates_clk {
  975. compatible = "allwinner,sun6i-a31-apb0-gates-clk";
  976. #clock-cells = <1>;
  977. clocks = <&apb0>;
  978. clock-output-names = "apb0_pio", "apb0_ir",
  979. "apb0_timer", "apb0_p2wi",
  980. "apb0_uart", "apb0_1wire",
  981. "apb0_i2c";
  982. };
  983. ir_clk: ir_clk {
  984. #clock-cells = <0>;
  985. compatible = "allwinner,sun4i-a10-mod0-clk";
  986. clocks = <&osc32k>, <&osc24M>;
  987. clock-output-names = "ir";
  988. };
  989. apb0_rst: apb0_rst {
  990. compatible = "allwinner,sun6i-a31-clock-reset";
  991. #reset-cells = <1>;
  992. };
  993. };
  994. cpucfg@01f01c00 {
  995. compatible = "allwinner,sun6i-a31-cpuconfig";
  996. reg = <0x01f01c00 0x300>;
  997. };
  998. ir: ir@01f02000 {
  999. compatible = "allwinner,sun5i-a13-ir";
  1000. clocks = <&apb0_gates 1>, <&ir_clk>;
  1001. clock-names = "apb", "ir";
  1002. resets = <&apb0_rst 1>;
  1003. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  1004. reg = <0x01f02000 0x40>;
  1005. status = "disabled";
  1006. };
  1007. r_pio: pinctrl@01f02c00 {
  1008. compatible = "allwinner,sun6i-a31-r-pinctrl";
  1009. reg = <0x01f02c00 0x400>;
  1010. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
  1011. <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
  1012. clocks = <&apb0_gates 0>;
  1013. resets = <&apb0_rst 0>;
  1014. gpio-controller;
  1015. interrupt-controller;
  1016. #interrupt-cells = <3>;
  1017. #size-cells = <0>;
  1018. #gpio-cells = <3>;
  1019. ir_pins_a: ir@0 {
  1020. allwinner,pins = "PL4";
  1021. allwinner,function = "s_ir";
  1022. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  1023. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  1024. };
  1025. p2wi_pins: p2wi {
  1026. allwinner,pins = "PL0", "PL1";
  1027. allwinner,function = "s_p2wi";
  1028. allwinner,drive = <SUN4I_PINCTRL_10_MA>;
  1029. allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
  1030. };
  1031. };
  1032. p2wi: i2c@01f03400 {
  1033. compatible = "allwinner,sun6i-a31-p2wi";
  1034. reg = <0x01f03400 0x400>;
  1035. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  1036. clocks = <&apb0_gates 3>;
  1037. clock-frequency = <100000>;
  1038. resets = <&apb0_rst 3>;
  1039. pinctrl-names = "default";
  1040. pinctrl-0 = <&p2wi_pins>;
  1041. status = "disabled";
  1042. #address-cells = <1>;
  1043. #size-cells = <0>;
  1044. };
  1045. };
  1046. };