sun50i-a64.dtsi 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. // Copyright (C) 2016 ARM Ltd.
  3. // based on the Allwinner H3 dtsi:
  4. // Copyright (C) 2015 Jens Kuske <[email protected]>
  5. #include <dt-bindings/clock/sun50i-a64-ccu.h>
  6. #include <dt-bindings/clock/sun6i-rtc.h>
  7. #include <dt-bindings/clock/sun8i-de2.h>
  8. #include <dt-bindings/clock/sun8i-r-ccu.h>
  9. #include <dt-bindings/interrupt-controller/arm-gic.h>
  10. #include <dt-bindings/reset/sun50i-a64-ccu.h>
  11. #include <dt-bindings/reset/sun8i-de2.h>
  12. #include <dt-bindings/reset/sun8i-r-ccu.h>
  13. #include <dt-bindings/thermal/thermal.h>
  14. / {
  15. interrupt-parent = <&gic>;
  16. #address-cells = <1>;
  17. #size-cells = <1>;
  18. chosen {
  19. #address-cells = <1>;
  20. #size-cells = <1>;
  21. ranges;
  22. simplefb_lcd: framebuffer-lcd {
  23. compatible = "allwinner,simple-framebuffer",
  24. "simple-framebuffer";
  25. allwinner,pipeline = "mixer0-lcd0";
  26. clocks = <&ccu CLK_TCON0>,
  27. <&display_clocks CLK_MIXER0>;
  28. status = "disabled";
  29. };
  30. simplefb_hdmi: framebuffer-hdmi {
  31. compatible = "allwinner,simple-framebuffer",
  32. "simple-framebuffer";
  33. allwinner,pipeline = "mixer1-lcd1-hdmi";
  34. clocks = <&display_clocks CLK_MIXER1>,
  35. <&ccu CLK_TCON1>, <&ccu CLK_HDMI>;
  36. status = "disabled";
  37. };
  38. };
  39. cpus {
  40. #address-cells = <1>;
  41. #size-cells = <0>;
  42. cpu0: cpu@0 {
  43. compatible = "arm,cortex-a53";
  44. device_type = "cpu";
  45. reg = <0>;
  46. enable-method = "psci";
  47. next-level-cache = <&L2>;
  48. clocks = <&ccu CLK_CPUX>;
  49. clock-names = "cpu";
  50. #cooling-cells = <2>;
  51. };
  52. cpu1: cpu@1 {
  53. compatible = "arm,cortex-a53";
  54. device_type = "cpu";
  55. reg = <1>;
  56. enable-method = "psci";
  57. next-level-cache = <&L2>;
  58. clocks = <&ccu CLK_CPUX>;
  59. clock-names = "cpu";
  60. #cooling-cells = <2>;
  61. };
  62. cpu2: cpu@2 {
  63. compatible = "arm,cortex-a53";
  64. device_type = "cpu";
  65. reg = <2>;
  66. enable-method = "psci";
  67. next-level-cache = <&L2>;
  68. clocks = <&ccu CLK_CPUX>;
  69. clock-names = "cpu";
  70. #cooling-cells = <2>;
  71. };
  72. cpu3: cpu@3 {
  73. compatible = "arm,cortex-a53";
  74. device_type = "cpu";
  75. reg = <3>;
  76. enable-method = "psci";
  77. next-level-cache = <&L2>;
  78. clocks = <&ccu CLK_CPUX>;
  79. clock-names = "cpu";
  80. #cooling-cells = <2>;
  81. };
  82. L2: l2-cache {
  83. compatible = "cache";
  84. cache-level = <2>;
  85. };
  86. };
  87. de: display-engine {
  88. compatible = "allwinner,sun50i-a64-display-engine";
  89. allwinner,pipelines = <&mixer0>,
  90. <&mixer1>;
  91. status = "disabled";
  92. };
  93. gpu_opp_table: opp-table-gpu {
  94. compatible = "operating-points-v2";
  95. opp-120000000 {
  96. opp-hz = /bits/ 64 <120000000>;
  97. };
  98. opp-312000000 {
  99. opp-hz = /bits/ 64 <312000000>;
  100. };
  101. opp-432000000 {
  102. opp-hz = /bits/ 64 <432000000>;
  103. };
  104. };
  105. osc24M: osc24M_clk {
  106. #clock-cells = <0>;
  107. compatible = "fixed-clock";
  108. clock-frequency = <24000000>;
  109. clock-output-names = "osc24M";
  110. };
  111. osc32k: osc32k_clk {
  112. #clock-cells = <0>;
  113. compatible = "fixed-clock";
  114. clock-frequency = <32768>;
  115. clock-output-names = "ext-osc32k";
  116. };
  117. pmu {
  118. compatible = "arm,cortex-a53-pmu";
  119. interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
  120. <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
  121. <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
  122. <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
  123. interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
  124. };
  125. psci {
  126. compatible = "arm,psci-0.2";
  127. method = "smc";
  128. };
  129. sound: sound {
  130. #address-cells = <1>;
  131. #size-cells = <0>;
  132. compatible = "simple-audio-card";
  133. simple-audio-card,name = "sun50i-a64-audio";
  134. simple-audio-card,aux-devs = <&codec_analog>;
  135. simple-audio-card,routing =
  136. "Left DAC", "DACL",
  137. "Right DAC", "DACR",
  138. "ADCL", "Left ADC",
  139. "ADCR", "Right ADC";
  140. status = "disabled";
  141. simple-audio-card,dai-link@0 {
  142. format = "i2s";
  143. frame-master = <&link0_cpu>;
  144. bitclock-master = <&link0_cpu>;
  145. mclk-fs = <128>;
  146. link0_cpu: cpu {
  147. sound-dai = <&dai>;
  148. };
  149. link0_codec: codec {
  150. sound-dai = <&codec 0>;
  151. };
  152. };
  153. };
  154. timer {
  155. compatible = "arm,armv8-timer";
  156. allwinner,erratum-unknown1;
  157. arm,no-tick-in-suspend;
  158. interrupts = <GIC_PPI 13
  159. (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  160. <GIC_PPI 14
  161. (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  162. <GIC_PPI 11
  163. (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  164. <GIC_PPI 10
  165. (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  166. };
  167. thermal-zones {
  168. cpu_thermal: cpu0-thermal {
  169. /* milliseconds */
  170. polling-delay-passive = <0>;
  171. polling-delay = <0>;
  172. thermal-sensors = <&ths 0>;
  173. cooling-maps {
  174. map0 {
  175. trip = <&cpu_alert0>;
  176. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  177. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  178. <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  179. <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  180. };
  181. map1 {
  182. trip = <&cpu_alert1>;
  183. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  184. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  185. <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  186. <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  187. };
  188. };
  189. trips {
  190. cpu_alert0: cpu_alert0 {
  191. /* milliCelsius */
  192. temperature = <75000>;
  193. hysteresis = <2000>;
  194. type = "passive";
  195. };
  196. cpu_alert1: cpu_alert1 {
  197. /* milliCelsius */
  198. temperature = <90000>;
  199. hysteresis = <2000>;
  200. type = "hot";
  201. };
  202. cpu_crit: cpu_crit {
  203. /* milliCelsius */
  204. temperature = <110000>;
  205. hysteresis = <2000>;
  206. type = "critical";
  207. };
  208. };
  209. };
  210. gpu0_thermal: gpu0-thermal {
  211. /* milliseconds */
  212. polling-delay-passive = <0>;
  213. polling-delay = <0>;
  214. thermal-sensors = <&ths 1>;
  215. };
  216. gpu1_thermal: gpu1-thermal {
  217. /* milliseconds */
  218. polling-delay-passive = <0>;
  219. polling-delay = <0>;
  220. thermal-sensors = <&ths 2>;
  221. };
  222. };
  223. soc {
  224. compatible = "simple-bus";
  225. #address-cells = <1>;
  226. #size-cells = <1>;
  227. ranges;
  228. bus@1000000 {
  229. compatible = "allwinner,sun50i-a64-de2";
  230. reg = <0x1000000 0x400000>;
  231. allwinner,sram = <&de2_sram 1>;
  232. #address-cells = <1>;
  233. #size-cells = <1>;
  234. ranges = <0 0x1000000 0x400000>;
  235. display_clocks: clock@0 {
  236. compatible = "allwinner,sun50i-a64-de2-clk";
  237. reg = <0x0 0x10000>;
  238. clocks = <&ccu CLK_BUS_DE>,
  239. <&ccu CLK_DE>;
  240. clock-names = "bus",
  241. "mod";
  242. resets = <&ccu RST_BUS_DE>;
  243. #clock-cells = <1>;
  244. #reset-cells = <1>;
  245. };
  246. rotate: rotate@20000 {
  247. compatible = "allwinner,sun50i-a64-de2-rotate",
  248. "allwinner,sun8i-a83t-de2-rotate";
  249. reg = <0x20000 0x10000>;
  250. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  251. clocks = <&display_clocks CLK_BUS_ROT>,
  252. <&display_clocks CLK_ROT>;
  253. clock-names = "bus",
  254. "mod";
  255. resets = <&display_clocks RST_ROT>;
  256. };
  257. mixer0: mixer@100000 {
  258. compatible = "allwinner,sun50i-a64-de2-mixer-0";
  259. reg = <0x100000 0x100000>;
  260. clocks = <&display_clocks CLK_BUS_MIXER0>,
  261. <&display_clocks CLK_MIXER0>;
  262. clock-names = "bus",
  263. "mod";
  264. resets = <&display_clocks RST_MIXER0>;
  265. ports {
  266. #address-cells = <1>;
  267. #size-cells = <0>;
  268. mixer0_out: port@1 {
  269. #address-cells = <1>;
  270. #size-cells = <0>;
  271. reg = <1>;
  272. mixer0_out_tcon0: endpoint@0 {
  273. reg = <0>;
  274. remote-endpoint = <&tcon0_in_mixer0>;
  275. };
  276. mixer0_out_tcon1: endpoint@1 {
  277. reg = <1>;
  278. remote-endpoint = <&tcon1_in_mixer0>;
  279. };
  280. };
  281. };
  282. };
  283. mixer1: mixer@200000 {
  284. compatible = "allwinner,sun50i-a64-de2-mixer-1";
  285. reg = <0x200000 0x100000>;
  286. clocks = <&display_clocks CLK_BUS_MIXER1>,
  287. <&display_clocks CLK_MIXER1>;
  288. clock-names = "bus",
  289. "mod";
  290. resets = <&display_clocks RST_MIXER1>;
  291. ports {
  292. #address-cells = <1>;
  293. #size-cells = <0>;
  294. mixer1_out: port@1 {
  295. #address-cells = <1>;
  296. #size-cells = <0>;
  297. reg = <1>;
  298. mixer1_out_tcon0: endpoint@0 {
  299. reg = <0>;
  300. remote-endpoint = <&tcon0_in_mixer1>;
  301. };
  302. mixer1_out_tcon1: endpoint@1 {
  303. reg = <1>;
  304. remote-endpoint = <&tcon1_in_mixer1>;
  305. };
  306. };
  307. };
  308. };
  309. };
  310. syscon: syscon@1c00000 {
  311. compatible = "allwinner,sun50i-a64-system-control";
  312. reg = <0x01c00000 0x1000>;
  313. #address-cells = <1>;
  314. #size-cells = <1>;
  315. ranges;
  316. sram_c: sram@18000 {
  317. compatible = "mmio-sram";
  318. reg = <0x00018000 0x28000>;
  319. #address-cells = <1>;
  320. #size-cells = <1>;
  321. ranges = <0 0x00018000 0x28000>;
  322. de2_sram: sram-section@0 {
  323. compatible = "allwinner,sun50i-a64-sram-c";
  324. reg = <0x0000 0x28000>;
  325. };
  326. };
  327. sram_c1: sram@1d00000 {
  328. compatible = "mmio-sram";
  329. reg = <0x01d00000 0x40000>;
  330. #address-cells = <1>;
  331. #size-cells = <1>;
  332. ranges = <0 0x01d00000 0x40000>;
  333. ve_sram: sram-section@0 {
  334. compatible = "allwinner,sun50i-a64-sram-c1",
  335. "allwinner,sun4i-a10-sram-c1";
  336. reg = <0x000000 0x40000>;
  337. };
  338. };
  339. };
  340. dma: dma-controller@1c02000 {
  341. compatible = "allwinner,sun50i-a64-dma";
  342. reg = <0x01c02000 0x1000>;
  343. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  344. clocks = <&ccu CLK_BUS_DMA>;
  345. dma-channels = <8>;
  346. dma-requests = <27>;
  347. resets = <&ccu RST_BUS_DMA>;
  348. #dma-cells = <1>;
  349. };
  350. tcon0: lcd-controller@1c0c000 {
  351. compatible = "allwinner,sun50i-a64-tcon-lcd",
  352. "allwinner,sun8i-a83t-tcon-lcd";
  353. reg = <0x01c0c000 0x1000>;
  354. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  355. clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
  356. clock-names = "ahb", "tcon-ch0";
  357. clock-output-names = "tcon-pixel-clock";
  358. #clock-cells = <0>;
  359. resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
  360. reset-names = "lcd", "lvds";
  361. ports {
  362. #address-cells = <1>;
  363. #size-cells = <0>;
  364. tcon0_in: port@0 {
  365. #address-cells = <1>;
  366. #size-cells = <0>;
  367. reg = <0>;
  368. tcon0_in_mixer0: endpoint@0 {
  369. reg = <0>;
  370. remote-endpoint = <&mixer0_out_tcon0>;
  371. };
  372. tcon0_in_mixer1: endpoint@1 {
  373. reg = <1>;
  374. remote-endpoint = <&mixer1_out_tcon0>;
  375. };
  376. };
  377. tcon0_out: port@1 {
  378. #address-cells = <1>;
  379. #size-cells = <0>;
  380. reg = <1>;
  381. tcon0_out_dsi: endpoint@1 {
  382. reg = <1>;
  383. remote-endpoint = <&dsi_in_tcon0>;
  384. allwinner,tcon-channel = <1>;
  385. };
  386. };
  387. };
  388. };
  389. tcon1: lcd-controller@1c0d000 {
  390. compatible = "allwinner,sun50i-a64-tcon-tv",
  391. "allwinner,sun8i-a83t-tcon-tv";
  392. reg = <0x01c0d000 0x1000>;
  393. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  394. clocks = <&ccu CLK_BUS_TCON1>, <&ccu CLK_TCON1>;
  395. clock-names = "ahb", "tcon-ch1";
  396. resets = <&ccu RST_BUS_TCON1>;
  397. reset-names = "lcd";
  398. ports {
  399. #address-cells = <1>;
  400. #size-cells = <0>;
  401. tcon1_in: port@0 {
  402. #address-cells = <1>;
  403. #size-cells = <0>;
  404. reg = <0>;
  405. tcon1_in_mixer0: endpoint@0 {
  406. reg = <0>;
  407. remote-endpoint = <&mixer0_out_tcon1>;
  408. };
  409. tcon1_in_mixer1: endpoint@1 {
  410. reg = <1>;
  411. remote-endpoint = <&mixer1_out_tcon1>;
  412. };
  413. };
  414. tcon1_out: port@1 {
  415. #address-cells = <1>;
  416. #size-cells = <0>;
  417. reg = <1>;
  418. tcon1_out_hdmi: endpoint@1 {
  419. reg = <1>;
  420. remote-endpoint = <&hdmi_in_tcon1>;
  421. };
  422. };
  423. };
  424. };
  425. video-codec@1c0e000 {
  426. compatible = "allwinner,sun50i-a64-video-engine";
  427. reg = <0x01c0e000 0x1000>;
  428. clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
  429. <&ccu CLK_DRAM_VE>;
  430. clock-names = "ahb", "mod", "ram";
  431. resets = <&ccu RST_BUS_VE>;
  432. interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
  433. allwinner,sram = <&ve_sram 1>;
  434. };
  435. mmc0: mmc@1c0f000 {
  436. compatible = "allwinner,sun50i-a64-mmc";
  437. reg = <0x01c0f000 0x1000>;
  438. clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
  439. clock-names = "ahb", "mmc";
  440. resets = <&ccu RST_BUS_MMC0>;
  441. reset-names = "ahb";
  442. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  443. max-frequency = <150000000>;
  444. status = "disabled";
  445. #address-cells = <1>;
  446. #size-cells = <0>;
  447. };
  448. mmc1: mmc@1c10000 {
  449. compatible = "allwinner,sun50i-a64-mmc";
  450. reg = <0x01c10000 0x1000>;
  451. clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
  452. clock-names = "ahb", "mmc";
  453. resets = <&ccu RST_BUS_MMC1>;
  454. reset-names = "ahb";
  455. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  456. max-frequency = <150000000>;
  457. status = "disabled";
  458. #address-cells = <1>;
  459. #size-cells = <0>;
  460. };
  461. mmc2: mmc@1c11000 {
  462. compatible = "allwinner,sun50i-a64-emmc";
  463. reg = <0x01c11000 0x1000>;
  464. clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
  465. clock-names = "ahb", "mmc";
  466. resets = <&ccu RST_BUS_MMC2>;
  467. reset-names = "ahb";
  468. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  469. max-frequency = <150000000>;
  470. status = "disabled";
  471. #address-cells = <1>;
  472. #size-cells = <0>;
  473. };
  474. sid: eeprom@1c14000 {
  475. compatible = "allwinner,sun50i-a64-sid";
  476. reg = <0x1c14000 0x400>;
  477. #address-cells = <1>;
  478. #size-cells = <1>;
  479. ths_calibration: thermal-sensor-calibration@34 {
  480. reg = <0x34 0x8>;
  481. };
  482. };
  483. crypto: crypto@1c15000 {
  484. compatible = "allwinner,sun50i-a64-crypto";
  485. reg = <0x01c15000 0x1000>;
  486. interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
  487. clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
  488. clock-names = "bus", "mod";
  489. resets = <&ccu RST_BUS_CE>;
  490. };
  491. msgbox: mailbox@1c17000 {
  492. compatible = "allwinner,sun50i-a64-msgbox",
  493. "allwinner,sun6i-a31-msgbox";
  494. reg = <0x01c17000 0x1000>;
  495. clocks = <&ccu CLK_BUS_MSGBOX>;
  496. resets = <&ccu RST_BUS_MSGBOX>;
  497. interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
  498. #mbox-cells = <1>;
  499. };
  500. usb_otg: usb@1c19000 {
  501. compatible = "allwinner,sun8i-a33-musb";
  502. reg = <0x01c19000 0x0400>;
  503. clocks = <&ccu CLK_BUS_OTG>;
  504. resets = <&ccu RST_BUS_OTG>;
  505. interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  506. interrupt-names = "mc";
  507. phys = <&usbphy 0>;
  508. phy-names = "usb";
  509. extcon = <&usbphy 0>;
  510. dr_mode = "otg";
  511. status = "disabled";
  512. };
  513. usbphy: phy@1c19400 {
  514. compatible = "allwinner,sun50i-a64-usb-phy";
  515. reg = <0x01c19400 0x14>,
  516. <0x01c1a800 0x4>,
  517. <0x01c1b800 0x4>;
  518. reg-names = "phy_ctrl",
  519. "pmu0",
  520. "pmu1";
  521. clocks = <&ccu CLK_USB_PHY0>,
  522. <&ccu CLK_USB_PHY1>;
  523. clock-names = "usb0_phy",
  524. "usb1_phy";
  525. resets = <&ccu RST_USB_PHY0>,
  526. <&ccu RST_USB_PHY1>;
  527. reset-names = "usb0_reset",
  528. "usb1_reset";
  529. status = "disabled";
  530. #phy-cells = <1>;
  531. };
  532. ehci0: usb@1c1a000 {
  533. compatible = "allwinner,sun50i-a64-ehci", "generic-ehci";
  534. reg = <0x01c1a000 0x100>;
  535. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  536. clocks = <&ccu CLK_BUS_OHCI0>,
  537. <&ccu CLK_BUS_EHCI0>,
  538. <&ccu CLK_USB_OHCI0>;
  539. resets = <&ccu RST_BUS_OHCI0>,
  540. <&ccu RST_BUS_EHCI0>;
  541. phys = <&usbphy 0>;
  542. phy-names = "usb";
  543. status = "disabled";
  544. };
  545. ohci0: usb@1c1a400 {
  546. compatible = "allwinner,sun50i-a64-ohci", "generic-ohci";
  547. reg = <0x01c1a400 0x100>;
  548. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  549. clocks = <&ccu CLK_BUS_OHCI0>,
  550. <&ccu CLK_USB_OHCI0>;
  551. resets = <&ccu RST_BUS_OHCI0>;
  552. phys = <&usbphy 0>;
  553. phy-names = "usb";
  554. status = "disabled";
  555. };
  556. ehci1: usb@1c1b000 {
  557. compatible = "allwinner,sun50i-a64-ehci", "generic-ehci";
  558. reg = <0x01c1b000 0x100>;
  559. interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  560. clocks = <&ccu CLK_BUS_OHCI1>,
  561. <&ccu CLK_BUS_EHCI1>,
  562. <&ccu CLK_USB_OHCI1>;
  563. resets = <&ccu RST_BUS_OHCI1>,
  564. <&ccu RST_BUS_EHCI1>;
  565. phys = <&usbphy 1>;
  566. phy-names = "usb";
  567. status = "disabled";
  568. };
  569. ohci1: usb@1c1b400 {
  570. compatible = "allwinner,sun50i-a64-ohci", "generic-ohci";
  571. reg = <0x01c1b400 0x100>;
  572. interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
  573. clocks = <&ccu CLK_BUS_OHCI1>,
  574. <&ccu CLK_USB_OHCI1>;
  575. resets = <&ccu RST_BUS_OHCI1>;
  576. phys = <&usbphy 1>;
  577. phy-names = "usb";
  578. status = "disabled";
  579. };
  580. ccu: clock@1c20000 {
  581. compatible = "allwinner,sun50i-a64-ccu";
  582. reg = <0x01c20000 0x400>;
  583. clocks = <&osc24M>, <&rtc CLK_OSC32K>;
  584. clock-names = "hosc", "losc";
  585. #clock-cells = <1>;
  586. #reset-cells = <1>;
  587. };
  588. pio: pinctrl@1c20800 {
  589. compatible = "allwinner,sun50i-a64-pinctrl";
  590. reg = <0x01c20800 0x400>;
  591. interrupt-parent = <&r_intc>;
  592. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
  593. <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
  594. <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
  595. clocks = <&ccu CLK_BUS_PIO>, <&osc24M>,
  596. <&rtc CLK_OSC32K>;
  597. clock-names = "apb", "hosc", "losc";
  598. gpio-controller;
  599. #gpio-cells = <3>;
  600. interrupt-controller;
  601. #interrupt-cells = <3>;
  602. /omit-if-no-ref/
  603. aif2_pins: aif2-pins {
  604. pins = "PB4", "PB5", "PB6", "PB7";
  605. function = "aif2";
  606. };
  607. /omit-if-no-ref/
  608. aif3_pins: aif3-pins {
  609. pins = "PG10", "PG11", "PG12", "PG13";
  610. function = "aif3";
  611. };
  612. csi_pins: csi-pins {
  613. pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6",
  614. "PE7", "PE8", "PE9", "PE10", "PE11";
  615. function = "csi";
  616. };
  617. /omit-if-no-ref/
  618. csi_mclk_pin: csi-mclk-pin {
  619. pins = "PE1";
  620. function = "csi";
  621. };
  622. i2c0_pins: i2c0-pins {
  623. pins = "PH0", "PH1";
  624. function = "i2c0";
  625. };
  626. i2c1_pins: i2c1-pins {
  627. pins = "PH2", "PH3";
  628. function = "i2c1";
  629. };
  630. i2c2_pins: i2c2-pins {
  631. pins = "PE14", "PE15";
  632. function = "i2c2";
  633. };
  634. /omit-if-no-ref/
  635. lcd_rgb666_pins: lcd-rgb666-pins {
  636. pins = "PD0", "PD1", "PD2", "PD3", "PD4",
  637. "PD5", "PD6", "PD7", "PD8", "PD9",
  638. "PD10", "PD11", "PD12", "PD13",
  639. "PD14", "PD15", "PD16", "PD17",
  640. "PD18", "PD19", "PD20", "PD21";
  641. function = "lcd0";
  642. };
  643. mmc0_pins: mmc0-pins {
  644. pins = "PF0", "PF1", "PF2", "PF3",
  645. "PF4", "PF5";
  646. function = "mmc0";
  647. drive-strength = <30>;
  648. bias-pull-up;
  649. };
  650. mmc1_pins: mmc1-pins {
  651. pins = "PG0", "PG1", "PG2", "PG3",
  652. "PG4", "PG5";
  653. function = "mmc1";
  654. drive-strength = <30>;
  655. bias-pull-up;
  656. };
  657. mmc2_pins: mmc2-pins {
  658. pins = "PC5", "PC6", "PC8", "PC9",
  659. "PC10","PC11", "PC12", "PC13",
  660. "PC14", "PC15", "PC16";
  661. function = "mmc2";
  662. drive-strength = <30>;
  663. bias-pull-up;
  664. };
  665. mmc2_ds_pin: mmc2-ds-pin {
  666. pins = "PC1";
  667. function = "mmc2";
  668. drive-strength = <30>;
  669. bias-pull-up;
  670. };
  671. pwm_pin: pwm-pin {
  672. pins = "PD22";
  673. function = "pwm";
  674. };
  675. rmii_pins: rmii-pins {
  676. pins = "PD10", "PD11", "PD13", "PD14", "PD17",
  677. "PD18", "PD19", "PD20", "PD22", "PD23";
  678. function = "emac";
  679. drive-strength = <40>;
  680. };
  681. rgmii_pins: rgmii-pins {
  682. pins = "PD8", "PD9", "PD10", "PD11", "PD12",
  683. "PD13", "PD15", "PD16", "PD17", "PD18",
  684. "PD19", "PD20", "PD21", "PD22", "PD23";
  685. function = "emac";
  686. drive-strength = <40>;
  687. };
  688. spdif_tx_pin: spdif-tx-pin {
  689. pins = "PH8";
  690. function = "spdif";
  691. };
  692. spi0_pins: spi0-pins {
  693. pins = "PC0", "PC1", "PC2", "PC3";
  694. function = "spi0";
  695. };
  696. spi1_pins: spi1-pins {
  697. pins = "PD0", "PD1", "PD2", "PD3";
  698. function = "spi1";
  699. };
  700. uart0_pb_pins: uart0-pb-pins {
  701. pins = "PB8", "PB9";
  702. function = "uart0";
  703. };
  704. uart1_pins: uart1-pins {
  705. pins = "PG6", "PG7";
  706. function = "uart1";
  707. };
  708. uart1_rts_cts_pins: uart1-rts-cts-pins {
  709. pins = "PG8", "PG9";
  710. function = "uart1";
  711. };
  712. uart2_pins: uart2-pins {
  713. pins = "PB0", "PB1";
  714. function = "uart2";
  715. };
  716. uart3_pins: uart3-pins {
  717. pins = "PD0", "PD1";
  718. function = "uart3";
  719. };
  720. uart4_pins: uart4-pins {
  721. pins = "PD2", "PD3";
  722. function = "uart4";
  723. };
  724. uart4_rts_cts_pins: uart4-rts-cts-pins {
  725. pins = "PD4", "PD5";
  726. function = "uart4";
  727. };
  728. };
  729. timer@1c20c00 {
  730. compatible = "allwinner,sun50i-a64-timer",
  731. "allwinner,sun8i-a23-timer";
  732. reg = <0x01c20c00 0xa0>;
  733. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  734. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  735. clocks = <&osc24M>;
  736. };
  737. wdt0: watchdog@1c20ca0 {
  738. compatible = "allwinner,sun50i-a64-wdt",
  739. "allwinner,sun6i-a31-wdt";
  740. reg = <0x01c20ca0 0x20>;
  741. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  742. clocks = <&osc24M>;
  743. };
  744. spdif: spdif@1c21000 {
  745. #sound-dai-cells = <0>;
  746. compatible = "allwinner,sun50i-a64-spdif",
  747. "allwinner,sun8i-h3-spdif";
  748. reg = <0x01c21000 0x400>;
  749. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  750. clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
  751. resets = <&ccu RST_BUS_SPDIF>;
  752. clock-names = "apb", "spdif";
  753. dmas = <&dma 2>;
  754. dma-names = "tx";
  755. pinctrl-names = "default";
  756. pinctrl-0 = <&spdif_tx_pin>;
  757. status = "disabled";
  758. };
  759. lradc: lradc@1c21800 {
  760. compatible = "allwinner,sun50i-a64-lradc",
  761. "allwinner,sun8i-a83t-r-lradc";
  762. reg = <0x01c21800 0x400>;
  763. interrupt-parent = <&r_intc>;
  764. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  765. status = "disabled";
  766. };
  767. i2s0: i2s@1c22000 {
  768. #sound-dai-cells = <0>;
  769. compatible = "allwinner,sun50i-a64-i2s",
  770. "allwinner,sun8i-h3-i2s";
  771. reg = <0x01c22000 0x400>;
  772. interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
  773. clocks = <&ccu CLK_BUS_I2S0>, <&ccu CLK_I2S0>;
  774. clock-names = "apb", "mod";
  775. resets = <&ccu RST_BUS_I2S0>;
  776. dma-names = "rx", "tx";
  777. dmas = <&dma 3>, <&dma 3>;
  778. status = "disabled";
  779. };
  780. i2s1: i2s@1c22400 {
  781. #sound-dai-cells = <0>;
  782. compatible = "allwinner,sun50i-a64-i2s",
  783. "allwinner,sun8i-h3-i2s";
  784. reg = <0x01c22400 0x400>;
  785. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  786. clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>;
  787. clock-names = "apb", "mod";
  788. resets = <&ccu RST_BUS_I2S1>;
  789. dma-names = "rx", "tx";
  790. dmas = <&dma 4>, <&dma 4>;
  791. status = "disabled";
  792. };
  793. i2s2: i2s@1c22800 {
  794. #sound-dai-cells = <0>;
  795. compatible = "allwinner,sun50i-a64-i2s",
  796. "allwinner,sun8i-h3-i2s";
  797. reg = <0x01c22800 0x400>;
  798. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  799. clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>;
  800. clock-names = "apb", "mod";
  801. resets = <&ccu RST_BUS_I2S2>;
  802. dma-names = "rx", "tx";
  803. dmas = <&dma 27>, <&dma 27>;
  804. status = "disabled";
  805. };
  806. dai: dai@1c22c00 {
  807. #sound-dai-cells = <0>;
  808. compatible = "allwinner,sun50i-a64-codec-i2s";
  809. reg = <0x01c22c00 0x200>;
  810. interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
  811. clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
  812. clock-names = "apb", "mod";
  813. resets = <&ccu RST_BUS_CODEC>;
  814. dmas = <&dma 15>, <&dma 15>;
  815. dma-names = "rx", "tx";
  816. status = "disabled";
  817. };
  818. codec: codec@1c22e00 {
  819. #sound-dai-cells = <1>;
  820. compatible = "allwinner,sun50i-a64-codec",
  821. "allwinner,sun8i-a33-codec";
  822. reg = <0x01c22e00 0x600>;
  823. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  824. clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
  825. clock-names = "bus", "mod";
  826. status = "disabled";
  827. };
  828. ths: thermal-sensor@1c25000 {
  829. compatible = "allwinner,sun50i-a64-ths";
  830. reg = <0x01c25000 0x100>;
  831. clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
  832. clock-names = "bus", "mod";
  833. interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
  834. resets = <&ccu RST_BUS_THS>;
  835. nvmem-cells = <&ths_calibration>;
  836. nvmem-cell-names = "calibration";
  837. #thermal-sensor-cells = <1>;
  838. };
  839. uart0: serial@1c28000 {
  840. compatible = "snps,dw-apb-uart";
  841. reg = <0x01c28000 0x400>;
  842. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  843. reg-shift = <2>;
  844. reg-io-width = <4>;
  845. clocks = <&ccu CLK_BUS_UART0>;
  846. resets = <&ccu RST_BUS_UART0>;
  847. status = "disabled";
  848. };
  849. uart1: serial@1c28400 {
  850. compatible = "snps,dw-apb-uart";
  851. reg = <0x01c28400 0x400>;
  852. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  853. reg-shift = <2>;
  854. reg-io-width = <4>;
  855. clocks = <&ccu CLK_BUS_UART1>;
  856. resets = <&ccu RST_BUS_UART1>;
  857. status = "disabled";
  858. };
  859. uart2: serial@1c28800 {
  860. compatible = "snps,dw-apb-uart";
  861. reg = <0x01c28800 0x400>;
  862. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  863. reg-shift = <2>;
  864. reg-io-width = <4>;
  865. clocks = <&ccu CLK_BUS_UART2>;
  866. resets = <&ccu RST_BUS_UART2>;
  867. status = "disabled";
  868. };
  869. uart3: serial@1c28c00 {
  870. compatible = "snps,dw-apb-uart";
  871. reg = <0x01c28c00 0x400>;
  872. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  873. reg-shift = <2>;
  874. reg-io-width = <4>;
  875. clocks = <&ccu CLK_BUS_UART3>;
  876. resets = <&ccu RST_BUS_UART3>;
  877. status = "disabled";
  878. };
  879. uart4: serial@1c29000 {
  880. compatible = "snps,dw-apb-uart";
  881. reg = <0x01c29000 0x400>;
  882. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  883. reg-shift = <2>;
  884. reg-io-width = <4>;
  885. clocks = <&ccu CLK_BUS_UART4>;
  886. resets = <&ccu RST_BUS_UART4>;
  887. status = "disabled";
  888. };
  889. i2c0: i2c@1c2ac00 {
  890. compatible = "allwinner,sun6i-a31-i2c";
  891. reg = <0x01c2ac00 0x400>;
  892. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  893. clocks = <&ccu CLK_BUS_I2C0>;
  894. resets = <&ccu RST_BUS_I2C0>;
  895. pinctrl-names = "default";
  896. pinctrl-0 = <&i2c0_pins>;
  897. status = "disabled";
  898. #address-cells = <1>;
  899. #size-cells = <0>;
  900. };
  901. i2c1: i2c@1c2b000 {
  902. compatible = "allwinner,sun6i-a31-i2c";
  903. reg = <0x01c2b000 0x400>;
  904. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  905. clocks = <&ccu CLK_BUS_I2C1>;
  906. resets = <&ccu RST_BUS_I2C1>;
  907. pinctrl-names = "default";
  908. pinctrl-0 = <&i2c1_pins>;
  909. status = "disabled";
  910. #address-cells = <1>;
  911. #size-cells = <0>;
  912. };
  913. i2c2: i2c@1c2b400 {
  914. compatible = "allwinner,sun6i-a31-i2c";
  915. reg = <0x01c2b400 0x400>;
  916. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  917. clocks = <&ccu CLK_BUS_I2C2>;
  918. resets = <&ccu RST_BUS_I2C2>;
  919. pinctrl-names = "default";
  920. pinctrl-0 = <&i2c2_pins>;
  921. status = "disabled";
  922. #address-cells = <1>;
  923. #size-cells = <0>;
  924. };
  925. spi0: spi@1c68000 {
  926. compatible = "allwinner,sun8i-h3-spi";
  927. reg = <0x01c68000 0x1000>;
  928. interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  929. clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
  930. clock-names = "ahb", "mod";
  931. dmas = <&dma 23>, <&dma 23>;
  932. dma-names = "rx", "tx";
  933. pinctrl-names = "default";
  934. pinctrl-0 = <&spi0_pins>;
  935. resets = <&ccu RST_BUS_SPI0>;
  936. status = "disabled";
  937. num-cs = <1>;
  938. #address-cells = <1>;
  939. #size-cells = <0>;
  940. };
  941. spi1: spi@1c69000 {
  942. compatible = "allwinner,sun8i-h3-spi";
  943. reg = <0x01c69000 0x1000>;
  944. interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
  945. clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
  946. clock-names = "ahb", "mod";
  947. dmas = <&dma 24>, <&dma 24>;
  948. dma-names = "rx", "tx";
  949. pinctrl-names = "default";
  950. pinctrl-0 = <&spi1_pins>;
  951. resets = <&ccu RST_BUS_SPI1>;
  952. status = "disabled";
  953. num-cs = <1>;
  954. #address-cells = <1>;
  955. #size-cells = <0>;
  956. };
  957. emac: ethernet@1c30000 {
  958. compatible = "allwinner,sun50i-a64-emac";
  959. syscon = <&syscon>;
  960. reg = <0x01c30000 0x10000>;
  961. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  962. interrupt-names = "macirq";
  963. resets = <&ccu RST_BUS_EMAC>;
  964. reset-names = "stmmaceth";
  965. clocks = <&ccu CLK_BUS_EMAC>;
  966. clock-names = "stmmaceth";
  967. status = "disabled";
  968. mdio: mdio {
  969. compatible = "snps,dwmac-mdio";
  970. #address-cells = <1>;
  971. #size-cells = <0>;
  972. };
  973. };
  974. mali: gpu@1c40000 {
  975. compatible = "allwinner,sun50i-a64-mali", "arm,mali-400";
  976. reg = <0x01c40000 0x10000>;
  977. interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
  978. <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
  979. <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
  980. <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
  981. <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
  982. <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
  983. <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  984. interrupt-names = "gp",
  985. "gpmmu",
  986. "pp0",
  987. "ppmmu0",
  988. "pp1",
  989. "ppmmu1",
  990. "pmu";
  991. clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
  992. clock-names = "bus", "core";
  993. resets = <&ccu RST_BUS_GPU>;
  994. operating-points-v2 = <&gpu_opp_table>;
  995. };
  996. gic: interrupt-controller@1c81000 {
  997. compatible = "arm,gic-400";
  998. reg = <0x01c81000 0x1000>,
  999. <0x01c82000 0x2000>,
  1000. <0x01c84000 0x2000>,
  1001. <0x01c86000 0x2000>;
  1002. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  1003. interrupt-controller;
  1004. #interrupt-cells = <3>;
  1005. };
  1006. pwm: pwm@1c21400 {
  1007. compatible = "allwinner,sun50i-a64-pwm",
  1008. "allwinner,sun5i-a13-pwm";
  1009. reg = <0x01c21400 0x400>;
  1010. clocks = <&osc24M>;
  1011. pinctrl-names = "default";
  1012. pinctrl-0 = <&pwm_pin>;
  1013. #pwm-cells = <3>;
  1014. status = "disabled";
  1015. };
  1016. mbus: dram-controller@1c62000 {
  1017. compatible = "allwinner,sun50i-a64-mbus";
  1018. reg = <0x01c62000 0x1000>,
  1019. <0x01c63000 0x1000>;
  1020. reg-names = "mbus", "dram";
  1021. clocks = <&ccu CLK_MBUS>,
  1022. <&ccu CLK_DRAM>,
  1023. <&ccu CLK_BUS_DRAM>;
  1024. clock-names = "mbus", "dram", "bus";
  1025. interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
  1026. #address-cells = <1>;
  1027. #size-cells = <1>;
  1028. dma-ranges = <0x00000000 0x40000000 0xc0000000>;
  1029. #interconnect-cells = <1>;
  1030. };
  1031. csi: csi@1cb0000 {
  1032. compatible = "allwinner,sun50i-a64-csi";
  1033. reg = <0x01cb0000 0x1000>;
  1034. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  1035. clocks = <&ccu CLK_BUS_CSI>,
  1036. <&ccu CLK_CSI_SCLK>,
  1037. <&ccu CLK_DRAM_CSI>;
  1038. clock-names = "bus", "mod", "ram";
  1039. resets = <&ccu RST_BUS_CSI>;
  1040. pinctrl-names = "default";
  1041. pinctrl-0 = <&csi_pins>;
  1042. status = "disabled";
  1043. };
  1044. dsi: dsi@1ca0000 {
  1045. compatible = "allwinner,sun50i-a64-mipi-dsi";
  1046. reg = <0x01ca0000 0x1000>;
  1047. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  1048. clocks = <&ccu CLK_BUS_MIPI_DSI>;
  1049. resets = <&ccu RST_BUS_MIPI_DSI>;
  1050. phys = <&dphy>;
  1051. phy-names = "dphy";
  1052. status = "disabled";
  1053. #address-cells = <1>;
  1054. #size-cells = <0>;
  1055. port {
  1056. dsi_in_tcon0: endpoint {
  1057. remote-endpoint = <&tcon0_out_dsi>;
  1058. };
  1059. };
  1060. };
  1061. dphy: d-phy@1ca1000 {
  1062. compatible = "allwinner,sun50i-a64-mipi-dphy",
  1063. "allwinner,sun6i-a31-mipi-dphy";
  1064. reg = <0x01ca1000 0x1000>;
  1065. clocks = <&ccu CLK_BUS_MIPI_DSI>,
  1066. <&ccu CLK_DSI_DPHY>;
  1067. clock-names = "bus", "mod";
  1068. resets = <&ccu RST_BUS_MIPI_DSI>;
  1069. status = "disabled";
  1070. #phy-cells = <0>;
  1071. };
  1072. deinterlace: deinterlace@1e00000 {
  1073. compatible = "allwinner,sun50i-a64-deinterlace",
  1074. "allwinner,sun8i-h3-deinterlace";
  1075. reg = <0x01e00000 0x20000>;
  1076. clocks = <&ccu CLK_BUS_DEINTERLACE>,
  1077. <&ccu CLK_DEINTERLACE>,
  1078. <&ccu CLK_DRAM_DEINTERLACE>;
  1079. clock-names = "bus", "mod", "ram";
  1080. resets = <&ccu RST_BUS_DEINTERLACE>;
  1081. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  1082. interconnects = <&mbus 9>;
  1083. interconnect-names = "dma-mem";
  1084. };
  1085. hdmi: hdmi@1ee0000 {
  1086. compatible = "allwinner,sun50i-a64-dw-hdmi",
  1087. "allwinner,sun8i-a83t-dw-hdmi";
  1088. reg = <0x01ee0000 0x10000>;
  1089. reg-io-width = <1>;
  1090. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  1091. clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
  1092. <&ccu CLK_HDMI>, <&rtc CLK_OSC32K>;
  1093. clock-names = "iahb", "isfr", "tmds", "cec";
  1094. resets = <&ccu RST_BUS_HDMI1>;
  1095. reset-names = "ctrl";
  1096. phys = <&hdmi_phy>;
  1097. phy-names = "phy";
  1098. status = "disabled";
  1099. ports {
  1100. #address-cells = <1>;
  1101. #size-cells = <0>;
  1102. hdmi_in: port@0 {
  1103. reg = <0>;
  1104. hdmi_in_tcon1: endpoint {
  1105. remote-endpoint = <&tcon1_out_hdmi>;
  1106. };
  1107. };
  1108. hdmi_out: port@1 {
  1109. reg = <1>;
  1110. };
  1111. };
  1112. };
  1113. hdmi_phy: hdmi-phy@1ef0000 {
  1114. compatible = "allwinner,sun50i-a64-hdmi-phy";
  1115. reg = <0x01ef0000 0x10000>;
  1116. clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
  1117. <&ccu CLK_PLL_VIDEO0>;
  1118. clock-names = "bus", "mod", "pll-0";
  1119. resets = <&ccu RST_BUS_HDMI0>;
  1120. reset-names = "phy";
  1121. #phy-cells = <0>;
  1122. };
  1123. rtc: rtc@1f00000 {
  1124. compatible = "allwinner,sun50i-a64-rtc",
  1125. "allwinner,sun8i-h3-rtc";
  1126. reg = <0x01f00000 0x400>;
  1127. interrupt-parent = <&r_intc>;
  1128. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  1129. <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  1130. clock-output-names = "osc32k", "osc32k-out", "iosc";
  1131. clocks = <&osc32k>;
  1132. #clock-cells = <1>;
  1133. };
  1134. r_intc: interrupt-controller@1f00c00 {
  1135. compatible = "allwinner,sun50i-a64-r-intc",
  1136. "allwinner,sun6i-a31-r-intc";
  1137. interrupt-controller;
  1138. #interrupt-cells = <3>;
  1139. reg = <0x01f00c00 0x400>;
  1140. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  1141. };
  1142. r_ccu: clock@1f01400 {
  1143. compatible = "allwinner,sun50i-a64-r-ccu";
  1144. reg = <0x01f01400 0x100>;
  1145. clocks = <&osc24M>, <&rtc CLK_OSC32K>, <&rtc CLK_IOSC>,
  1146. <&ccu CLK_PLL_PERIPH0>;
  1147. clock-names = "hosc", "losc", "iosc", "pll-periph";
  1148. #clock-cells = <1>;
  1149. #reset-cells = <1>;
  1150. };
  1151. codec_analog: codec-analog@1f015c0 {
  1152. compatible = "allwinner,sun50i-a64-codec-analog";
  1153. reg = <0x01f015c0 0x4>;
  1154. status = "disabled";
  1155. };
  1156. r_i2c: i2c@1f02400 {
  1157. compatible = "allwinner,sun50i-a64-i2c",
  1158. "allwinner,sun6i-a31-i2c";
  1159. reg = <0x01f02400 0x400>;
  1160. interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
  1161. clocks = <&r_ccu CLK_APB0_I2C>;
  1162. resets = <&r_ccu RST_APB0_I2C>;
  1163. status = "disabled";
  1164. #address-cells = <1>;
  1165. #size-cells = <0>;
  1166. };
  1167. r_ir: ir@1f02000 {
  1168. compatible = "allwinner,sun50i-a64-ir",
  1169. "allwinner,sun6i-a31-ir";
  1170. reg = <0x01f02000 0x400>;
  1171. clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>;
  1172. clock-names = "apb", "ir";
  1173. resets = <&r_ccu RST_APB0_IR>;
  1174. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  1175. pinctrl-names = "default";
  1176. pinctrl-0 = <&r_ir_rx_pin>;
  1177. status = "disabled";
  1178. };
  1179. r_pwm: pwm@1f03800 {
  1180. compatible = "allwinner,sun50i-a64-pwm",
  1181. "allwinner,sun5i-a13-pwm";
  1182. reg = <0x01f03800 0x400>;
  1183. clocks = <&osc24M>;
  1184. pinctrl-names = "default";
  1185. pinctrl-0 = <&r_pwm_pin>;
  1186. #pwm-cells = <3>;
  1187. status = "disabled";
  1188. };
  1189. r_pio: pinctrl@1f02c00 {
  1190. compatible = "allwinner,sun50i-a64-r-pinctrl";
  1191. reg = <0x01f02c00 0x400>;
  1192. interrupt-parent = <&r_intc>;
  1193. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  1194. clocks = <&r_ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
  1195. clock-names = "apb", "hosc", "losc";
  1196. gpio-controller;
  1197. #gpio-cells = <3>;
  1198. interrupt-controller;
  1199. #interrupt-cells = <3>;
  1200. r_i2c_pl89_pins: r-i2c-pl89-pins {
  1201. pins = "PL8", "PL9";
  1202. function = "s_i2c";
  1203. };
  1204. r_ir_rx_pin: r-ir-rx-pin {
  1205. pins = "PL11";
  1206. function = "s_cir_rx";
  1207. };
  1208. r_pwm_pin: r-pwm-pin {
  1209. pins = "PL10";
  1210. function = "s_pwm";
  1211. };
  1212. r_rsb_pins: r-rsb-pins {
  1213. pins = "PL0", "PL1";
  1214. function = "s_rsb";
  1215. };
  1216. };
  1217. r_rsb: rsb@1f03400 {
  1218. compatible = "allwinner,sun8i-a23-rsb";
  1219. reg = <0x01f03400 0x400>;
  1220. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  1221. clocks = <&r_ccu 6>;
  1222. clock-frequency = <3000000>;
  1223. resets = <&r_ccu 2>;
  1224. pinctrl-names = "default";
  1225. pinctrl-0 = <&r_rsb_pins>;
  1226. status = "disabled";
  1227. #address-cells = <1>;
  1228. #size-cells = <0>;
  1229. };
  1230. };
  1231. };