sun8i-a83t.dtsi 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274
  1. /*
  2. * Copyright 2015 Vishnu Patekar
  3. *
  4. * Vishnu Patekar <[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/sun8i-a83t-ccu.h>
  46. #include <dt-bindings/clock/sun8i-de2.h>
  47. #include <dt-bindings/clock/sun8i-r-ccu.h>
  48. #include <dt-bindings/reset/sun8i-a83t-ccu.h>
  49. #include <dt-bindings/reset/sun8i-de2.h>
  50. #include <dt-bindings/reset/sun8i-r-ccu.h>
  51. #include <dt-bindings/thermal/thermal.h>
  52. / {
  53. interrupt-parent = <&gic>;
  54. #address-cells = <1>;
  55. #size-cells = <1>;
  56. cpus {
  57. #address-cells = <1>;
  58. #size-cells = <0>;
  59. cpu0: cpu@0 {
  60. compatible = "arm,cortex-a7";
  61. device_type = "cpu";
  62. clocks = <&ccu CLK_C0CPUX>;
  63. operating-points-v2 = <&cpu0_opp_table>;
  64. cci-control-port = <&cci_control0>;
  65. enable-method = "allwinner,sun8i-a83t-smp";
  66. reg = <0>;
  67. #cooling-cells = <2>;
  68. };
  69. cpu1: cpu@1 {
  70. compatible = "arm,cortex-a7";
  71. device_type = "cpu";
  72. clocks = <&ccu CLK_C0CPUX>;
  73. operating-points-v2 = <&cpu0_opp_table>;
  74. cci-control-port = <&cci_control0>;
  75. enable-method = "allwinner,sun8i-a83t-smp";
  76. reg = <1>;
  77. #cooling-cells = <2>;
  78. };
  79. cpu2: cpu@2 {
  80. compatible = "arm,cortex-a7";
  81. device_type = "cpu";
  82. clocks = <&ccu CLK_C0CPUX>;
  83. operating-points-v2 = <&cpu0_opp_table>;
  84. cci-control-port = <&cci_control0>;
  85. enable-method = "allwinner,sun8i-a83t-smp";
  86. reg = <2>;
  87. #cooling-cells = <2>;
  88. };
  89. cpu3: cpu@3 {
  90. compatible = "arm,cortex-a7";
  91. device_type = "cpu";
  92. clocks = <&ccu CLK_C0CPUX>;
  93. operating-points-v2 = <&cpu0_opp_table>;
  94. cci-control-port = <&cci_control0>;
  95. enable-method = "allwinner,sun8i-a83t-smp";
  96. reg = <3>;
  97. #cooling-cells = <2>;
  98. };
  99. cpu100: cpu@100 {
  100. compatible = "arm,cortex-a7";
  101. device_type = "cpu";
  102. clocks = <&ccu CLK_C1CPUX>;
  103. operating-points-v2 = <&cpu1_opp_table>;
  104. cci-control-port = <&cci_control1>;
  105. enable-method = "allwinner,sun8i-a83t-smp";
  106. reg = <0x100>;
  107. #cooling-cells = <2>;
  108. };
  109. cpu101: cpu@101 {
  110. compatible = "arm,cortex-a7";
  111. device_type = "cpu";
  112. clocks = <&ccu CLK_C1CPUX>;
  113. operating-points-v2 = <&cpu1_opp_table>;
  114. cci-control-port = <&cci_control1>;
  115. enable-method = "allwinner,sun8i-a83t-smp";
  116. reg = <0x101>;
  117. #cooling-cells = <2>;
  118. };
  119. cpu102: cpu@102 {
  120. compatible = "arm,cortex-a7";
  121. device_type = "cpu";
  122. clocks = <&ccu CLK_C1CPUX>;
  123. operating-points-v2 = <&cpu1_opp_table>;
  124. cci-control-port = <&cci_control1>;
  125. enable-method = "allwinner,sun8i-a83t-smp";
  126. reg = <0x102>;
  127. #cooling-cells = <2>;
  128. };
  129. cpu103: cpu@103 {
  130. compatible = "arm,cortex-a7";
  131. device_type = "cpu";
  132. clocks = <&ccu CLK_C1CPUX>;
  133. operating-points-v2 = <&cpu1_opp_table>;
  134. cci-control-port = <&cci_control1>;
  135. enable-method = "allwinner,sun8i-a83t-smp";
  136. reg = <0x103>;
  137. #cooling-cells = <2>;
  138. };
  139. };
  140. timer {
  141. compatible = "arm,armv7-timer";
  142. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
  143. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
  144. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
  145. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
  146. };
  147. clocks {
  148. #address-cells = <1>;
  149. #size-cells = <1>;
  150. ranges;
  151. /* TODO: PRCM block has a mux for this. */
  152. osc24M: osc24M_clk {
  153. #clock-cells = <0>;
  154. compatible = "fixed-clock";
  155. clock-frequency = <24000000>;
  156. clock-accuracy = <50000>;
  157. clock-output-names = "osc24M";
  158. };
  159. /*
  160. * This is called "internal OSC" in some places.
  161. * It is an internal RC-based oscillator.
  162. * TODO: Its controls are in the PRCM block.
  163. */
  164. osc16M: osc16M_clk {
  165. #clock-cells = <0>;
  166. compatible = "fixed-clock";
  167. clock-frequency = <16000000>;
  168. clock-output-names = "osc16M";
  169. };
  170. osc16Md512: osc16Md512_clk {
  171. #clock-cells = <0>;
  172. compatible = "fixed-factor-clock";
  173. clock-div = <512>;
  174. clock-mult = <1>;
  175. clocks = <&osc16M>;
  176. clock-output-names = "osc16M-d512";
  177. };
  178. };
  179. de: display-engine {
  180. compatible = "allwinner,sun8i-a83t-display-engine";
  181. allwinner,pipelines = <&mixer0>, <&mixer1>;
  182. status = "disabled";
  183. };
  184. cpu0_opp_table: opp-table-cluster0 {
  185. compatible = "operating-points-v2";
  186. opp-shared;
  187. opp-480000000 {
  188. opp-hz = /bits/ 64 <480000000>;
  189. opp-microvolt = <840000>;
  190. clock-latency-ns = <244144>; /* 8 32k periods */
  191. };
  192. opp-600000000 {
  193. opp-hz = /bits/ 64 <600000000>;
  194. opp-microvolt = <840000>;
  195. clock-latency-ns = <244144>; /* 8 32k periods */
  196. };
  197. opp-720000000 {
  198. opp-hz = /bits/ 64 <720000000>;
  199. opp-microvolt = <840000>;
  200. clock-latency-ns = <244144>; /* 8 32k periods */
  201. };
  202. opp-864000000 {
  203. opp-hz = /bits/ 64 <864000000>;
  204. opp-microvolt = <840000>;
  205. clock-latency-ns = <244144>; /* 8 32k periods */
  206. };
  207. opp-912000000 {
  208. opp-hz = /bits/ 64 <912000000>;
  209. opp-microvolt = <840000>;
  210. clock-latency-ns = <244144>; /* 8 32k periods */
  211. };
  212. opp-1008000000 {
  213. opp-hz = /bits/ 64 <1008000000>;
  214. opp-microvolt = <840000>;
  215. clock-latency-ns = <244144>; /* 8 32k periods */
  216. };
  217. opp-1128000000 {
  218. opp-hz = /bits/ 64 <1128000000>;
  219. opp-microvolt = <840000>;
  220. clock-latency-ns = <244144>; /* 8 32k periods */
  221. };
  222. opp-1200000000 {
  223. opp-hz = /bits/ 64 <1200000000>;
  224. opp-microvolt = <840000>;
  225. clock-latency-ns = <244144>; /* 8 32k periods */
  226. };
  227. };
  228. cpu1_opp_table: opp-table-cluster1 {
  229. compatible = "operating-points-v2";
  230. opp-shared;
  231. opp-480000000 {
  232. opp-hz = /bits/ 64 <480000000>;
  233. opp-microvolt = <840000>;
  234. clock-latency-ns = <244144>; /* 8 32k periods */
  235. };
  236. opp-600000000 {
  237. opp-hz = /bits/ 64 <600000000>;
  238. opp-microvolt = <840000>;
  239. clock-latency-ns = <244144>; /* 8 32k periods */
  240. };
  241. opp-720000000 {
  242. opp-hz = /bits/ 64 <720000000>;
  243. opp-microvolt = <840000>;
  244. clock-latency-ns = <244144>; /* 8 32k periods */
  245. };
  246. opp-864000000 {
  247. opp-hz = /bits/ 64 <864000000>;
  248. opp-microvolt = <840000>;
  249. clock-latency-ns = <244144>; /* 8 32k periods */
  250. };
  251. opp-912000000 {
  252. opp-hz = /bits/ 64 <912000000>;
  253. opp-microvolt = <840000>;
  254. clock-latency-ns = <244144>; /* 8 32k periods */
  255. };
  256. opp-1008000000 {
  257. opp-hz = /bits/ 64 <1008000000>;
  258. opp-microvolt = <840000>;
  259. clock-latency-ns = <244144>; /* 8 32k periods */
  260. };
  261. opp-1128000000 {
  262. opp-hz = /bits/ 64 <1128000000>;
  263. opp-microvolt = <840000>;
  264. clock-latency-ns = <244144>; /* 8 32k periods */
  265. };
  266. opp-1200000000 {
  267. opp-hz = /bits/ 64 <1200000000>;
  268. opp-microvolt = <840000>;
  269. clock-latency-ns = <244144>; /* 8 32k periods */
  270. };
  271. };
  272. soc {
  273. compatible = "simple-bus";
  274. #address-cells = <1>;
  275. #size-cells = <1>;
  276. ranges;
  277. display_clocks: clock@1000000 {
  278. compatible = "allwinner,sun8i-a83t-de2-clk";
  279. reg = <0x01000000 0x10000>;
  280. clocks = <&ccu CLK_BUS_DE>,
  281. <&ccu CLK_PLL_DE>;
  282. clock-names = "bus",
  283. "mod";
  284. resets = <&ccu RST_BUS_DE>;
  285. #clock-cells = <1>;
  286. #reset-cells = <1>;
  287. };
  288. rotate: rotate@1020000 {
  289. compatible = "allwinner,sun8i-a83t-de2-rotate";
  290. reg = <0x1020000 0x10000>;
  291. interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
  292. clocks = <&display_clocks CLK_BUS_ROT>,
  293. <&display_clocks CLK_ROT>;
  294. clock-names = "bus",
  295. "mod";
  296. resets = <&display_clocks RST_ROT>;
  297. };
  298. mixer0: mixer@1100000 {
  299. compatible = "allwinner,sun8i-a83t-de2-mixer-0";
  300. reg = <0x01100000 0x100000>;
  301. clocks = <&display_clocks CLK_BUS_MIXER0>,
  302. <&display_clocks CLK_MIXER0>;
  303. clock-names = "bus",
  304. "mod";
  305. resets = <&display_clocks RST_MIXER0>;
  306. ports {
  307. #address-cells = <1>;
  308. #size-cells = <0>;
  309. mixer0_out: port@1 {
  310. #address-cells = <1>;
  311. #size-cells = <0>;
  312. reg = <1>;
  313. mixer0_out_tcon0: endpoint@0 {
  314. reg = <0>;
  315. remote-endpoint = <&tcon0_in_mixer0>;
  316. };
  317. mixer0_out_tcon1: endpoint@1 {
  318. reg = <1>;
  319. remote-endpoint = <&tcon1_in_mixer0>;
  320. };
  321. };
  322. };
  323. };
  324. mixer1: mixer@1200000 {
  325. compatible = "allwinner,sun8i-a83t-de2-mixer-1";
  326. reg = <0x01200000 0x100000>;
  327. clocks = <&display_clocks CLK_BUS_MIXER1>,
  328. <&display_clocks CLK_MIXER1>;
  329. clock-names = "bus",
  330. "mod";
  331. resets = <&display_clocks RST_WB>;
  332. ports {
  333. #address-cells = <1>;
  334. #size-cells = <0>;
  335. mixer1_out: port@1 {
  336. #address-cells = <1>;
  337. #size-cells = <0>;
  338. reg = <1>;
  339. mixer1_out_tcon0: endpoint@0 {
  340. reg = <0>;
  341. remote-endpoint = <&tcon0_in_mixer1>;
  342. };
  343. mixer1_out_tcon1: endpoint@1 {
  344. reg = <1>;
  345. remote-endpoint = <&tcon1_in_mixer1>;
  346. };
  347. };
  348. };
  349. };
  350. cpucfg@1700000 {
  351. compatible = "allwinner,sun8i-a83t-cpucfg";
  352. reg = <0x01700000 0x400>;
  353. };
  354. cci@1790000 {
  355. compatible = "arm,cci-400";
  356. #address-cells = <1>;
  357. #size-cells = <1>;
  358. reg = <0x01790000 0x10000>;
  359. ranges = <0x0 0x01790000 0x10000>;
  360. cci_control0: slave-if@4000 {
  361. compatible = "arm,cci-400-ctrl-if";
  362. interface-type = "ace";
  363. reg = <0x4000 0x1000>;
  364. };
  365. cci_control1: slave-if@5000 {
  366. compatible = "arm,cci-400-ctrl-if";
  367. interface-type = "ace";
  368. reg = <0x5000 0x1000>;
  369. };
  370. pmu@9000 {
  371. compatible = "arm,cci-400-pmu,r1";
  372. reg = <0x9000 0x5000>;
  373. interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
  374. <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
  375. <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
  376. <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
  377. <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
  378. <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
  379. <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
  380. <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
  381. };
  382. };
  383. syscon: syscon@1c00000 {
  384. compatible = "allwinner,sun8i-a83t-system-controller",
  385. "syscon";
  386. reg = <0x01c00000 0x1000>;
  387. };
  388. dma: dma-controller@1c02000 {
  389. compatible = "allwinner,sun8i-a83t-dma";
  390. reg = <0x01c02000 0x1000>;
  391. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  392. clocks = <&ccu CLK_BUS_DMA>;
  393. resets = <&ccu RST_BUS_DMA>;
  394. #dma-cells = <1>;
  395. };
  396. tcon0: lcd-controller@1c0c000 {
  397. compatible = "allwinner,sun8i-a83t-tcon-lcd";
  398. reg = <0x01c0c000 0x1000>;
  399. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  400. clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
  401. clock-names = "ahb", "tcon-ch0";
  402. clock-output-names = "tcon-pixel-clock";
  403. #clock-cells = <0>;
  404. resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
  405. reset-names = "lcd", "lvds";
  406. ports {
  407. #address-cells = <1>;
  408. #size-cells = <0>;
  409. tcon0_in: port@0 {
  410. #address-cells = <1>;
  411. #size-cells = <0>;
  412. reg = <0>;
  413. tcon0_in_mixer0: endpoint@0 {
  414. reg = <0>;
  415. remote-endpoint = <&mixer0_out_tcon0>;
  416. };
  417. tcon0_in_mixer1: endpoint@1 {
  418. reg = <1>;
  419. remote-endpoint = <&mixer1_out_tcon0>;
  420. };
  421. };
  422. tcon0_out: port@1 {
  423. reg = <1>;
  424. };
  425. };
  426. };
  427. tcon1: lcd-controller@1c0d000 {
  428. compatible = "allwinner,sun8i-a83t-tcon-tv";
  429. reg = <0x01c0d000 0x1000>;
  430. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  431. clocks = <&ccu CLK_BUS_TCON1>, <&ccu CLK_TCON1>;
  432. clock-names = "ahb", "tcon-ch1";
  433. resets = <&ccu RST_BUS_TCON1>;
  434. reset-names = "lcd";
  435. ports {
  436. #address-cells = <1>;
  437. #size-cells = <0>;
  438. tcon1_in: port@0 {
  439. #address-cells = <1>;
  440. #size-cells = <0>;
  441. reg = <0>;
  442. tcon1_in_mixer0: endpoint@0 {
  443. reg = <0>;
  444. remote-endpoint = <&mixer0_out_tcon1>;
  445. };
  446. tcon1_in_mixer1: endpoint@1 {
  447. reg = <1>;
  448. remote-endpoint = <&mixer1_out_tcon1>;
  449. };
  450. };
  451. tcon1_out: port@1 {
  452. #address-cells = <1>;
  453. #size-cells = <0>;
  454. reg = <1>;
  455. tcon1_out_hdmi: endpoint@1 {
  456. reg = <1>;
  457. remote-endpoint = <&hdmi_in_tcon1>;
  458. };
  459. };
  460. };
  461. };
  462. mmc0: mmc@1c0f000 {
  463. compatible = "allwinner,sun8i-a83t-mmc",
  464. "allwinner,sun7i-a20-mmc";
  465. reg = <0x01c0f000 0x1000>;
  466. clocks = <&ccu CLK_BUS_MMC0>,
  467. <&ccu CLK_MMC0>,
  468. <&ccu CLK_MMC0_OUTPUT>,
  469. <&ccu CLK_MMC0_SAMPLE>;
  470. clock-names = "ahb",
  471. "mmc",
  472. "output",
  473. "sample";
  474. resets = <&ccu RST_BUS_MMC0>;
  475. reset-names = "ahb";
  476. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  477. status = "disabled";
  478. #address-cells = <1>;
  479. #size-cells = <0>;
  480. };
  481. mmc1: mmc@1c10000 {
  482. compatible = "allwinner,sun8i-a83t-mmc",
  483. "allwinner,sun7i-a20-mmc";
  484. reg = <0x01c10000 0x1000>;
  485. clocks = <&ccu CLK_BUS_MMC1>,
  486. <&ccu CLK_MMC1>,
  487. <&ccu CLK_MMC1_OUTPUT>,
  488. <&ccu CLK_MMC1_SAMPLE>;
  489. clock-names = "ahb",
  490. "mmc",
  491. "output",
  492. "sample";
  493. resets = <&ccu RST_BUS_MMC1>;
  494. reset-names = "ahb";
  495. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  496. pinctrl-names = "default";
  497. pinctrl-0 = <&mmc1_pins>;
  498. status = "disabled";
  499. #address-cells = <1>;
  500. #size-cells = <0>;
  501. };
  502. mmc2: mmc@1c11000 {
  503. compatible = "allwinner,sun8i-a83t-emmc";
  504. reg = <0x01c11000 0x1000>;
  505. clocks = <&ccu CLK_BUS_MMC2>,
  506. <&ccu CLK_MMC2>,
  507. <&ccu CLK_MMC2_OUTPUT>,
  508. <&ccu CLK_MMC2_SAMPLE>;
  509. clock-names = "ahb",
  510. "mmc",
  511. "output",
  512. "sample";
  513. resets = <&ccu RST_BUS_MMC2>;
  514. reset-names = "ahb";
  515. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  516. status = "disabled";
  517. #address-cells = <1>;
  518. #size-cells = <0>;
  519. };
  520. sid: eeprom@1c14000 {
  521. compatible = "allwinner,sun8i-a83t-sid";
  522. reg = <0x1c14000 0x400>;
  523. #address-cells = <1>;
  524. #size-cells = <1>;
  525. ths_calibration: thermal-sensor-calibration@34 {
  526. reg = <0x34 8>;
  527. };
  528. };
  529. crypto: crypto@1c15000 {
  530. compatible = "allwinner,sun8i-a83t-crypto";
  531. reg = <0x01c15000 0x1000>;
  532. interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  533. resets = <&ccu RST_BUS_SS>;
  534. clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>;
  535. clock-names = "bus", "mod";
  536. };
  537. msgbox: mailbox@1c17000 {
  538. compatible = "allwinner,sun8i-a83t-msgbox",
  539. "allwinner,sun6i-a31-msgbox";
  540. reg = <0x01c17000 0x1000>;
  541. clocks = <&ccu CLK_BUS_MSGBOX>;
  542. resets = <&ccu RST_BUS_MSGBOX>;
  543. interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
  544. #mbox-cells = <1>;
  545. };
  546. usb_otg: usb@1c19000 {
  547. compatible = "allwinner,sun8i-a83t-musb",
  548. "allwinner,sun8i-a33-musb";
  549. reg = <0x01c19000 0x0400>;
  550. clocks = <&ccu CLK_BUS_OTG>;
  551. resets = <&ccu RST_BUS_OTG>;
  552. interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  553. interrupt-names = "mc";
  554. phys = <&usbphy 0>;
  555. phy-names = "usb";
  556. extcon = <&usbphy 0>;
  557. dr_mode = "otg";
  558. status = "disabled";
  559. };
  560. usbphy: phy@1c19400 {
  561. compatible = "allwinner,sun8i-a83t-usb-phy";
  562. reg = <0x01c19400 0x10>,
  563. <0x01c1a800 0x14>,
  564. <0x01c1b800 0x14>;
  565. reg-names = "phy_ctrl",
  566. "pmu1",
  567. "pmu2";
  568. clocks = <&ccu CLK_USB_PHY0>,
  569. <&ccu CLK_USB_PHY1>,
  570. <&ccu CLK_USB_HSIC>,
  571. <&ccu CLK_USB_HSIC_12M>;
  572. clock-names = "usb0_phy",
  573. "usb1_phy",
  574. "usb2_phy",
  575. "usb2_hsic_12M";
  576. resets = <&ccu RST_USB_PHY0>,
  577. <&ccu RST_USB_PHY1>,
  578. <&ccu RST_USB_HSIC>;
  579. reset-names = "usb0_reset",
  580. "usb1_reset",
  581. "usb2_reset";
  582. status = "disabled";
  583. #phy-cells = <1>;
  584. };
  585. ehci0: usb@1c1a000 {
  586. compatible = "allwinner,sun8i-a83t-ehci",
  587. "generic-ehci";
  588. reg = <0x01c1a000 0x100>;
  589. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  590. clocks = <&ccu CLK_BUS_EHCI0>;
  591. resets = <&ccu RST_BUS_EHCI0>;
  592. phys = <&usbphy 1>;
  593. phy-names = "usb";
  594. status = "disabled";
  595. };
  596. ohci0: usb@1c1a400 {
  597. compatible = "allwinner,sun8i-a83t-ohci",
  598. "generic-ohci";
  599. reg = <0x01c1a400 0x100>;
  600. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
  601. clocks = <&ccu CLK_BUS_OHCI0>, <&ccu CLK_USB_OHCI0>;
  602. resets = <&ccu RST_BUS_OHCI0>;
  603. phys = <&usbphy 1>;
  604. phy-names = "usb";
  605. status = "disabled";
  606. };
  607. ehci1: usb@1c1b000 {
  608. compatible = "allwinner,sun8i-a83t-ehci",
  609. "generic-ehci";
  610. reg = <0x01c1b000 0x100>;
  611. interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  612. clocks = <&ccu CLK_BUS_EHCI1>;
  613. resets = <&ccu RST_BUS_EHCI1>;
  614. phys = <&usbphy 2>;
  615. phy-names = "usb";
  616. status = "disabled";
  617. };
  618. ccu: clock@1c20000 {
  619. compatible = "allwinner,sun8i-a83t-ccu";
  620. reg = <0x01c20000 0x400>;
  621. clocks = <&osc24M>, <&osc16Md512>;
  622. clock-names = "hosc", "losc";
  623. #clock-cells = <1>;
  624. #reset-cells = <1>;
  625. };
  626. pio: pinctrl@1c20800 {
  627. compatible = "allwinner,sun8i-a83t-pinctrl";
  628. interrupt-parent = <&r_intc>;
  629. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
  630. <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
  631. <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
  632. reg = <0x01c20800 0x400>;
  633. clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc16Md512>;
  634. clock-names = "apb", "hosc", "losc";
  635. gpio-controller;
  636. interrupt-controller;
  637. #interrupt-cells = <3>;
  638. #gpio-cells = <3>;
  639. /omit-if-no-ref/
  640. csi_8bit_parallel_pins: csi-8bit-parallel-pins {
  641. pins = "PE0", "PE2", "PE3", "PE6", "PE7",
  642. "PE8", "PE9", "PE10", "PE11",
  643. "PE12", "PE13";
  644. function = "csi";
  645. };
  646. /omit-if-no-ref/
  647. csi_mclk_pin: csi-mclk-pin {
  648. pins = "PE1";
  649. function = "csi";
  650. };
  651. emac_rgmii_pins: emac-rgmii-pins {
  652. pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7",
  653. "PD11", "PD12", "PD13", "PD14", "PD18",
  654. "PD19", "PD21", "PD22", "PD23";
  655. function = "gmac";
  656. /*
  657. * data lines in RGMII mode use DDR mode
  658. * and need a higher signal drive strength
  659. */
  660. drive-strength = <40>;
  661. };
  662. hdmi_pins: hdmi-pins {
  663. pins = "PH6", "PH7", "PH8";
  664. function = "hdmi";
  665. };
  666. i2c0_pins: i2c0-pins {
  667. pins = "PH0", "PH1";
  668. function = "i2c0";
  669. };
  670. i2c1_pins: i2c1-pins {
  671. pins = "PH2", "PH3";
  672. function = "i2c1";
  673. };
  674. /omit-if-no-ref/
  675. i2c2_pe_pins: i2c2-pe-pins {
  676. pins = "PE14", "PE15";
  677. function = "i2c2";
  678. };
  679. i2c2_ph_pins: i2c2-ph-pins {
  680. pins = "PH4", "PH5";
  681. function = "i2c2";
  682. };
  683. i2s1_pins: i2s1-pins {
  684. /* I2S1 does not have external MCLK pin */
  685. pins = "PG10", "PG11", "PG12", "PG13";
  686. function = "i2s1";
  687. };
  688. lcd_lvds_pins: lcd-lvds-pins {
  689. pins = "PD18", "PD19", "PD20", "PD21", "PD22",
  690. "PD23", "PD24", "PD25", "PD26", "PD27";
  691. function = "lvds0";
  692. };
  693. mmc0_pins: mmc0-pins {
  694. pins = "PF0", "PF1", "PF2",
  695. "PF3", "PF4", "PF5";
  696. function = "mmc0";
  697. drive-strength = <30>;
  698. bias-pull-up;
  699. };
  700. mmc1_pins: mmc1-pins {
  701. pins = "PG0", "PG1", "PG2",
  702. "PG3", "PG4", "PG5";
  703. function = "mmc1";
  704. drive-strength = <30>;
  705. bias-pull-up;
  706. };
  707. mmc2_8bit_emmc_pins: mmc2-8bit-emmc-pins {
  708. pins = "PC5", "PC6", "PC8", "PC9",
  709. "PC10", "PC11", "PC12", "PC13",
  710. "PC14", "PC15", "PC16";
  711. function = "mmc2";
  712. drive-strength = <30>;
  713. bias-pull-up;
  714. };
  715. pwm_pin: pwm-pin {
  716. pins = "PD28";
  717. function = "pwm";
  718. };
  719. spdif_tx_pin: spdif-tx-pin {
  720. pins = "PE18";
  721. function = "spdif";
  722. };
  723. uart0_pb_pins: uart0-pb-pins {
  724. pins = "PB9", "PB10";
  725. function = "uart0";
  726. };
  727. uart0_pf_pins: uart0-pf-pins {
  728. pins = "PF2", "PF4";
  729. function = "uart0";
  730. };
  731. uart1_pins: uart1-pins {
  732. pins = "PG6", "PG7";
  733. function = "uart1";
  734. };
  735. uart1_rts_cts_pins: uart1-rts-cts-pins {
  736. pins = "PG8", "PG9";
  737. function = "uart1";
  738. };
  739. /omit-if-no-ref/
  740. uart2_pb_pins: uart2-pb-pins {
  741. pins = "PB0", "PB1";
  742. function = "uart2";
  743. };
  744. };
  745. timer@1c20c00 {
  746. compatible = "allwinner,sun8i-a23-timer";
  747. reg = <0x01c20c00 0xa0>;
  748. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  749. <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  750. clocks = <&osc24M>;
  751. };
  752. watchdog@1c20ca0 {
  753. compatible = "allwinner,sun6i-a31-wdt";
  754. reg = <0x01c20ca0 0x20>;
  755. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  756. clocks = <&osc24M>;
  757. };
  758. spdif: spdif@1c21000 {
  759. #sound-dai-cells = <0>;
  760. compatible = "allwinner,sun8i-a83t-spdif",
  761. "allwinner,sun8i-h3-spdif";
  762. reg = <0x01c21000 0x400>;
  763. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  764. clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
  765. resets = <&ccu RST_BUS_SPDIF>;
  766. clock-names = "apb", "spdif";
  767. dmas = <&dma 2>;
  768. dma-names = "tx";
  769. pinctrl-names = "default";
  770. pinctrl-0 = <&spdif_tx_pin>;
  771. status = "disabled";
  772. };
  773. i2s0: i2s@1c22000 {
  774. #sound-dai-cells = <0>;
  775. compatible = "allwinner,sun8i-a83t-i2s";
  776. reg = <0x01c22000 0x400>;
  777. interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
  778. clocks = <&ccu CLK_BUS_I2S0>, <&ccu CLK_I2S0>;
  779. clock-names = "apb", "mod";
  780. dmas = <&dma 3>, <&dma 3>;
  781. resets = <&ccu RST_BUS_I2S0>;
  782. dma-names = "rx", "tx";
  783. status = "disabled";
  784. };
  785. i2s1: i2s@1c22400 {
  786. #sound-dai-cells = <0>;
  787. compatible = "allwinner,sun8i-a83t-i2s";
  788. reg = <0x01c22400 0x400>;
  789. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  790. clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>;
  791. clock-names = "apb", "mod";
  792. dmas = <&dma 4>, <&dma 4>;
  793. resets = <&ccu RST_BUS_I2S1>;
  794. dma-names = "rx", "tx";
  795. pinctrl-names = "default";
  796. pinctrl-0 = <&i2s1_pins>;
  797. status = "disabled";
  798. };
  799. i2s2: i2s@1c22800 {
  800. #sound-dai-cells = <0>;
  801. compatible = "allwinner,sun8i-a83t-i2s";
  802. reg = <0x01c22800 0x400>;
  803. interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
  804. clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>;
  805. clock-names = "apb", "mod";
  806. dmas = <&dma 27>;
  807. resets = <&ccu RST_BUS_I2S2>;
  808. dma-names = "tx";
  809. status = "disabled";
  810. };
  811. pwm: pwm@1c21400 {
  812. compatible = "allwinner,sun8i-a83t-pwm",
  813. "allwinner,sun8i-h3-pwm";
  814. reg = <0x01c21400 0x400>;
  815. clocks = <&osc24M>;
  816. #pwm-cells = <3>;
  817. status = "disabled";
  818. };
  819. uart0: serial@1c28000 {
  820. compatible = "snps,dw-apb-uart";
  821. reg = <0x01c28000 0x400>;
  822. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
  823. reg-shift = <2>;
  824. reg-io-width = <4>;
  825. clocks = <&ccu CLK_BUS_UART0>;
  826. resets = <&ccu RST_BUS_UART0>;
  827. status = "disabled";
  828. };
  829. uart1: serial@1c28400 {
  830. compatible = "snps,dw-apb-uart";
  831. reg = <0x01c28400 0x400>;
  832. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  833. reg-shift = <2>;
  834. reg-io-width = <4>;
  835. clocks = <&ccu CLK_BUS_UART1>;
  836. resets = <&ccu RST_BUS_UART1>;
  837. status = "disabled";
  838. };
  839. uart2: serial@1c28800 {
  840. compatible = "snps,dw-apb-uart";
  841. reg = <0x01c28800 0x400>;
  842. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  843. reg-shift = <2>;
  844. reg-io-width = <4>;
  845. clocks = <&ccu CLK_BUS_UART2>;
  846. resets = <&ccu RST_BUS_UART2>;
  847. status = "disabled";
  848. };
  849. uart3: serial@1c28c00 {
  850. compatible = "snps,dw-apb-uart";
  851. reg = <0x01c28c00 0x400>;
  852. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  853. reg-shift = <2>;
  854. reg-io-width = <4>;
  855. clocks = <&ccu CLK_BUS_UART3>;
  856. resets = <&ccu RST_BUS_UART3>;
  857. status = "disabled";
  858. };
  859. uart4: serial@1c29000 {
  860. compatible = "snps,dw-apb-uart";
  861. reg = <0x01c29000 0x400>;
  862. interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  863. reg-shift = <2>;
  864. reg-io-width = <4>;
  865. clocks = <&ccu CLK_BUS_UART4>;
  866. resets = <&ccu RST_BUS_UART4>;
  867. status = "disabled";
  868. };
  869. i2c0: i2c@1c2ac00 {
  870. compatible = "allwinner,sun8i-a83t-i2c",
  871. "allwinner,sun6i-a31-i2c";
  872. reg = <0x01c2ac00 0x400>;
  873. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  874. clocks = <&ccu CLK_BUS_I2C0>;
  875. resets = <&ccu RST_BUS_I2C0>;
  876. pinctrl-names = "default";
  877. pinctrl-0 = <&i2c0_pins>;
  878. status = "disabled";
  879. #address-cells = <1>;
  880. #size-cells = <0>;
  881. };
  882. i2c1: i2c@1c2b000 {
  883. compatible = "allwinner,sun8i-a83t-i2c",
  884. "allwinner,sun6i-a31-i2c";
  885. reg = <0x01c2b000 0x400>;
  886. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  887. clocks = <&ccu CLK_BUS_I2C1>;
  888. resets = <&ccu RST_BUS_I2C1>;
  889. pinctrl-names = "default";
  890. pinctrl-0 = <&i2c1_pins>;
  891. status = "disabled";
  892. #address-cells = <1>;
  893. #size-cells = <0>;
  894. };
  895. i2c2: i2c@1c2b400 {
  896. compatible = "allwinner,sun8i-a83t-i2c",
  897. "allwinner,sun6i-a31-i2c";
  898. reg = <0x01c2b400 0x400>;
  899. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  900. clocks = <&ccu CLK_BUS_I2C2>;
  901. resets = <&ccu RST_BUS_I2C2>;
  902. status = "disabled";
  903. #address-cells = <1>;
  904. #size-cells = <0>;
  905. };
  906. emac: ethernet@1c30000 {
  907. compatible = "allwinner,sun8i-a83t-emac";
  908. syscon = <&syscon>;
  909. reg = <0x01c30000 0x104>;
  910. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  911. interrupt-names = "macirq";
  912. clocks = <&ccu CLK_BUS_EMAC>;
  913. clock-names = "stmmaceth";
  914. resets = <&ccu RST_BUS_EMAC>;
  915. reset-names = "stmmaceth";
  916. status = "disabled";
  917. mdio: mdio {
  918. compatible = "snps,dwmac-mdio";
  919. #address-cells = <1>;
  920. #size-cells = <0>;
  921. };
  922. };
  923. gic: interrupt-controller@1c81000 {
  924. compatible = "arm,gic-400";
  925. reg = <0x01c81000 0x1000>,
  926. <0x01c82000 0x2000>,
  927. <0x01c84000 0x2000>,
  928. <0x01c86000 0x2000>;
  929. interrupt-controller;
  930. #interrupt-cells = <3>;
  931. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
  932. };
  933. csi: camera@1cb0000 {
  934. compatible = "allwinner,sun8i-a83t-csi";
  935. reg = <0x01cb0000 0x1000>;
  936. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  937. clocks = <&ccu CLK_BUS_CSI>,
  938. <&ccu CLK_CSI_SCLK>,
  939. <&ccu CLK_DRAM_CSI>;
  940. clock-names = "bus", "mod", "ram";
  941. resets = <&ccu RST_BUS_CSI>;
  942. status = "disabled";
  943. };
  944. hdmi: hdmi@1ee0000 {
  945. compatible = "allwinner,sun8i-a83t-dw-hdmi";
  946. reg = <0x01ee0000 0x10000>;
  947. reg-io-width = <1>;
  948. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  949. clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
  950. <&ccu CLK_HDMI>;
  951. clock-names = "iahb", "isfr", "tmds";
  952. resets = <&ccu RST_BUS_HDMI1>;
  953. reset-names = "ctrl";
  954. phys = <&hdmi_phy>;
  955. phy-names = "phy";
  956. pinctrl-names = "default";
  957. pinctrl-0 = <&hdmi_pins>;
  958. status = "disabled";
  959. ports {
  960. #address-cells = <1>;
  961. #size-cells = <0>;
  962. hdmi_in: port@0 {
  963. reg = <0>;
  964. hdmi_in_tcon1: endpoint {
  965. remote-endpoint = <&tcon1_out_hdmi>;
  966. };
  967. };
  968. hdmi_out: port@1 {
  969. reg = <1>;
  970. };
  971. };
  972. };
  973. hdmi_phy: hdmi-phy@1ef0000 {
  974. compatible = "allwinner,sun8i-a83t-hdmi-phy";
  975. reg = <0x01ef0000 0x10000>;
  976. clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>;
  977. clock-names = "bus", "mod";
  978. resets = <&ccu RST_BUS_HDMI0>;
  979. reset-names = "phy";
  980. #phy-cells = <0>;
  981. };
  982. r_intc: interrupt-controller@1f00c00 {
  983. compatible = "allwinner,sun8i-a83t-r-intc",
  984. "allwinner,sun6i-a31-r-intc";
  985. interrupt-controller;
  986. #interrupt-cells = <3>;
  987. reg = <0x01f00c00 0x400>;
  988. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  989. };
  990. r_ccu: clock@1f01400 {
  991. compatible = "allwinner,sun8i-a83t-r-ccu";
  992. reg = <0x01f01400 0x400>;
  993. clocks = <&osc24M>, <&osc16Md512>, <&osc16M>,
  994. <&ccu CLK_PLL_PERIPH>;
  995. clock-names = "hosc", "losc", "iosc", "pll-periph";
  996. #clock-cells = <1>;
  997. #reset-cells = <1>;
  998. };
  999. r_cpucfg@1f01c00 {
  1000. compatible = "allwinner,sun8i-a83t-r-cpucfg";
  1001. reg = <0x1f01c00 0x400>;
  1002. };
  1003. r_cir: ir@1f02000 {
  1004. compatible = "allwinner,sun8i-a83t-ir",
  1005. "allwinner,sun6i-a31-ir";
  1006. clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>;
  1007. clock-names = "apb", "ir";
  1008. resets = <&r_ccu RST_APB0_IR>;
  1009. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  1010. reg = <0x01f02000 0x400>;
  1011. pinctrl-names = "default";
  1012. pinctrl-0 = <&r_cir_pin>;
  1013. status = "disabled";
  1014. };
  1015. r_lradc: lradc@1f03c00 {
  1016. compatible = "allwinner,sun8i-a83t-r-lradc";
  1017. reg = <0x01f03c00 0x100>;
  1018. interrupt-parent = <&r_intc>;
  1019. interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
  1020. status = "disabled";
  1021. };
  1022. r_pio: pinctrl@1f02c00 {
  1023. compatible = "allwinner,sun8i-a83t-r-pinctrl";
  1024. reg = <0x01f02c00 0x400>;
  1025. interrupt-parent = <&r_intc>;
  1026. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  1027. clocks = <&r_ccu CLK_APB0_PIO>, <&osc24M>,
  1028. <&osc16Md512>;
  1029. clock-names = "apb", "hosc", "losc";
  1030. gpio-controller;
  1031. #gpio-cells = <3>;
  1032. interrupt-controller;
  1033. #interrupt-cells = <3>;
  1034. r_cir_pin: r-cir-pin {
  1035. pins = "PL12";
  1036. function = "s_cir_rx";
  1037. };
  1038. r_rsb_pins: r-rsb-pins {
  1039. pins = "PL0", "PL1";
  1040. function = "s_rsb";
  1041. drive-strength = <20>;
  1042. bias-pull-up;
  1043. };
  1044. };
  1045. r_rsb: rsb@1f03400 {
  1046. compatible = "allwinner,sun8i-a83t-rsb",
  1047. "allwinner,sun8i-a23-rsb";
  1048. reg = <0x01f03400 0x400>;
  1049. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  1050. clocks = <&r_ccu CLK_APB0_RSB>;
  1051. clock-frequency = <3000000>;
  1052. resets = <&r_ccu RST_APB0_RSB>;
  1053. pinctrl-names = "default";
  1054. pinctrl-0 = <&r_rsb_pins>;
  1055. status = "disabled";
  1056. #address-cells = <1>;
  1057. #size-cells = <0>;
  1058. };
  1059. ths: thermal-sensor@1f04000 {
  1060. compatible = "allwinner,sun8i-a83t-ths";
  1061. reg = <0x01f04000 0x100>;
  1062. interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  1063. nvmem-cells = <&ths_calibration>;
  1064. nvmem-cell-names = "calibration";
  1065. #thermal-sensor-cells = <1>;
  1066. };
  1067. };
  1068. thermal-zones {
  1069. cpu0_thermal: cpu0-thermal {
  1070. polling-delay-passive = <0>;
  1071. polling-delay = <0>;
  1072. thermal-sensors = <&ths 0>;
  1073. trips {
  1074. cpu0_hot: cpu-hot {
  1075. temperature = <80000>;
  1076. hysteresis = <2000>;
  1077. type = "passive";
  1078. };
  1079. cpu0_very_hot: cpu-very-hot {
  1080. temperature = <100000>;
  1081. hysteresis = <0>;
  1082. type = "critical";
  1083. };
  1084. };
  1085. cooling-maps {
  1086. cpu-hot-limit {
  1087. trip = <&cpu0_hot>;
  1088. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  1089. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  1090. <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  1091. <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  1092. };
  1093. };
  1094. };
  1095. cpu1_thermal: cpu1-thermal {
  1096. polling-delay-passive = <0>;
  1097. polling-delay = <0>;
  1098. thermal-sensors = <&ths 1>;
  1099. trips {
  1100. cpu1_hot: cpu-hot {
  1101. temperature = <80000>;
  1102. hysteresis = <2000>;
  1103. type = "passive";
  1104. };
  1105. cpu1_very_hot: cpu-very-hot {
  1106. temperature = <100000>;
  1107. hysteresis = <0>;
  1108. type = "critical";
  1109. };
  1110. };
  1111. cooling-maps {
  1112. cpu-hot-limit {
  1113. trip = <&cpu1_hot>;
  1114. cooling-device = <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  1115. <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  1116. <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  1117. <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  1118. };
  1119. };
  1120. };
  1121. gpu_thermal: gpu-thermal {
  1122. polling-delay-passive = <0>;
  1123. polling-delay = <0>;
  1124. thermal-sensors = <&ths 2>;
  1125. };
  1126. };
  1127. };