sun9i-a80.dtsi 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253
  1. /*
  2. * Copyright 2014 Chen-Yu Tsai
  3. *
  4. * Chen-Yu Tsai <[email protected]>
  5. *
  6. * This file is dual-licensed: you can use it either under the terms
  7. * of the GPL or the X11 license, at your option. Note that this dual
  8. * licensing only applies to this file, and not this project as a
  9. * whole.
  10. *
  11. * a) This file is free software; you can redistribute it and/or
  12. * modify it under the terms of the GNU General Public License as
  13. * published by the Free Software Foundation; either version 2 of the
  14. * License, or (at your option) any later version.
  15. *
  16. * This file is distributed in the hope that it will be useful,
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. * GNU General Public License for more details.
  20. *
  21. * Or, alternatively,
  22. *
  23. * b) Permission is hereby granted, free of charge, to any person
  24. * obtaining a copy of this software and associated documentation
  25. * files (the "Software"), to deal in the Software without
  26. * restriction, including without limitation the rights to use,
  27. * copy, modify, merge, publish, distribute, sublicense, and/or
  28. * sell copies of the Software, and to permit persons to whom the
  29. * Software is furnished to do so, subject to the following
  30. * conditions:
  31. *
  32. * The above copyright notice and this permission notice shall be
  33. * included in all copies or substantial portions of the Software.
  34. *
  35. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  36. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  37. * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  38. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  39. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  40. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  41. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  42. * OTHER DEALINGS IN THE SOFTWARE.
  43. */
  44. #include <dt-bindings/interrupt-controller/arm-gic.h>
  45. #include <dt-bindings/clock/sun9i-a80-ccu.h>
  46. #include <dt-bindings/clock/sun9i-a80-de.h>
  47. #include <dt-bindings/clock/sun9i-a80-usb.h>
  48. #include <dt-bindings/reset/sun9i-a80-ccu.h>
  49. #include <dt-bindings/reset/sun9i-a80-de.h>
  50. #include <dt-bindings/reset/sun9i-a80-usb.h>
  51. / {
  52. #address-cells = <2>;
  53. #size-cells = <2>;
  54. interrupt-parent = <&gic>;
  55. aliases {
  56. ethernet0 = &gmac;
  57. };
  58. cpus {
  59. #address-cells = <1>;
  60. #size-cells = <0>;
  61. cpu0: cpu@0 {
  62. compatible = "arm,cortex-a7";
  63. device_type = "cpu";
  64. cci-control-port = <&cci_control0>;
  65. clock-frequency = <12000000>;
  66. enable-method = "allwinner,sun9i-a80-smp";
  67. reg = <0x0>;
  68. };
  69. cpu1: cpu@1 {
  70. compatible = "arm,cortex-a7";
  71. device_type = "cpu";
  72. cci-control-port = <&cci_control0>;
  73. clock-frequency = <12000000>;
  74. enable-method = "allwinner,sun9i-a80-smp";
  75. reg = <0x1>;
  76. };
  77. cpu2: cpu@2 {
  78. compatible = "arm,cortex-a7";
  79. device_type = "cpu";
  80. cci-control-port = <&cci_control0>;
  81. clock-frequency = <12000000>;
  82. enable-method = "allwinner,sun9i-a80-smp";
  83. reg = <0x2>;
  84. };
  85. cpu3: cpu@3 {
  86. compatible = "arm,cortex-a7";
  87. device_type = "cpu";
  88. cci-control-port = <&cci_control0>;
  89. clock-frequency = <12000000>;
  90. enable-method = "allwinner,sun9i-a80-smp";
  91. reg = <0x3>;
  92. };
  93. cpu4: cpu@100 {
  94. compatible = "arm,cortex-a15";
  95. device_type = "cpu";
  96. cci-control-port = <&cci_control1>;
  97. clock-frequency = <18000000>;
  98. enable-method = "allwinner,sun9i-a80-smp";
  99. reg = <0x100>;
  100. };
  101. cpu5: cpu@101 {
  102. compatible = "arm,cortex-a15";
  103. device_type = "cpu";
  104. cci-control-port = <&cci_control1>;
  105. clock-frequency = <18000000>;
  106. enable-method = "allwinner,sun9i-a80-smp";
  107. reg = <0x101>;
  108. };
  109. cpu6: cpu@102 {
  110. compatible = "arm,cortex-a15";
  111. device_type = "cpu";
  112. cci-control-port = <&cci_control1>;
  113. clock-frequency = <18000000>;
  114. enable-method = "allwinner,sun9i-a80-smp";
  115. reg = <0x102>;
  116. };
  117. cpu7: cpu@103 {
  118. compatible = "arm,cortex-a15";
  119. device_type = "cpu";
  120. cci-control-port = <&cci_control1>;
  121. clock-frequency = <18000000>;
  122. enable-method = "allwinner,sun9i-a80-smp";
  123. reg = <0x103>;
  124. };
  125. };
  126. timer {
  127. compatible = "arm,armv7-timer";
  128. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  129. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  130. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  131. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  132. clock-frequency = <24000000>;
  133. arm,cpu-registers-not-fw-configured;
  134. };
  135. clocks {
  136. #address-cells = <1>;
  137. #size-cells = <1>;
  138. /*
  139. * map 64 bit address range down to 32 bits,
  140. * as the peripherals are all under 512MB.
  141. */
  142. ranges = <0 0 0 0x20000000>;
  143. /*
  144. * This clock is actually configurable from the PRCM address
  145. * space. The external 24M oscillator can be turned off, and
  146. * the clock switched to an internal 16M RC oscillator. Under
  147. * normal operation there's no reason to do this, and the
  148. * default is to use the external good one, so just model this
  149. * as a fixed clock. Also it is not entirely clear if the
  150. * osc24M mux in the PRCM affects the entire clock tree, which
  151. * would also throw all the PLL clock rates off, or just the
  152. * downstream clocks in the PRCM.
  153. */
  154. osc24M: clk-24M {
  155. #clock-cells = <0>;
  156. compatible = "fixed-clock";
  157. clock-frequency = <24000000>;
  158. clock-output-names = "osc24M";
  159. };
  160. /*
  161. * The 32k clock is from an external source, normally the
  162. * AC100 codec/RTC chip. This serves as a placeholder for
  163. * board dts files to specify the source.
  164. */
  165. osc32k: clk-32k {
  166. #clock-cells = <0>;
  167. compatible = "fixed-factor-clock";
  168. clock-div = <1>;
  169. clock-mult = <1>;
  170. clock-output-names = "osc32k";
  171. };
  172. /*
  173. * The following two are dummy clocks, placeholders
  174. * used in the gmac_tx clock. The gmac driver will
  175. * choose one parent depending on the PHY interface
  176. * mode, using clk_set_rate auto-reparenting.
  177. *
  178. * The actual TX clock rate is not controlled by the
  179. * gmac_tx clock.
  180. */
  181. mii_phy_tx_clk: mii_phy_tx_clk {
  182. #clock-cells = <0>;
  183. compatible = "fixed-clock";
  184. clock-frequency = <25000000>;
  185. clock-output-names = "mii_phy_tx";
  186. };
  187. gmac_int_tx_clk: gmac_int_tx_clk {
  188. #clock-cells = <0>;
  189. compatible = "fixed-clock";
  190. clock-frequency = <125000000>;
  191. clock-output-names = "gmac_int_tx";
  192. };
  193. gmac_tx_clk: clk@800030 {
  194. #clock-cells = <0>;
  195. compatible = "allwinner,sun7i-a20-gmac-clk";
  196. reg = <0x00800030 0x4>;
  197. clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
  198. clock-output-names = "gmac_tx";
  199. };
  200. cpus_clk: clk@8001410 {
  201. compatible = "allwinner,sun9i-a80-cpus-clk";
  202. reg = <0x08001410 0x4>;
  203. #clock-cells = <0>;
  204. clocks = <&osc32k>, <&osc24M>,
  205. <&ccu CLK_PLL_PERIPH0>,
  206. <&ccu CLK_PLL_AUDIO>;
  207. clock-output-names = "cpus";
  208. };
  209. ahbs: clk-ahbs {
  210. compatible = "fixed-factor-clock";
  211. #clock-cells = <0>;
  212. clock-div = <1>;
  213. clock-mult = <1>;
  214. clocks = <&cpus_clk>;
  215. clock-output-names = "ahbs";
  216. };
  217. apbs: clk@800141c {
  218. compatible = "allwinner,sun8i-a23-apb0-clk";
  219. reg = <0x0800141c 0x4>;
  220. #clock-cells = <0>;
  221. clocks = <&ahbs>;
  222. clock-output-names = "apbs";
  223. };
  224. apbs_gates: clk@8001428 {
  225. compatible = "allwinner,sun9i-a80-apbs-gates-clk";
  226. reg = <0x08001428 0x4>;
  227. #clock-cells = <1>;
  228. clocks = <&apbs>;
  229. clock-indices = <0>, <1>,
  230. <2>, <3>,
  231. <4>, <5>,
  232. <6>, <7>,
  233. <12>, <13>,
  234. <16>, <17>,
  235. <18>, <20>;
  236. clock-output-names = "apbs_pio", "apbs_ir",
  237. "apbs_timer", "apbs_rsb",
  238. "apbs_uart", "apbs_1wire",
  239. "apbs_i2c0", "apbs_i2c1",
  240. "apbs_ps2_0", "apbs_ps2_1",
  241. "apbs_dma", "apbs_i2s0",
  242. "apbs_i2s1", "apbs_twd";
  243. };
  244. r_1wire_clk: clk@8001450 {
  245. reg = <0x08001450 0x4>;
  246. #clock-cells = <0>;
  247. compatible = "allwinner,sun4i-a10-mod0-clk";
  248. clocks = <&osc32k>, <&osc24M>;
  249. clock-output-names = "r_1wire";
  250. };
  251. r_ir_clk: clk@8001454 {
  252. reg = <0x08001454 0x4>;
  253. #clock-cells = <0>;
  254. compatible = "allwinner,sun4i-a10-mod0-clk";
  255. clocks = <&osc32k>, <&osc24M>;
  256. clock-output-names = "r_ir";
  257. };
  258. };
  259. de: display-engine {
  260. compatible = "allwinner,sun9i-a80-display-engine";
  261. allwinner,pipelines = <&fe0>, <&fe1>;
  262. status = "disabled";
  263. };
  264. soc@20000 {
  265. compatible = "simple-bus";
  266. #address-cells = <1>;
  267. #size-cells = <1>;
  268. /*
  269. * map 64 bit address range down to 32 bits,
  270. * as the peripherals are all under 512MB.
  271. */
  272. ranges = <0 0 0 0x20000000>;
  273. sram_b: sram@20000 {
  274. /* 256 KiB secure SRAM at 0x20000 */
  275. compatible = "mmio-sram";
  276. reg = <0x00020000 0x40000>;
  277. #address-cells = <1>;
  278. #size-cells = <1>;
  279. ranges = <0 0x00020000 0x40000>;
  280. smp-sram@1000 {
  281. /*
  282. * This is checked by BROM to determine if
  283. * cpu0 should jump to SMP entry vector
  284. */
  285. compatible = "allwinner,sun9i-a80-smp-sram";
  286. reg = <0x1000 0x8>;
  287. };
  288. };
  289. gmac: ethernet@830000 {
  290. compatible = "allwinner,sun7i-a20-gmac";
  291. reg = <0x00830000 0x1054>;
  292. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  293. interrupt-names = "macirq";
  294. clocks = <&ccu CLK_BUS_GMAC>, <&gmac_tx_clk>;
  295. clock-names = "stmmaceth", "allwinner_gmac_tx";
  296. resets = <&ccu RST_BUS_GMAC>;
  297. reset-names = "stmmaceth";
  298. snps,pbl = <2>;
  299. snps,fixed-burst;
  300. snps,force_sf_dma_mode;
  301. status = "disabled";
  302. mdio: mdio {
  303. compatible = "snps,dwmac-mdio";
  304. #address-cells = <1>;
  305. #size-cells = <0>;
  306. };
  307. };
  308. ehci0: usb@a00000 {
  309. compatible = "allwinner,sun9i-a80-ehci", "generic-ehci";
  310. reg = <0x00a00000 0x100>;
  311. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  312. clocks = <&usb_clocks CLK_BUS_HCI0>;
  313. resets = <&usb_clocks RST_USB0_HCI>;
  314. phys = <&usbphy1>;
  315. phy-names = "usb";
  316. status = "disabled";
  317. };
  318. ohci0: usb@a00400 {
  319. compatible = "allwinner,sun9i-a80-ohci", "generic-ohci";
  320. reg = <0x00a00400 0x100>;
  321. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  322. clocks = <&usb_clocks CLK_BUS_HCI0>,
  323. <&usb_clocks CLK_USB_OHCI0>;
  324. resets = <&usb_clocks RST_USB0_HCI>;
  325. phys = <&usbphy1>;
  326. phy-names = "usb";
  327. status = "disabled";
  328. };
  329. usbphy1: phy@a00800 {
  330. compatible = "allwinner,sun9i-a80-usb-phy";
  331. reg = <0x00a00800 0x4>;
  332. clocks = <&usb_clocks CLK_USB0_PHY>;
  333. clock-names = "phy";
  334. resets = <&usb_clocks RST_USB0_PHY>;
  335. reset-names = "phy";
  336. status = "disabled";
  337. #phy-cells = <0>;
  338. };
  339. ehci1: usb@a01000 {
  340. compatible = "allwinner,sun9i-a80-ehci", "generic-ehci";
  341. reg = <0x00a01000 0x100>;
  342. interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  343. clocks = <&usb_clocks CLK_BUS_HCI1>;
  344. resets = <&usb_clocks RST_USB1_HCI>;
  345. phys = <&usbphy2>;
  346. phy-names = "usb";
  347. status = "disabled";
  348. };
  349. usbphy2: phy@a01800 {
  350. compatible = "allwinner,sun9i-a80-usb-phy";
  351. reg = <0x00a01800 0x4>;
  352. clocks = <&usb_clocks CLK_USB1_PHY>,
  353. <&usb_clocks CLK_USB_HSIC>,
  354. <&usb_clocks CLK_USB1_HSIC>;
  355. clock-names = "phy",
  356. "hsic_12M",
  357. "hsic_480M";
  358. resets = <&usb_clocks RST_USB1_PHY>,
  359. <&usb_clocks RST_USB1_HSIC>;
  360. reset-names = "phy",
  361. "hsic";
  362. status = "disabled";
  363. #phy-cells = <0>;
  364. /* usb1 is always used with HSIC */
  365. phy_type = "hsic";
  366. };
  367. ehci2: usb@a02000 {
  368. compatible = "allwinner,sun9i-a80-ehci", "generic-ehci";
  369. reg = <0x00a02000 0x100>;
  370. interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
  371. clocks = <&usb_clocks CLK_BUS_HCI2>;
  372. resets = <&usb_clocks RST_USB2_HCI>;
  373. phys = <&usbphy3>;
  374. phy-names = "usb";
  375. status = "disabled";
  376. };
  377. ohci2: usb@a02400 {
  378. compatible = "allwinner,sun9i-a80-ohci", "generic-ohci";
  379. reg = <0x00a02400 0x100>;
  380. interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
  381. clocks = <&usb_clocks CLK_BUS_HCI2>,
  382. <&usb_clocks CLK_USB_OHCI2>;
  383. resets = <&usb_clocks RST_USB2_HCI>;
  384. phys = <&usbphy3>;
  385. phy-names = "usb";
  386. status = "disabled";
  387. };
  388. usbphy3: phy@a02800 {
  389. compatible = "allwinner,sun9i-a80-usb-phy";
  390. reg = <0x00a02800 0x4>;
  391. clocks = <&usb_clocks CLK_USB2_PHY>,
  392. <&usb_clocks CLK_USB_HSIC>,
  393. <&usb_clocks CLK_USB2_HSIC>;
  394. clock-names = "phy",
  395. "hsic_12M",
  396. "hsic_480M";
  397. resets = <&usb_clocks RST_USB2_PHY>,
  398. <&usb_clocks RST_USB2_HSIC>;
  399. reset-names = "phy",
  400. "hsic";
  401. status = "disabled";
  402. #phy-cells = <0>;
  403. };
  404. usb_clocks: clock@a08000 {
  405. compatible = "allwinner,sun9i-a80-usb-clks";
  406. reg = <0x00a08000 0x8>;
  407. clocks = <&ccu CLK_BUS_USB>, <&osc24M>;
  408. clock-names = "bus", "hosc";
  409. #clock-cells = <1>;
  410. #reset-cells = <1>;
  411. };
  412. cpucfg@1700000 {
  413. compatible = "allwinner,sun9i-a80-cpucfg";
  414. reg = <0x01700000 0x100>;
  415. };
  416. crypto: crypto@1c02000 {
  417. compatible = "allwinner,sun9i-a80-crypto";
  418. reg = <0x01c02000 0x1000>;
  419. interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  420. resets = <&ccu RST_BUS_SS>;
  421. clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>;
  422. clock-names = "bus", "mod";
  423. };
  424. mmc0: mmc@1c0f000 {
  425. compatible = "allwinner,sun9i-a80-mmc";
  426. reg = <0x01c0f000 0x1000>;
  427. clocks = <&mmc_config_clk 0>, <&ccu CLK_MMC0>,
  428. <&ccu CLK_MMC0_OUTPUT>,
  429. <&ccu CLK_MMC0_SAMPLE>;
  430. clock-names = "ahb", "mmc", "output", "sample";
  431. resets = <&mmc_config_clk 0>;
  432. reset-names = "ahb";
  433. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  434. status = "disabled";
  435. #address-cells = <1>;
  436. #size-cells = <0>;
  437. };
  438. mmc1: mmc@1c10000 {
  439. compatible = "allwinner,sun9i-a80-mmc";
  440. reg = <0x01c10000 0x1000>;
  441. clocks = <&mmc_config_clk 1>, <&ccu CLK_MMC1>,
  442. <&ccu CLK_MMC1_OUTPUT>,
  443. <&ccu CLK_MMC1_SAMPLE>;
  444. clock-names = "ahb", "mmc", "output", "sample";
  445. resets = <&mmc_config_clk 1>;
  446. reset-names = "ahb";
  447. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  448. status = "disabled";
  449. #address-cells = <1>;
  450. #size-cells = <0>;
  451. };
  452. mmc2: mmc@1c11000 {
  453. compatible = "allwinner,sun9i-a80-mmc";
  454. reg = <0x01c11000 0x1000>;
  455. clocks = <&mmc_config_clk 2>, <&ccu CLK_MMC2>,
  456. <&ccu CLK_MMC2_OUTPUT>,
  457. <&ccu CLK_MMC2_SAMPLE>;
  458. clock-names = "ahb", "mmc", "output", "sample";
  459. resets = <&mmc_config_clk 2>;
  460. reset-names = "ahb";
  461. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  462. status = "disabled";
  463. #address-cells = <1>;
  464. #size-cells = <0>;
  465. };
  466. mmc3: mmc@1c12000 {
  467. compatible = "allwinner,sun9i-a80-mmc";
  468. reg = <0x01c12000 0x1000>;
  469. clocks = <&mmc_config_clk 3>, <&ccu CLK_MMC3>,
  470. <&ccu CLK_MMC3_OUTPUT>,
  471. <&ccu CLK_MMC3_SAMPLE>;
  472. clock-names = "ahb", "mmc", "output", "sample";
  473. resets = <&mmc_config_clk 3>;
  474. reset-names = "ahb";
  475. interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
  476. status = "disabled";
  477. #address-cells = <1>;
  478. #size-cells = <0>;
  479. };
  480. mmc_config_clk: clk@1c13000 {
  481. compatible = "allwinner,sun9i-a80-mmc-config-clk";
  482. reg = <0x01c13000 0x10>;
  483. clocks = <&ccu CLK_BUS_MMC>;
  484. resets = <&ccu RST_BUS_MMC>;
  485. #clock-cells = <1>;
  486. #reset-cells = <1>;
  487. clock-output-names = "mmc0_config", "mmc1_config",
  488. "mmc2_config", "mmc3_config";
  489. };
  490. gic: interrupt-controller@1c41000 {
  491. compatible = "arm,gic-400";
  492. reg = <0x01c41000 0x1000>,
  493. <0x01c42000 0x2000>,
  494. <0x01c44000 0x2000>,
  495. <0x01c46000 0x2000>;
  496. interrupt-controller;
  497. #interrupt-cells = <3>;
  498. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  499. };
  500. cci: cci@1c90000 {
  501. compatible = "arm,cci-400";
  502. #address-cells = <1>;
  503. #size-cells = <1>;
  504. reg = <0x01c90000 0x1000>;
  505. ranges = <0x0 0x01c90000 0x10000>;
  506. cci_control0: slave-if@4000 {
  507. compatible = "arm,cci-400-ctrl-if";
  508. interface-type = "ace";
  509. reg = <0x4000 0x1000>;
  510. };
  511. cci_control1: slave-if@5000 {
  512. compatible = "arm,cci-400-ctrl-if";
  513. interface-type = "ace";
  514. reg = <0x5000 0x1000>;
  515. };
  516. pmu@9000 {
  517. compatible = "arm,cci-400-pmu,r1";
  518. reg = <0x9000 0x5000>;
  519. interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
  520. <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
  521. <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
  522. <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
  523. <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
  524. };
  525. };
  526. de_clocks: clock@3000000 {
  527. compatible = "allwinner,sun9i-a80-de-clks";
  528. reg = <0x03000000 0x30>;
  529. clocks = <&ccu CLK_DE>,
  530. <&ccu CLK_SDRAM>,
  531. <&ccu CLK_BUS_DE>;
  532. clock-names = "mod",
  533. "dram",
  534. "bus";
  535. resets = <&ccu RST_BUS_DE>;
  536. #clock-cells = <1>;
  537. #reset-cells = <1>;
  538. };
  539. fe0: display-frontend@3100000 {
  540. compatible = "allwinner,sun9i-a80-display-frontend";
  541. reg = <0x03100000 0x40000>;
  542. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  543. clocks = <&de_clocks CLK_BUS_FE0>, <&de_clocks CLK_FE0>,
  544. <&de_clocks CLK_DRAM_FE0>;
  545. clock-names = "ahb", "mod",
  546. "ram";
  547. resets = <&de_clocks RST_FE0>;
  548. ports {
  549. #address-cells = <1>;
  550. #size-cells = <0>;
  551. fe0_out: port@1 {
  552. reg = <1>;
  553. fe0_out_deu0: endpoint {
  554. remote-endpoint = <&deu0_in_fe0>;
  555. };
  556. };
  557. };
  558. };
  559. fe1: display-frontend@3140000 {
  560. compatible = "allwinner,sun9i-a80-display-frontend";
  561. reg = <0x03140000 0x40000>;
  562. interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
  563. clocks = <&de_clocks CLK_BUS_FE1>, <&de_clocks CLK_FE1>,
  564. <&de_clocks CLK_DRAM_FE1>;
  565. clock-names = "ahb", "mod",
  566. "ram";
  567. resets = <&de_clocks RST_FE0>;
  568. ports {
  569. #address-cells = <1>;
  570. #size-cells = <0>;
  571. fe1_out: port@1 {
  572. reg = <1>;
  573. fe1_out_deu1: endpoint {
  574. remote-endpoint = <&deu1_in_fe1>;
  575. };
  576. };
  577. };
  578. };
  579. be0: display-backend@3200000 {
  580. compatible = "allwinner,sun9i-a80-display-backend";
  581. reg = <0x03200000 0x40000>;
  582. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  583. clocks = <&de_clocks CLK_BUS_BE0>, <&de_clocks CLK_BE0>,
  584. <&de_clocks CLK_DRAM_BE0>;
  585. clock-names = "ahb", "mod",
  586. "ram";
  587. resets = <&de_clocks RST_BE0>;
  588. ports {
  589. #address-cells = <1>;
  590. #size-cells = <0>;
  591. be0_in: port@0 {
  592. #address-cells = <1>;
  593. #size-cells = <0>;
  594. reg = <0>;
  595. be0_in_deu0: endpoint@0 {
  596. reg = <0>;
  597. remote-endpoint = <&deu0_out_be0>;
  598. };
  599. be0_in_deu1: endpoint@1 {
  600. reg = <1>;
  601. remote-endpoint = <&deu1_out_be0>;
  602. };
  603. };
  604. be0_out: port@1 {
  605. reg = <1>;
  606. be0_out_drc0: endpoint {
  607. remote-endpoint = <&drc0_in_be0>;
  608. };
  609. };
  610. };
  611. };
  612. be1: display-backend@3240000 {
  613. compatible = "allwinner,sun9i-a80-display-backend";
  614. reg = <0x03240000 0x40000>;
  615. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  616. clocks = <&de_clocks CLK_BUS_BE1>, <&de_clocks CLK_BE1>,
  617. <&de_clocks CLK_DRAM_BE1>;
  618. clock-names = "ahb", "mod",
  619. "ram";
  620. resets = <&de_clocks RST_BE1>;
  621. ports {
  622. #address-cells = <1>;
  623. #size-cells = <0>;
  624. be1_in: port@0 {
  625. #address-cells = <1>;
  626. #size-cells = <0>;
  627. reg = <0>;
  628. be1_in_deu0: endpoint@0 {
  629. reg = <0>;
  630. remote-endpoint = <&deu0_out_be1>;
  631. };
  632. be1_in_deu1: endpoint@1 {
  633. reg = <1>;
  634. remote-endpoint = <&deu1_out_be1>;
  635. };
  636. };
  637. be1_out: port@1 {
  638. reg = <1>;
  639. be1_out_drc1: endpoint {
  640. remote-endpoint = <&drc1_in_be1>;
  641. };
  642. };
  643. };
  644. };
  645. deu0: deu@3300000 {
  646. compatible = "allwinner,sun9i-a80-deu";
  647. reg = <0x03300000 0x40000>;
  648. interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
  649. clocks = <&de_clocks CLK_BUS_DEU0>,
  650. <&de_clocks CLK_IEP_DEU0>,
  651. <&de_clocks CLK_DRAM_DEU0>;
  652. clock-names = "ahb",
  653. "mod",
  654. "ram";
  655. resets = <&de_clocks RST_DEU0>;
  656. ports {
  657. #address-cells = <1>;
  658. #size-cells = <0>;
  659. deu0_in: port@0 {
  660. reg = <0>;
  661. deu0_in_fe0: endpoint {
  662. remote-endpoint = <&fe0_out_deu0>;
  663. };
  664. };
  665. deu0_out: port@1 {
  666. #address-cells = <1>;
  667. #size-cells = <0>;
  668. reg = <1>;
  669. deu0_out_be0: endpoint@0 {
  670. reg = <0>;
  671. remote-endpoint = <&be0_in_deu0>;
  672. };
  673. deu0_out_be1: endpoint@1 {
  674. reg = <1>;
  675. remote-endpoint = <&be1_in_deu0>;
  676. };
  677. };
  678. };
  679. };
  680. deu1: deu@3340000 {
  681. compatible = "allwinner,sun9i-a80-deu";
  682. reg = <0x03340000 0x40000>;
  683. interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
  684. clocks = <&de_clocks CLK_BUS_DEU1>,
  685. <&de_clocks CLK_IEP_DEU1>,
  686. <&de_clocks CLK_DRAM_DEU1>;
  687. clock-names = "ahb",
  688. "mod",
  689. "ram";
  690. resets = <&de_clocks RST_DEU1>;
  691. ports {
  692. #address-cells = <1>;
  693. #size-cells = <0>;
  694. deu1_in: port@0 {
  695. reg = <0>;
  696. deu1_in_fe1: endpoint {
  697. remote-endpoint = <&fe1_out_deu1>;
  698. };
  699. };
  700. deu1_out: port@1 {
  701. #address-cells = <1>;
  702. #size-cells = <0>;
  703. reg = <1>;
  704. deu1_out_be0: endpoint@0 {
  705. reg = <0>;
  706. remote-endpoint = <&be0_in_deu1>;
  707. };
  708. deu1_out_be1: endpoint@1 {
  709. reg = <1>;
  710. remote-endpoint = <&be1_in_deu1>;
  711. };
  712. };
  713. };
  714. };
  715. drc0: drc@3400000 {
  716. compatible = "allwinner,sun9i-a80-drc";
  717. reg = <0x03400000 0x40000>;
  718. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  719. clocks = <&de_clocks CLK_BUS_DRC0>,
  720. <&de_clocks CLK_IEP_DRC0>,
  721. <&de_clocks CLK_DRAM_DRC0>;
  722. clock-names = "ahb",
  723. "mod",
  724. "ram";
  725. resets = <&de_clocks RST_DRC0>;
  726. ports {
  727. #address-cells = <1>;
  728. #size-cells = <0>;
  729. drc0_in: port@0 {
  730. reg = <0>;
  731. drc0_in_be0: endpoint {
  732. remote-endpoint = <&be0_out_drc0>;
  733. };
  734. };
  735. drc0_out: port@1 {
  736. reg = <1>;
  737. drc0_out_tcon0: endpoint {
  738. remote-endpoint = <&tcon0_in_drc0>;
  739. };
  740. };
  741. };
  742. };
  743. drc1: drc@3440000 {
  744. compatible = "allwinner,sun9i-a80-drc";
  745. reg = <0x03440000 0x40000>;
  746. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  747. clocks = <&de_clocks CLK_BUS_DRC1>,
  748. <&de_clocks CLK_IEP_DRC1>,
  749. <&de_clocks CLK_DRAM_DRC1>;
  750. clock-names = "ahb",
  751. "mod",
  752. "ram";
  753. resets = <&de_clocks RST_DRC1>;
  754. ports {
  755. #address-cells = <1>;
  756. #size-cells = <0>;
  757. drc1_in: port@0 {
  758. reg = <0>;
  759. drc1_in_be1: endpoint {
  760. remote-endpoint = <&be1_out_drc1>;
  761. };
  762. };
  763. drc1_out: port@1 {
  764. reg = <1>;
  765. drc1_out_tcon1: endpoint {
  766. remote-endpoint = <&tcon1_in_drc1>;
  767. };
  768. };
  769. };
  770. };
  771. tcon0: lcd-controller@3c00000 {
  772. compatible = "allwinner,sun9i-a80-tcon-lcd";
  773. reg = <0x03c00000 0x10000>;
  774. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  775. clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
  776. clock-names = "ahb", "tcon-ch0";
  777. resets = <&ccu RST_BUS_LCD0>,
  778. <&ccu RST_BUS_EDP>,
  779. <&ccu RST_BUS_LVDS>;
  780. reset-names = "lcd",
  781. "edp",
  782. "lvds";
  783. clock-output-names = "tcon0-pixel-clock";
  784. #clock-cells = <0>;
  785. ports {
  786. #address-cells = <1>;
  787. #size-cells = <0>;
  788. tcon0_in: port@0 {
  789. reg = <0>;
  790. tcon0_in_drc0: endpoint {
  791. remote-endpoint = <&drc0_out_tcon0>;
  792. };
  793. };
  794. tcon0_out: port@1 {
  795. reg = <1>;
  796. };
  797. };
  798. };
  799. tcon1: lcd-controller@3c10000 {
  800. compatible = "allwinner,sun9i-a80-tcon-tv";
  801. reg = <0x03c10000 0x10000>;
  802. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  803. clocks = <&ccu CLK_BUS_LCD1>, <&ccu CLK_LCD1>;
  804. clock-names = "ahb", "tcon-ch1";
  805. resets = <&ccu RST_BUS_LCD1>, <&ccu RST_BUS_EDP>;
  806. reset-names = "lcd", "edp";
  807. ports {
  808. #address-cells = <1>;
  809. #size-cells = <0>;
  810. tcon1_in: port@0 {
  811. reg = <0>;
  812. tcon1_in_drc1: endpoint {
  813. remote-endpoint = <&drc1_out_tcon1>;
  814. };
  815. };
  816. tcon1_out: port@1 {
  817. reg = <1>;
  818. };
  819. };
  820. };
  821. ccu: clock@6000000 {
  822. compatible = "allwinner,sun9i-a80-ccu";
  823. reg = <0x06000000 0x800>;
  824. clocks = <&osc24M>, <&osc32k>;
  825. clock-names = "hosc", "losc";
  826. #clock-cells = <1>;
  827. #reset-cells = <1>;
  828. };
  829. timer@6000c00 {
  830. compatible = "allwinner,sun4i-a10-timer";
  831. reg = <0x06000c00 0xa0>;
  832. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  833. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
  834. <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
  835. <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
  836. <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
  837. <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  838. clocks = <&osc24M>;
  839. };
  840. wdt: watchdog@6000ca0 {
  841. compatible = "allwinner,sun6i-a31-wdt";
  842. reg = <0x06000ca0 0x20>;
  843. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  844. clocks = <&osc24M>;
  845. };
  846. pio: pinctrl@6000800 {
  847. compatible = "allwinner,sun9i-a80-pinctrl";
  848. reg = <0x06000800 0x400>;
  849. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
  850. <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
  851. <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
  852. <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
  853. <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
  854. clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;
  855. clock-names = "apb", "hosc", "losc";
  856. gpio-controller;
  857. interrupt-controller;
  858. #interrupt-cells = <3>;
  859. #gpio-cells = <3>;
  860. gmac_rgmii_pins: gmac-rgmii-pins {
  861. pins = "PA0", "PA1", "PA2", "PA3", "PA4", "PA5",
  862. "PA7", "PA8", "PA9", "PA10", "PA12",
  863. "PA13", "PA15", "PA16", "PA17";
  864. function = "gmac";
  865. /*
  866. * data lines in RGMII mode use DDR mode
  867. * and need a higher signal drive strength
  868. */
  869. drive-strength = <40>;
  870. };
  871. i2c3_pins: i2c3-pins {
  872. pins = "PG10", "PG11";
  873. function = "i2c3";
  874. };
  875. lcd0_rgb888_pins: lcd0-rgb888-pins {
  876. pins = "PD0", "PD1", "PD2", "PD3",
  877. "PD4", "PD5", "PD6", "PD7",
  878. "PD8", "PD9", "PD10", "PD11",
  879. "PD12", "PD13", "PD14", "PD15",
  880. "PD16", "PD17", "PD18", "PD19",
  881. "PD20", "PD21", "PD22", "PD23",
  882. "PD24", "PD25", "PD26", "PD27";
  883. function = "lcd0";
  884. };
  885. mmc0_pins: mmc0-pins {
  886. pins = "PF0", "PF1" ,"PF2", "PF3",
  887. "PF4", "PF5";
  888. function = "mmc0";
  889. drive-strength = <30>;
  890. bias-pull-up;
  891. };
  892. mmc1_pins: mmc1-pins {
  893. pins = "PG0", "PG1" ,"PG2", "PG3",
  894. "PG4", "PG5";
  895. function = "mmc1";
  896. drive-strength = <30>;
  897. bias-pull-up;
  898. };
  899. mmc2_8bit_pins: mmc2-8bit-pins {
  900. pins = "PC6", "PC7", "PC8", "PC9",
  901. "PC10", "PC11", "PC12",
  902. "PC13", "PC14", "PC15",
  903. "PC16";
  904. function = "mmc2";
  905. drive-strength = <30>;
  906. bias-pull-up;
  907. };
  908. uart0_ph_pins: uart0-ph-pins {
  909. pins = "PH12", "PH13";
  910. function = "uart0";
  911. };
  912. uart4_pins: uart4-pins {
  913. pins = "PG12", "PG13", "PG14", "PG15";
  914. function = "uart4";
  915. };
  916. };
  917. uart0: serial@7000000 {
  918. compatible = "snps,dw-apb-uart";
  919. reg = <0x07000000 0x400>;
  920. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  921. reg-shift = <2>;
  922. reg-io-width = <4>;
  923. clocks = <&ccu CLK_BUS_UART0>;
  924. resets = <&ccu RST_BUS_UART0>;
  925. status = "disabled";
  926. };
  927. uart1: serial@7000400 {
  928. compatible = "snps,dw-apb-uart";
  929. reg = <0x07000400 0x400>;
  930. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  931. reg-shift = <2>;
  932. reg-io-width = <4>;
  933. clocks = <&ccu CLK_BUS_UART1>;
  934. resets = <&ccu RST_BUS_UART1>;
  935. status = "disabled";
  936. };
  937. uart2: serial@7000800 {
  938. compatible = "snps,dw-apb-uart";
  939. reg = <0x07000800 0x400>;
  940. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  941. reg-shift = <2>;
  942. reg-io-width = <4>;
  943. clocks = <&ccu CLK_BUS_UART2>;
  944. resets = <&ccu RST_BUS_UART2>;
  945. status = "disabled";
  946. };
  947. uart3: serial@7000c00 {
  948. compatible = "snps,dw-apb-uart";
  949. reg = <0x07000c00 0x400>;
  950. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  951. reg-shift = <2>;
  952. reg-io-width = <4>;
  953. clocks = <&ccu CLK_BUS_UART3>;
  954. resets = <&ccu RST_BUS_UART3>;
  955. status = "disabled";
  956. };
  957. uart4: serial@7001000 {
  958. compatible = "snps,dw-apb-uart";
  959. reg = <0x07001000 0x400>;
  960. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  961. reg-shift = <2>;
  962. reg-io-width = <4>;
  963. clocks = <&ccu CLK_BUS_UART4>;
  964. resets = <&ccu RST_BUS_UART4>;
  965. status = "disabled";
  966. };
  967. uart5: serial@7001400 {
  968. compatible = "snps,dw-apb-uart";
  969. reg = <0x07001400 0x400>;
  970. interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
  971. reg-shift = <2>;
  972. reg-io-width = <4>;
  973. clocks = <&ccu CLK_BUS_UART5>;
  974. resets = <&ccu RST_BUS_UART5>;
  975. status = "disabled";
  976. };
  977. i2c0: i2c@7002800 {
  978. compatible = "allwinner,sun6i-a31-i2c";
  979. reg = <0x07002800 0x400>;
  980. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  981. clocks = <&ccu CLK_BUS_I2C0>;
  982. resets = <&ccu RST_BUS_I2C0>;
  983. status = "disabled";
  984. #address-cells = <1>;
  985. #size-cells = <0>;
  986. };
  987. i2c1: i2c@7002c00 {
  988. compatible = "allwinner,sun6i-a31-i2c";
  989. reg = <0x07002c00 0x400>;
  990. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  991. clocks = <&ccu CLK_BUS_I2C1>;
  992. resets = <&ccu RST_BUS_I2C1>;
  993. status = "disabled";
  994. #address-cells = <1>;
  995. #size-cells = <0>;
  996. };
  997. i2c2: i2c@7003000 {
  998. compatible = "allwinner,sun6i-a31-i2c";
  999. reg = <0x07003000 0x400>;
  1000. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  1001. clocks = <&ccu CLK_BUS_I2C2>;
  1002. resets = <&ccu RST_BUS_I2C2>;
  1003. status = "disabled";
  1004. #address-cells = <1>;
  1005. #size-cells = <0>;
  1006. };
  1007. i2c3: i2c@7003400 {
  1008. compatible = "allwinner,sun6i-a31-i2c";
  1009. reg = <0x07003400 0x400>;
  1010. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
  1011. clocks = <&ccu CLK_BUS_I2C3>;
  1012. resets = <&ccu RST_BUS_I2C3>;
  1013. status = "disabled";
  1014. #address-cells = <1>;
  1015. #size-cells = <0>;
  1016. };
  1017. i2c4: i2c@7003800 {
  1018. compatible = "allwinner,sun6i-a31-i2c";
  1019. reg = <0x07003800 0x400>;
  1020. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  1021. clocks = <&ccu CLK_BUS_I2C4>;
  1022. resets = <&ccu RST_BUS_I2C4>;
  1023. status = "disabled";
  1024. #address-cells = <1>;
  1025. #size-cells = <0>;
  1026. };
  1027. r_wdt: watchdog@8001000 {
  1028. compatible = "allwinner,sun6i-a31-wdt";
  1029. reg = <0x08001000 0x20>;
  1030. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
  1031. clocks = <&osc24M>;
  1032. };
  1033. prcm@8001400 {
  1034. compatible = "allwinner,sun9i-a80-prcm";
  1035. reg = <0x08001400 0x200>;
  1036. };
  1037. apbs_rst: reset@80014b0 {
  1038. reg = <0x080014b0 0x4>;
  1039. compatible = "allwinner,sun6i-a31-clock-reset";
  1040. #reset-cells = <1>;
  1041. };
  1042. nmi_intc: interrupt-controller@80015a0 {
  1043. compatible = "allwinner,sun9i-a80-nmi";
  1044. interrupt-controller;
  1045. #interrupt-cells = <2>;
  1046. reg = <0x080015a0 0xc>;
  1047. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  1048. };
  1049. r_ir: ir@8002000 {
  1050. compatible = "allwinner,sun6i-a31-ir";
  1051. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  1052. pinctrl-names = "default";
  1053. pinctrl-0 = <&r_ir_pins>;
  1054. clocks = <&apbs_gates 1>, <&r_ir_clk>;
  1055. clock-names = "apb", "ir";
  1056. resets = <&apbs_rst 1>;
  1057. reg = <0x08002000 0x40>;
  1058. status = "disabled";
  1059. };
  1060. r_uart: serial@8002800 {
  1061. compatible = "snps,dw-apb-uart";
  1062. reg = <0x08002800 0x400>;
  1063. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  1064. reg-shift = <2>;
  1065. reg-io-width = <4>;
  1066. clocks = <&apbs_gates 4>;
  1067. resets = <&apbs_rst 4>;
  1068. status = "disabled";
  1069. };
  1070. r_pio: pinctrl@8002c00 {
  1071. compatible = "allwinner,sun9i-a80-r-pinctrl";
  1072. reg = <0x08002c00 0x400>;
  1073. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
  1074. <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
  1075. clocks = <&apbs_gates 0>, <&osc24M>, <&osc32k>;
  1076. clock-names = "apb", "hosc", "losc";
  1077. gpio-controller;
  1078. interrupt-controller;
  1079. #interrupt-cells = <3>;
  1080. #gpio-cells = <3>;
  1081. r_ir_pins: r-ir-pins {
  1082. pins = "PL6";
  1083. function = "s_cir_rx";
  1084. };
  1085. r_rsb_pins: r-rsb-pins {
  1086. pins = "PN0", "PN1";
  1087. function = "s_rsb";
  1088. drive-strength = <20>;
  1089. bias-pull-up;
  1090. };
  1091. };
  1092. r_rsb: rsb@8003400 {
  1093. compatible = "allwinner,sun8i-a23-rsb";
  1094. reg = <0x08003400 0x400>;
  1095. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  1096. clocks = <&apbs_gates 3>;
  1097. clock-frequency = <3000000>;
  1098. resets = <&apbs_rst 3>;
  1099. pinctrl-names = "default";
  1100. pinctrl-0 = <&r_rsb_pins>;
  1101. status = "disabled";
  1102. #address-cells = <1>;
  1103. #size-cells = <0>;
  1104. };
  1105. };
  1106. };