rk3288.dtsi 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. #include <dt-bindings/gpio/gpio.h>
  3. #include <dt-bindings/interrupt-controller/irq.h>
  4. #include <dt-bindings/interrupt-controller/arm-gic.h>
  5. #include <dt-bindings/pinctrl/rockchip.h>
  6. #include <dt-bindings/clock/rk3288-cru.h>
  7. #include <dt-bindings/power/rk3288-power.h>
  8. #include <dt-bindings/thermal/thermal.h>
  9. #include <dt-bindings/soc/rockchip,boot-mode.h>
  10. / {
  11. #address-cells = <2>;
  12. #size-cells = <2>;
  13. compatible = "rockchip,rk3288";
  14. interrupt-parent = <&gic>;
  15. aliases {
  16. ethernet0 = &gmac;
  17. i2c0 = &i2c0;
  18. i2c1 = &i2c1;
  19. i2c2 = &i2c2;
  20. i2c3 = &i2c3;
  21. i2c4 = &i2c4;
  22. i2c5 = &i2c5;
  23. mshc0 = &emmc;
  24. mshc1 = &sdmmc;
  25. mshc2 = &sdio0;
  26. mshc3 = &sdio1;
  27. serial0 = &uart0;
  28. serial1 = &uart1;
  29. serial2 = &uart2;
  30. serial3 = &uart3;
  31. serial4 = &uart4;
  32. spi0 = &spi0;
  33. spi1 = &spi1;
  34. spi2 = &spi2;
  35. };
  36. arm-pmu {
  37. compatible = "arm,cortex-a12-pmu";
  38. interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
  39. <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
  40. <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
  41. <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
  42. interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
  43. };
  44. cpus {
  45. #address-cells = <1>;
  46. #size-cells = <0>;
  47. enable-method = "rockchip,rk3066-smp";
  48. rockchip,pmu = <&pmu>;
  49. cpu0: cpu@500 {
  50. device_type = "cpu";
  51. compatible = "arm,cortex-a12";
  52. reg = <0x500>;
  53. resets = <&cru SRST_CORE0>;
  54. operating-points-v2 = <&cpu_opp_table>;
  55. #cooling-cells = <2>; /* min followed by max */
  56. clock-latency = <40000>;
  57. clocks = <&cru ARMCLK>;
  58. dynamic-power-coefficient = <370>;
  59. };
  60. cpu1: cpu@501 {
  61. device_type = "cpu";
  62. compatible = "arm,cortex-a12";
  63. reg = <0x501>;
  64. resets = <&cru SRST_CORE1>;
  65. operating-points-v2 = <&cpu_opp_table>;
  66. #cooling-cells = <2>; /* min followed by max */
  67. clock-latency = <40000>;
  68. clocks = <&cru ARMCLK>;
  69. dynamic-power-coefficient = <370>;
  70. };
  71. cpu2: cpu@502 {
  72. device_type = "cpu";
  73. compatible = "arm,cortex-a12";
  74. reg = <0x502>;
  75. resets = <&cru SRST_CORE2>;
  76. operating-points-v2 = <&cpu_opp_table>;
  77. #cooling-cells = <2>; /* min followed by max */
  78. clock-latency = <40000>;
  79. clocks = <&cru ARMCLK>;
  80. dynamic-power-coefficient = <370>;
  81. };
  82. cpu3: cpu@503 {
  83. device_type = "cpu";
  84. compatible = "arm,cortex-a12";
  85. reg = <0x503>;
  86. resets = <&cru SRST_CORE3>;
  87. operating-points-v2 = <&cpu_opp_table>;
  88. #cooling-cells = <2>; /* min followed by max */
  89. clock-latency = <40000>;
  90. clocks = <&cru ARMCLK>;
  91. dynamic-power-coefficient = <370>;
  92. };
  93. };
  94. cpu_opp_table: opp-table-0 {
  95. compatible = "operating-points-v2";
  96. opp-shared;
  97. opp-126000000 {
  98. opp-hz = /bits/ 64 <126000000>;
  99. opp-microvolt = <900000>;
  100. };
  101. opp-216000000 {
  102. opp-hz = /bits/ 64 <216000000>;
  103. opp-microvolt = <900000>;
  104. };
  105. opp-312000000 {
  106. opp-hz = /bits/ 64 <312000000>;
  107. opp-microvolt = <900000>;
  108. };
  109. opp-408000000 {
  110. opp-hz = /bits/ 64 <408000000>;
  111. opp-microvolt = <900000>;
  112. };
  113. opp-600000000 {
  114. opp-hz = /bits/ 64 <600000000>;
  115. opp-microvolt = <900000>;
  116. };
  117. opp-696000000 {
  118. opp-hz = /bits/ 64 <696000000>;
  119. opp-microvolt = <950000>;
  120. };
  121. opp-816000000 {
  122. opp-hz = /bits/ 64 <816000000>;
  123. opp-microvolt = <1000000>;
  124. };
  125. opp-1008000000 {
  126. opp-hz = /bits/ 64 <1008000000>;
  127. opp-microvolt = <1050000>;
  128. };
  129. opp-1200000000 {
  130. opp-hz = /bits/ 64 <1200000000>;
  131. opp-microvolt = <1100000>;
  132. };
  133. opp-1416000000 {
  134. opp-hz = /bits/ 64 <1416000000>;
  135. opp-microvolt = <1200000>;
  136. };
  137. opp-1512000000 {
  138. opp-hz = /bits/ 64 <1512000000>;
  139. opp-microvolt = <1300000>;
  140. };
  141. opp-1608000000 {
  142. opp-hz = /bits/ 64 <1608000000>;
  143. opp-microvolt = <1350000>;
  144. };
  145. };
  146. reserved-memory {
  147. #address-cells = <2>;
  148. #size-cells = <2>;
  149. ranges;
  150. /*
  151. * The rk3288 cannot use the memory area above 0xfe000000
  152. * for dma operations for some reason. While there is
  153. * probably a better solution available somewhere, we
  154. * haven't found it yet and while devices with 2GB of ram
  155. * are not affected, this issue prevents 4GB from booting.
  156. * So to make these devices at least bootable, block
  157. * this area for the time being until the real solution
  158. * is found.
  159. */
  160. dma-unusable@fe000000 {
  161. reg = <0x0 0xfe000000 0x0 0x1000000>;
  162. };
  163. };
  164. xin24m: oscillator {
  165. compatible = "fixed-clock";
  166. clock-frequency = <24000000>;
  167. clock-output-names = "xin24m";
  168. #clock-cells = <0>;
  169. };
  170. timer {
  171. compatible = "arm,armv7-timer";
  172. arm,cpu-registers-not-fw-configured;
  173. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  174. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  175. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  176. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  177. clock-frequency = <24000000>;
  178. arm,no-tick-in-suspend;
  179. };
  180. timer: timer@ff810000 {
  181. compatible = "rockchip,rk3288-timer";
  182. reg = <0x0 0xff810000 0x0 0x20>;
  183. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  184. clocks = <&cru PCLK_TIMER>, <&xin24m>;
  185. clock-names = "pclk", "timer";
  186. };
  187. display-subsystem {
  188. compatible = "rockchip,display-subsystem";
  189. ports = <&vopl_out>, <&vopb_out>;
  190. };
  191. sdmmc: mmc@ff0c0000 {
  192. compatible = "rockchip,rk3288-dw-mshc";
  193. max-frequency = <150000000>;
  194. clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
  195. <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
  196. clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
  197. fifo-depth = <0x100>;
  198. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  199. reg = <0x0 0xff0c0000 0x0 0x4000>;
  200. resets = <&cru SRST_MMC0>;
  201. reset-names = "reset";
  202. status = "disabled";
  203. };
  204. sdio0: mmc@ff0d0000 {
  205. compatible = "rockchip,rk3288-dw-mshc";
  206. max-frequency = <150000000>;
  207. clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>,
  208. <&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>;
  209. clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
  210. fifo-depth = <0x100>;
  211. interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
  212. reg = <0x0 0xff0d0000 0x0 0x4000>;
  213. resets = <&cru SRST_SDIO0>;
  214. reset-names = "reset";
  215. status = "disabled";
  216. };
  217. sdio1: mmc@ff0e0000 {
  218. compatible = "rockchip,rk3288-dw-mshc";
  219. max-frequency = <150000000>;
  220. clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>,
  221. <&cru SCLK_SDIO1_DRV>, <&cru SCLK_SDIO1_SAMPLE>;
  222. clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
  223. fifo-depth = <0x100>;
  224. interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
  225. reg = <0x0 0xff0e0000 0x0 0x4000>;
  226. resets = <&cru SRST_SDIO1>;
  227. reset-names = "reset";
  228. status = "disabled";
  229. };
  230. emmc: mmc@ff0f0000 {
  231. compatible = "rockchip,rk3288-dw-mshc";
  232. max-frequency = <150000000>;
  233. clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
  234. <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
  235. clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
  236. fifo-depth = <0x100>;
  237. interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
  238. reg = <0x0 0xff0f0000 0x0 0x4000>;
  239. resets = <&cru SRST_EMMC>;
  240. reset-names = "reset";
  241. status = "disabled";
  242. };
  243. saradc: saradc@ff100000 {
  244. compatible = "rockchip,saradc";
  245. reg = <0x0 0xff100000 0x0 0x100>;
  246. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
  247. #io-channel-cells = <1>;
  248. clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
  249. clock-names = "saradc", "apb_pclk";
  250. resets = <&cru SRST_SARADC>;
  251. reset-names = "saradc-apb";
  252. status = "disabled";
  253. };
  254. spi0: spi@ff110000 {
  255. compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
  256. clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
  257. clock-names = "spiclk", "apb_pclk";
  258. dmas = <&dmac_peri 11>, <&dmac_peri 12>;
  259. dma-names = "tx", "rx";
  260. interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
  261. pinctrl-names = "default";
  262. pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
  263. reg = <0x0 0xff110000 0x0 0x1000>;
  264. #address-cells = <1>;
  265. #size-cells = <0>;
  266. status = "disabled";
  267. };
  268. spi1: spi@ff120000 {
  269. compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
  270. clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
  271. clock-names = "spiclk", "apb_pclk";
  272. dmas = <&dmac_peri 13>, <&dmac_peri 14>;
  273. dma-names = "tx", "rx";
  274. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  275. pinctrl-names = "default";
  276. pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
  277. reg = <0x0 0xff120000 0x0 0x1000>;
  278. #address-cells = <1>;
  279. #size-cells = <0>;
  280. status = "disabled";
  281. };
  282. spi2: spi@ff130000 {
  283. compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
  284. clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
  285. clock-names = "spiclk", "apb_pclk";
  286. dmas = <&dmac_peri 15>, <&dmac_peri 16>;
  287. dma-names = "tx", "rx";
  288. interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
  289. pinctrl-names = "default";
  290. pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
  291. reg = <0x0 0xff130000 0x0 0x1000>;
  292. #address-cells = <1>;
  293. #size-cells = <0>;
  294. status = "disabled";
  295. };
  296. i2c1: i2c@ff140000 {
  297. compatible = "rockchip,rk3288-i2c";
  298. reg = <0x0 0xff140000 0x0 0x1000>;
  299. interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  300. #address-cells = <1>;
  301. #size-cells = <0>;
  302. clock-names = "i2c";
  303. clocks = <&cru PCLK_I2C1>;
  304. pinctrl-names = "default";
  305. pinctrl-0 = <&i2c1_xfer>;
  306. status = "disabled";
  307. };
  308. i2c3: i2c@ff150000 {
  309. compatible = "rockchip,rk3288-i2c";
  310. reg = <0x0 0xff150000 0x0 0x1000>;
  311. interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
  312. #address-cells = <1>;
  313. #size-cells = <0>;
  314. clock-names = "i2c";
  315. clocks = <&cru PCLK_I2C3>;
  316. pinctrl-names = "default";
  317. pinctrl-0 = <&i2c3_xfer>;
  318. status = "disabled";
  319. };
  320. i2c4: i2c@ff160000 {
  321. compatible = "rockchip,rk3288-i2c";
  322. reg = <0x0 0xff160000 0x0 0x1000>;
  323. interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
  324. #address-cells = <1>;
  325. #size-cells = <0>;
  326. clock-names = "i2c";
  327. clocks = <&cru PCLK_I2C4>;
  328. pinctrl-names = "default";
  329. pinctrl-0 = <&i2c4_xfer>;
  330. status = "disabled";
  331. };
  332. i2c5: i2c@ff170000 {
  333. compatible = "rockchip,rk3288-i2c";
  334. reg = <0x0 0xff170000 0x0 0x1000>;
  335. interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  336. #address-cells = <1>;
  337. #size-cells = <0>;
  338. clock-names = "i2c";
  339. clocks = <&cru PCLK_I2C5>;
  340. pinctrl-names = "default";
  341. pinctrl-0 = <&i2c5_xfer>;
  342. status = "disabled";
  343. };
  344. uart0: serial@ff180000 {
  345. compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
  346. reg = <0x0 0xff180000 0x0 0x100>;
  347. interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
  348. reg-shift = <2>;
  349. reg-io-width = <4>;
  350. clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
  351. clock-names = "baudclk", "apb_pclk";
  352. dmas = <&dmac_peri 1>, <&dmac_peri 2>;
  353. dma-names = "tx", "rx";
  354. pinctrl-names = "default";
  355. pinctrl-0 = <&uart0_xfer>;
  356. status = "disabled";
  357. };
  358. uart1: serial@ff190000 {
  359. compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
  360. reg = <0x0 0xff190000 0x0 0x100>;
  361. interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
  362. reg-shift = <2>;
  363. reg-io-width = <4>;
  364. clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
  365. clock-names = "baudclk", "apb_pclk";
  366. dmas = <&dmac_peri 3>, <&dmac_peri 4>;
  367. dma-names = "tx", "rx";
  368. pinctrl-names = "default";
  369. pinctrl-0 = <&uart1_xfer>;
  370. status = "disabled";
  371. };
  372. uart2: serial@ff690000 {
  373. compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
  374. reg = <0x0 0xff690000 0x0 0x100>;
  375. interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
  376. reg-shift = <2>;
  377. reg-io-width = <4>;
  378. clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
  379. clock-names = "baudclk", "apb_pclk";
  380. pinctrl-names = "default";
  381. pinctrl-0 = <&uart2_xfer>;
  382. status = "disabled";
  383. };
  384. uart3: serial@ff1b0000 {
  385. compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
  386. reg = <0x0 0xff1b0000 0x0 0x100>;
  387. interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
  388. reg-shift = <2>;
  389. reg-io-width = <4>;
  390. clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
  391. clock-names = "baudclk", "apb_pclk";
  392. dmas = <&dmac_peri 7>, <&dmac_peri 8>;
  393. dma-names = "tx", "rx";
  394. pinctrl-names = "default";
  395. pinctrl-0 = <&uart3_xfer>;
  396. status = "disabled";
  397. };
  398. uart4: serial@ff1c0000 {
  399. compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
  400. reg = <0x0 0xff1c0000 0x0 0x100>;
  401. interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
  402. reg-shift = <2>;
  403. reg-io-width = <4>;
  404. clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
  405. clock-names = "baudclk", "apb_pclk";
  406. dmas = <&dmac_peri 9>, <&dmac_peri 10>;
  407. dma-names = "tx", "rx";
  408. pinctrl-names = "default";
  409. pinctrl-0 = <&uart4_xfer>;
  410. status = "disabled";
  411. };
  412. dmac_peri: dma-controller@ff250000 {
  413. compatible = "arm,pl330", "arm,primecell";
  414. reg = <0x0 0xff250000 0x0 0x4000>;
  415. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
  416. <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  417. #dma-cells = <1>;
  418. arm,pl330-broken-no-flushp;
  419. arm,pl330-periph-burst;
  420. clocks = <&cru ACLK_DMAC2>;
  421. clock-names = "apb_pclk";
  422. };
  423. thermal-zones {
  424. reserve_thermal: reserve-thermal {
  425. polling-delay-passive = <1000>; /* milliseconds */
  426. polling-delay = <5000>; /* milliseconds */
  427. thermal-sensors = <&tsadc 0>;
  428. };
  429. cpu_thermal: cpu-thermal {
  430. polling-delay-passive = <100>; /* milliseconds */
  431. polling-delay = <5000>; /* milliseconds */
  432. thermal-sensors = <&tsadc 1>;
  433. trips {
  434. cpu_alert0: cpu_alert0 {
  435. temperature = <70000>; /* millicelsius */
  436. hysteresis = <2000>; /* millicelsius */
  437. type = "passive";
  438. };
  439. cpu_alert1: cpu_alert1 {
  440. temperature = <75000>; /* millicelsius */
  441. hysteresis = <2000>; /* millicelsius */
  442. type = "passive";
  443. };
  444. cpu_crit: cpu_crit {
  445. temperature = <90000>; /* millicelsius */
  446. hysteresis = <2000>; /* millicelsius */
  447. type = "critical";
  448. };
  449. };
  450. cooling-maps {
  451. map0 {
  452. trip = <&cpu_alert0>;
  453. cooling-device =
  454. <&cpu0 THERMAL_NO_LIMIT 6>,
  455. <&cpu1 THERMAL_NO_LIMIT 6>,
  456. <&cpu2 THERMAL_NO_LIMIT 6>,
  457. <&cpu3 THERMAL_NO_LIMIT 6>;
  458. };
  459. map1 {
  460. trip = <&cpu_alert1>;
  461. cooling-device =
  462. <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  463. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  464. <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  465. <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  466. };
  467. };
  468. };
  469. gpu_thermal: gpu-thermal {
  470. polling-delay-passive = <100>; /* milliseconds */
  471. polling-delay = <5000>; /* milliseconds */
  472. thermal-sensors = <&tsadc 2>;
  473. trips {
  474. gpu_alert0: gpu_alert0 {
  475. temperature = <70000>; /* millicelsius */
  476. hysteresis = <2000>; /* millicelsius */
  477. type = "passive";
  478. };
  479. gpu_crit: gpu_crit {
  480. temperature = <90000>; /* millicelsius */
  481. hysteresis = <2000>; /* millicelsius */
  482. type = "critical";
  483. };
  484. };
  485. cooling-maps {
  486. map0 {
  487. trip = <&gpu_alert0>;
  488. cooling-device =
  489. <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  490. };
  491. };
  492. };
  493. };
  494. tsadc: tsadc@ff280000 {
  495. compatible = "rockchip,rk3288-tsadc";
  496. reg = <0x0 0xff280000 0x0 0x100>;
  497. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  498. clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
  499. clock-names = "tsadc", "apb_pclk";
  500. resets = <&cru SRST_TSADC>;
  501. reset-names = "tsadc-apb";
  502. pinctrl-names = "init", "default", "sleep";
  503. pinctrl-0 = <&otp_pin>;
  504. pinctrl-1 = <&otp_out>;
  505. pinctrl-2 = <&otp_pin>;
  506. #thermal-sensor-cells = <1>;
  507. rockchip,grf = <&grf>;
  508. rockchip,hw-tshut-temp = <95000>;
  509. status = "disabled";
  510. };
  511. gmac: ethernet@ff290000 {
  512. compatible = "rockchip,rk3288-gmac";
  513. reg = <0x0 0xff290000 0x0 0x10000>;
  514. interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
  515. <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  516. interrupt-names = "macirq", "eth_wake_irq";
  517. rockchip,grf = <&grf>;
  518. clocks = <&cru SCLK_MAC>,
  519. <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
  520. <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
  521. <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
  522. clock-names = "stmmaceth",
  523. "mac_clk_rx", "mac_clk_tx",
  524. "clk_mac_ref", "clk_mac_refout",
  525. "aclk_mac", "pclk_mac";
  526. resets = <&cru SRST_MAC>;
  527. reset-names = "stmmaceth";
  528. status = "disabled";
  529. };
  530. usb_host0_ehci: usb@ff500000 {
  531. compatible = "generic-ehci";
  532. reg = <0x0 0xff500000 0x0 0x100>;
  533. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  534. clocks = <&cru HCLK_USBHOST0>;
  535. phys = <&usbphy1>;
  536. phy-names = "usb";
  537. status = "disabled";
  538. };
  539. /* NOTE: doesn't work on RK3288, but was fixed on RK3288W */
  540. usb_host0_ohci: usb@ff520000 {
  541. compatible = "generic-ohci";
  542. reg = <0x0 0xff520000 0x0 0x100>;
  543. interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  544. clocks = <&cru HCLK_USBHOST0>;
  545. phys = <&usbphy1>;
  546. phy-names = "usb";
  547. status = "disabled";
  548. };
  549. usb_host1: usb@ff540000 {
  550. compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
  551. "snps,dwc2";
  552. reg = <0x0 0xff540000 0x0 0x40000>;
  553. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  554. clocks = <&cru HCLK_USBHOST1>;
  555. clock-names = "otg";
  556. dr_mode = "host";
  557. phys = <&usbphy2>;
  558. phy-names = "usb2-phy";
  559. snps,reset-phy-on-wake;
  560. status = "disabled";
  561. };
  562. usb_otg: usb@ff580000 {
  563. compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
  564. "snps,dwc2";
  565. reg = <0x0 0xff580000 0x0 0x40000>;
  566. interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  567. clocks = <&cru HCLK_OTG0>;
  568. clock-names = "otg";
  569. dr_mode = "otg";
  570. g-np-tx-fifo-size = <16>;
  571. g-rx-fifo-size = <275>;
  572. g-tx-fifo-size = <256 128 128 64 64 32>;
  573. phys = <&usbphy0>;
  574. phy-names = "usb2-phy";
  575. status = "disabled";
  576. };
  577. usb_hsic: usb@ff5c0000 {
  578. compatible = "generic-ehci";
  579. reg = <0x0 0xff5c0000 0x0 0x100>;
  580. interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
  581. clocks = <&cru HCLK_HSIC>;
  582. status = "disabled";
  583. };
  584. dmac_bus_ns: dma-controller@ff600000 {
  585. compatible = "arm,pl330", "arm,primecell";
  586. reg = <0x0 0xff600000 0x0 0x4000>;
  587. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
  588. <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  589. #dma-cells = <1>;
  590. arm,pl330-broken-no-flushp;
  591. arm,pl330-periph-burst;
  592. clocks = <&cru ACLK_DMAC1>;
  593. clock-names = "apb_pclk";
  594. status = "disabled";
  595. };
  596. i2c0: i2c@ff650000 {
  597. compatible = "rockchip,rk3288-i2c";
  598. reg = <0x0 0xff650000 0x0 0x1000>;
  599. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  600. #address-cells = <1>;
  601. #size-cells = <0>;
  602. clock-names = "i2c";
  603. clocks = <&cru PCLK_I2C0>;
  604. pinctrl-names = "default";
  605. pinctrl-0 = <&i2c0_xfer>;
  606. status = "disabled";
  607. };
  608. i2c2: i2c@ff660000 {
  609. compatible = "rockchip,rk3288-i2c";
  610. reg = <0x0 0xff660000 0x0 0x1000>;
  611. interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  612. #address-cells = <1>;
  613. #size-cells = <0>;
  614. clock-names = "i2c";
  615. clocks = <&cru PCLK_I2C2>;
  616. pinctrl-names = "default";
  617. pinctrl-0 = <&i2c2_xfer>;
  618. status = "disabled";
  619. };
  620. pwm0: pwm@ff680000 {
  621. compatible = "rockchip,rk3288-pwm";
  622. reg = <0x0 0xff680000 0x0 0x10>;
  623. #pwm-cells = <3>;
  624. pinctrl-names = "default";
  625. pinctrl-0 = <&pwm0_pin>;
  626. clocks = <&cru PCLK_RKPWM>;
  627. status = "disabled";
  628. };
  629. pwm1: pwm@ff680010 {
  630. compatible = "rockchip,rk3288-pwm";
  631. reg = <0x0 0xff680010 0x0 0x10>;
  632. #pwm-cells = <3>;
  633. pinctrl-names = "default";
  634. pinctrl-0 = <&pwm1_pin>;
  635. clocks = <&cru PCLK_RKPWM>;
  636. status = "disabled";
  637. };
  638. pwm2: pwm@ff680020 {
  639. compatible = "rockchip,rk3288-pwm";
  640. reg = <0x0 0xff680020 0x0 0x10>;
  641. #pwm-cells = <3>;
  642. pinctrl-names = "default";
  643. pinctrl-0 = <&pwm2_pin>;
  644. clocks = <&cru PCLK_RKPWM>;
  645. status = "disabled";
  646. };
  647. pwm3: pwm@ff680030 {
  648. compatible = "rockchip,rk3288-pwm";
  649. reg = <0x0 0xff680030 0x0 0x10>;
  650. #pwm-cells = <3>;
  651. pinctrl-names = "default";
  652. pinctrl-0 = <&pwm3_pin>;
  653. clocks = <&cru PCLK_RKPWM>;
  654. status = "disabled";
  655. };
  656. bus_intmem: sram@ff700000 {
  657. compatible = "mmio-sram";
  658. reg = <0x0 0xff700000 0x0 0x18000>;
  659. #address-cells = <1>;
  660. #size-cells = <1>;
  661. ranges = <0 0x0 0xff700000 0x18000>;
  662. smp-sram@0 {
  663. compatible = "rockchip,rk3066-smp-sram";
  664. reg = <0x00 0x10>;
  665. };
  666. };
  667. pmu_sram: sram@ff720000 {
  668. compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
  669. reg = <0x0 0xff720000 0x0 0x1000>;
  670. };
  671. pmu: power-management@ff730000 {
  672. compatible = "rockchip,rk3288-pmu", "syscon", "simple-mfd";
  673. reg = <0x0 0xff730000 0x0 0x100>;
  674. power: power-controller {
  675. compatible = "rockchip,rk3288-power-controller";
  676. #power-domain-cells = <1>;
  677. #address-cells = <1>;
  678. #size-cells = <0>;
  679. assigned-clocks = <&cru SCLK_EDP_24M>;
  680. assigned-clock-parents = <&xin24m>;
  681. /*
  682. * Note: Although SCLK_* are the working clocks
  683. * of device without including on the NOC, needed for
  684. * synchronous reset.
  685. *
  686. * The clocks on the which NOC:
  687. * ACLK_IEP/ACLK_VIP/ACLK_VOP0 are on ACLK_VIO0_NIU.
  688. * ACLK_ISP/ACLK_VOP1 are on ACLK_VIO1_NIU.
  689. * ACLK_RGA is on ACLK_RGA_NIU.
  690. * The others (HCLK_*,PLCK_*) are on HCLK_VIO_NIU.
  691. *
  692. * Which clock are device clocks:
  693. * clocks devices
  694. * *_IEP IEP:Image Enhancement Processor
  695. * *_ISP ISP:Image Signal Processing
  696. * *_VIP VIP:Video Input Processor
  697. * *_VOP* VOP:Visual Output Processor
  698. * *_RGA RGA
  699. * *_EDP* EDP
  700. * *_LVDS_* LVDS
  701. * *_HDMI HDMI
  702. * *_MIPI_* MIPI
  703. */
  704. power-domain@RK3288_PD_VIO {
  705. reg = <RK3288_PD_VIO>;
  706. clocks = <&cru ACLK_IEP>,
  707. <&cru ACLK_ISP>,
  708. <&cru ACLK_RGA>,
  709. <&cru ACLK_VIP>,
  710. <&cru ACLK_VOP0>,
  711. <&cru ACLK_VOP1>,
  712. <&cru DCLK_VOP0>,
  713. <&cru DCLK_VOP1>,
  714. <&cru HCLK_IEP>,
  715. <&cru HCLK_ISP>,
  716. <&cru HCLK_RGA>,
  717. <&cru HCLK_VIP>,
  718. <&cru HCLK_VOP0>,
  719. <&cru HCLK_VOP1>,
  720. <&cru PCLK_EDP_CTRL>,
  721. <&cru PCLK_HDMI_CTRL>,
  722. <&cru PCLK_LVDS_PHY>,
  723. <&cru PCLK_MIPI_CSI>,
  724. <&cru PCLK_MIPI_DSI0>,
  725. <&cru PCLK_MIPI_DSI1>,
  726. <&cru SCLK_EDP_24M>,
  727. <&cru SCLK_EDP>,
  728. <&cru SCLK_ISP_JPE>,
  729. <&cru SCLK_ISP>,
  730. <&cru SCLK_RGA>;
  731. pm_qos = <&qos_vio0_iep>,
  732. <&qos_vio1_vop>,
  733. <&qos_vio1_isp_w0>,
  734. <&qos_vio1_isp_w1>,
  735. <&qos_vio0_vop>,
  736. <&qos_vio0_vip>,
  737. <&qos_vio2_rga_r>,
  738. <&qos_vio2_rga_w>,
  739. <&qos_vio1_isp_r>;
  740. #power-domain-cells = <0>;
  741. };
  742. /*
  743. * Note: The following 3 are HEVC(H.265) clocks,
  744. * and on the ACLK_HEVC_NIU (NOC).
  745. */
  746. power-domain@RK3288_PD_HEVC {
  747. reg = <RK3288_PD_HEVC>;
  748. clocks = <&cru ACLK_HEVC>,
  749. <&cru SCLK_HEVC_CABAC>,
  750. <&cru SCLK_HEVC_CORE>;
  751. pm_qos = <&qos_hevc_r>,
  752. <&qos_hevc_w>;
  753. #power-domain-cells = <0>;
  754. };
  755. /*
  756. * Note: ACLK_VCODEC/HCLK_VCODEC are VCODEC
  757. * (video endecoder & decoder) clocks that on the
  758. * ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
  759. */
  760. power-domain@RK3288_PD_VIDEO {
  761. reg = <RK3288_PD_VIDEO>;
  762. clocks = <&cru ACLK_VCODEC>,
  763. <&cru HCLK_VCODEC>;
  764. pm_qos = <&qos_video>;
  765. #power-domain-cells = <0>;
  766. };
  767. /*
  768. * Note: ACLK_GPU is the GPU clock,
  769. * and on the ACLK_GPU_NIU (NOC).
  770. */
  771. power-domain@RK3288_PD_GPU {
  772. reg = <RK3288_PD_GPU>;
  773. clocks = <&cru ACLK_GPU>;
  774. pm_qos = <&qos_gpu_r>,
  775. <&qos_gpu_w>;
  776. #power-domain-cells = <0>;
  777. };
  778. };
  779. reboot-mode {
  780. compatible = "syscon-reboot-mode";
  781. offset = <0x94>;
  782. mode-normal = <BOOT_NORMAL>;
  783. mode-recovery = <BOOT_RECOVERY>;
  784. mode-bootloader = <BOOT_FASTBOOT>;
  785. mode-loader = <BOOT_BL_DOWNLOAD>;
  786. };
  787. };
  788. sgrf: syscon@ff740000 {
  789. compatible = "rockchip,rk3288-sgrf", "syscon";
  790. reg = <0x0 0xff740000 0x0 0x1000>;
  791. };
  792. cru: clock-controller@ff760000 {
  793. compatible = "rockchip,rk3288-cru";
  794. reg = <0x0 0xff760000 0x0 0x1000>;
  795. clocks = <&xin24m>;
  796. clock-names = "xin24m";
  797. rockchip,grf = <&grf>;
  798. #clock-cells = <1>;
  799. #reset-cells = <1>;
  800. assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>,
  801. <&cru PLL_NPLL>, <&cru ACLK_CPU>,
  802. <&cru HCLK_CPU>, <&cru PCLK_CPU>,
  803. <&cru ACLK_PERI>, <&cru HCLK_PERI>,
  804. <&cru PCLK_PERI>;
  805. assigned-clock-rates = <594000000>, <400000000>,
  806. <500000000>, <300000000>,
  807. <150000000>, <75000000>,
  808. <300000000>, <150000000>,
  809. <75000000>;
  810. };
  811. grf: syscon@ff770000 {
  812. compatible = "rockchip,rk3288-grf", "syscon", "simple-mfd";
  813. reg = <0x0 0xff770000 0x0 0x1000>;
  814. edp_phy: edp-phy {
  815. compatible = "rockchip,rk3288-dp-phy";
  816. clocks = <&cru SCLK_EDP_24M>;
  817. clock-names = "24m";
  818. #phy-cells = <0>;
  819. status = "disabled";
  820. };
  821. io_domains: io-domains {
  822. compatible = "rockchip,rk3288-io-voltage-domain";
  823. status = "disabled";
  824. };
  825. usbphy: usbphy {
  826. compatible = "rockchip,rk3288-usb-phy";
  827. #address-cells = <1>;
  828. #size-cells = <0>;
  829. status = "disabled";
  830. usbphy0: usb-phy@320 {
  831. #phy-cells = <0>;
  832. reg = <0x320>;
  833. clocks = <&cru SCLK_OTGPHY0>;
  834. clock-names = "phyclk";
  835. #clock-cells = <0>;
  836. resets = <&cru SRST_USBOTG_PHY>;
  837. reset-names = "phy-reset";
  838. };
  839. usbphy1: usb-phy@334 {
  840. #phy-cells = <0>;
  841. reg = <0x334>;
  842. clocks = <&cru SCLK_OTGPHY1>;
  843. clock-names = "phyclk";
  844. #clock-cells = <0>;
  845. resets = <&cru SRST_USBHOST0_PHY>;
  846. reset-names = "phy-reset";
  847. };
  848. usbphy2: usb-phy@348 {
  849. #phy-cells = <0>;
  850. reg = <0x348>;
  851. clocks = <&cru SCLK_OTGPHY2>;
  852. clock-names = "phyclk";
  853. #clock-cells = <0>;
  854. resets = <&cru SRST_USBHOST1_PHY>;
  855. reset-names = "phy-reset";
  856. };
  857. };
  858. };
  859. wdt: watchdog@ff800000 {
  860. compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
  861. reg = <0x0 0xff800000 0x0 0x100>;
  862. clocks = <&cru PCLK_WDT>;
  863. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
  864. status = "disabled";
  865. };
  866. spdif: sound@ff8b0000 {
  867. compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
  868. reg = <0x0 0xff8b0000 0x0 0x10000>;
  869. #sound-dai-cells = <0>;
  870. clocks = <&cru SCLK_SPDIF8CH>, <&cru HCLK_SPDIF8CH>;
  871. clock-names = "mclk", "hclk";
  872. dmas = <&dmac_bus_s 3>;
  873. dma-names = "tx";
  874. interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
  875. pinctrl-names = "default";
  876. pinctrl-0 = <&spdif_tx>;
  877. rockchip,grf = <&grf>;
  878. status = "disabled";
  879. };
  880. i2s: i2s@ff890000 {
  881. compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
  882. reg = <0x0 0xff890000 0x0 0x10000>;
  883. #sound-dai-cells = <0>;
  884. interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
  885. clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S0>;
  886. clock-names = "i2s_clk", "i2s_hclk";
  887. dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;
  888. dma-names = "tx", "rx";
  889. pinctrl-names = "default";
  890. pinctrl-0 = <&i2s0_bus>;
  891. rockchip,playback-channels = <8>;
  892. rockchip,capture-channels = <2>;
  893. status = "disabled";
  894. };
  895. crypto: crypto@ff8a0000 {
  896. compatible = "rockchip,rk3288-crypto";
  897. reg = <0x0 0xff8a0000 0x0 0x4000>;
  898. interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
  899. clocks = <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>,
  900. <&cru SCLK_CRYPTO>, <&cru ACLK_DMAC1>;
  901. clock-names = "aclk", "hclk", "sclk", "apb_pclk";
  902. resets = <&cru SRST_CRYPTO>;
  903. reset-names = "crypto-rst";
  904. };
  905. iep_mmu: iommu@ff900800 {
  906. compatible = "rockchip,iommu";
  907. reg = <0x0 0xff900800 0x0 0x40>;
  908. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  909. clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
  910. clock-names = "aclk", "iface";
  911. #iommu-cells = <0>;
  912. status = "disabled";
  913. };
  914. isp_mmu: iommu@ff914000 {
  915. compatible = "rockchip,iommu";
  916. reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>;
  917. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  918. clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>;
  919. clock-names = "aclk", "iface";
  920. #iommu-cells = <0>;
  921. rockchip,disable-mmu-reset;
  922. status = "disabled";
  923. };
  924. rga: rga@ff920000 {
  925. compatible = "rockchip,rk3288-rga";
  926. reg = <0x0 0xff920000 0x0 0x180>;
  927. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
  928. clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA>;
  929. clock-names = "aclk", "hclk", "sclk";
  930. power-domains = <&power RK3288_PD_VIO>;
  931. resets = <&cru SRST_RGA_CORE>, <&cru SRST_RGA_AXI>, <&cru SRST_RGA_AHB>;
  932. reset-names = "core", "axi", "ahb";
  933. };
  934. vopb: vop@ff930000 {
  935. compatible = "rockchip,rk3288-vop";
  936. reg = <0x0 0xff930000 0x0 0x19c>, <0x0 0xff931000 0x0 0x1000>;
  937. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  938. clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
  939. clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
  940. power-domains = <&power RK3288_PD_VIO>;
  941. resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
  942. reset-names = "axi", "ahb", "dclk";
  943. iommus = <&vopb_mmu>;
  944. status = "disabled";
  945. vopb_out: port {
  946. #address-cells = <1>;
  947. #size-cells = <0>;
  948. vopb_out_hdmi: endpoint@0 {
  949. reg = <0>;
  950. remote-endpoint = <&hdmi_in_vopb>;
  951. };
  952. vopb_out_edp: endpoint@1 {
  953. reg = <1>;
  954. remote-endpoint = <&edp_in_vopb>;
  955. };
  956. vopb_out_mipi: endpoint@2 {
  957. reg = <2>;
  958. remote-endpoint = <&mipi_in_vopb>;
  959. };
  960. vopb_out_lvds: endpoint@3 {
  961. reg = <3>;
  962. remote-endpoint = <&lvds_in_vopb>;
  963. };
  964. };
  965. };
  966. vopb_mmu: iommu@ff930300 {
  967. compatible = "rockchip,iommu";
  968. reg = <0x0 0xff930300 0x0 0x100>;
  969. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  970. clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>;
  971. clock-names = "aclk", "iface";
  972. power-domains = <&power RK3288_PD_VIO>;
  973. #iommu-cells = <0>;
  974. status = "disabled";
  975. };
  976. vopl: vop@ff940000 {
  977. compatible = "rockchip,rk3288-vop";
  978. reg = <0x0 0xff940000 0x0 0x19c>, <0x0 0xff941000 0x0 0x1000>;
  979. interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
  980. clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
  981. clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
  982. power-domains = <&power RK3288_PD_VIO>;
  983. resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
  984. reset-names = "axi", "ahb", "dclk";
  985. iommus = <&vopl_mmu>;
  986. status = "disabled";
  987. vopl_out: port {
  988. #address-cells = <1>;
  989. #size-cells = <0>;
  990. vopl_out_hdmi: endpoint@0 {
  991. reg = <0>;
  992. remote-endpoint = <&hdmi_in_vopl>;
  993. };
  994. vopl_out_edp: endpoint@1 {
  995. reg = <1>;
  996. remote-endpoint = <&edp_in_vopl>;
  997. };
  998. vopl_out_mipi: endpoint@2 {
  999. reg = <2>;
  1000. remote-endpoint = <&mipi_in_vopl>;
  1001. };
  1002. vopl_out_lvds: endpoint@3 {
  1003. reg = <3>;
  1004. remote-endpoint = <&lvds_in_vopl>;
  1005. };
  1006. };
  1007. };
  1008. vopl_mmu: iommu@ff940300 {
  1009. compatible = "rockchip,iommu";
  1010. reg = <0x0 0xff940300 0x0 0x100>;
  1011. interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
  1012. clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
  1013. clock-names = "aclk", "iface";
  1014. power-domains = <&power RK3288_PD_VIO>;
  1015. #iommu-cells = <0>;
  1016. status = "disabled";
  1017. };
  1018. mipi_dsi: mipi@ff960000 {
  1019. compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi";
  1020. reg = <0x0 0xff960000 0x0 0x4000>;
  1021. interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  1022. clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI0>;
  1023. clock-names = "ref", "pclk";
  1024. power-domains = <&power RK3288_PD_VIO>;
  1025. rockchip,grf = <&grf>;
  1026. status = "disabled";
  1027. ports {
  1028. mipi_in: port {
  1029. #address-cells = <1>;
  1030. #size-cells = <0>;
  1031. mipi_in_vopb: endpoint@0 {
  1032. reg = <0>;
  1033. remote-endpoint = <&vopb_out_mipi>;
  1034. };
  1035. mipi_in_vopl: endpoint@1 {
  1036. reg = <1>;
  1037. remote-endpoint = <&vopl_out_mipi>;
  1038. };
  1039. };
  1040. };
  1041. };
  1042. lvds: lvds@ff96c000 {
  1043. compatible = "rockchip,rk3288-lvds";
  1044. reg = <0x0 0xff96c000 0x0 0x4000>;
  1045. clocks = <&cru PCLK_LVDS_PHY>;
  1046. clock-names = "pclk_lvds";
  1047. pinctrl-names = "lcdc";
  1048. pinctrl-0 = <&lcdc_ctl>;
  1049. power-domains = <&power RK3288_PD_VIO>;
  1050. rockchip,grf = <&grf>;
  1051. status = "disabled";
  1052. ports {
  1053. #address-cells = <1>;
  1054. #size-cells = <0>;
  1055. lvds_in: port@0 {
  1056. reg = <0>;
  1057. #address-cells = <1>;
  1058. #size-cells = <0>;
  1059. lvds_in_vopb: endpoint@0 {
  1060. reg = <0>;
  1061. remote-endpoint = <&vopb_out_lvds>;
  1062. };
  1063. lvds_in_vopl: endpoint@1 {
  1064. reg = <1>;
  1065. remote-endpoint = <&vopl_out_lvds>;
  1066. };
  1067. };
  1068. };
  1069. };
  1070. edp: dp@ff970000 {
  1071. compatible = "rockchip,rk3288-dp";
  1072. reg = <0x0 0xff970000 0x0 0x4000>;
  1073. interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  1074. clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>;
  1075. clock-names = "dp", "pclk";
  1076. phys = <&edp_phy>;
  1077. phy-names = "dp";
  1078. power-domains = <&power RK3288_PD_VIO>;
  1079. resets = <&cru SRST_EDP>;
  1080. reset-names = "dp";
  1081. rockchip,grf = <&grf>;
  1082. status = "disabled";
  1083. ports {
  1084. #address-cells = <1>;
  1085. #size-cells = <0>;
  1086. edp_in: port@0 {
  1087. reg = <0>;
  1088. #address-cells = <1>;
  1089. #size-cells = <0>;
  1090. edp_in_vopb: endpoint@0 {
  1091. reg = <0>;
  1092. remote-endpoint = <&vopb_out_edp>;
  1093. };
  1094. edp_in_vopl: endpoint@1 {
  1095. reg = <1>;
  1096. remote-endpoint = <&vopl_out_edp>;
  1097. };
  1098. };
  1099. };
  1100. };
  1101. hdmi: hdmi@ff980000 {
  1102. compatible = "rockchip,rk3288-dw-hdmi";
  1103. reg = <0x0 0xff980000 0x0 0x20000>;
  1104. reg-io-width = <4>;
  1105. #sound-dai-cells = <0>;
  1106. rockchip,grf = <&grf>;
  1107. interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
  1108. clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>, <&cru SCLK_HDMI_CEC>;
  1109. clock-names = "iahb", "isfr", "cec";
  1110. power-domains = <&power RK3288_PD_VIO>;
  1111. status = "disabled";
  1112. ports {
  1113. hdmi_in: port {
  1114. #address-cells = <1>;
  1115. #size-cells = <0>;
  1116. hdmi_in_vopb: endpoint@0 {
  1117. reg = <0>;
  1118. remote-endpoint = <&vopb_out_hdmi>;
  1119. };
  1120. hdmi_in_vopl: endpoint@1 {
  1121. reg = <1>;
  1122. remote-endpoint = <&vopl_out_hdmi>;
  1123. };
  1124. };
  1125. };
  1126. };
  1127. vpu: video-codec@ff9a0000 {
  1128. compatible = "rockchip,rk3288-vpu";
  1129. reg = <0x0 0xff9a0000 0x0 0x800>;
  1130. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
  1131. <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  1132. interrupt-names = "vepu", "vdpu";
  1133. clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
  1134. clock-names = "aclk", "hclk";
  1135. iommus = <&vpu_mmu>;
  1136. power-domains = <&power RK3288_PD_VIDEO>;
  1137. };
  1138. vpu_mmu: iommu@ff9a0800 {
  1139. compatible = "rockchip,iommu";
  1140. reg = <0x0 0xff9a0800 0x0 0x100>;
  1141. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
  1142. clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
  1143. clock-names = "aclk", "iface";
  1144. #iommu-cells = <0>;
  1145. power-domains = <&power RK3288_PD_VIDEO>;
  1146. };
  1147. hevc_mmu: iommu@ff9c0440 {
  1148. compatible = "rockchip,iommu";
  1149. reg = <0x0 0xff9c0440 0x0 0x40>, <0x0 0xff9c0480 0x0 0x40>;
  1150. interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
  1151. clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>;
  1152. clock-names = "aclk", "iface";
  1153. #iommu-cells = <0>;
  1154. status = "disabled";
  1155. };
  1156. gpu: gpu@ffa30000 {
  1157. compatible = "rockchip,rk3288-mali", "arm,mali-t760";
  1158. reg = <0x0 0xffa30000 0x0 0x10000>;
  1159. interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
  1160. <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
  1161. <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  1162. interrupt-names = "job", "mmu", "gpu";
  1163. clocks = <&cru ACLK_GPU>;
  1164. operating-points-v2 = <&gpu_opp_table>;
  1165. #cooling-cells = <2>; /* min followed by max */
  1166. power-domains = <&power RK3288_PD_GPU>;
  1167. status = "disabled";
  1168. };
  1169. gpu_opp_table: opp-table-1 {
  1170. compatible = "operating-points-v2";
  1171. opp-100000000 {
  1172. opp-hz = /bits/ 64 <100000000>;
  1173. opp-microvolt = <950000>;
  1174. };
  1175. opp-200000000 {
  1176. opp-hz = /bits/ 64 <200000000>;
  1177. opp-microvolt = <950000>;
  1178. };
  1179. opp-300000000 {
  1180. opp-hz = /bits/ 64 <300000000>;
  1181. opp-microvolt = <1000000>;
  1182. };
  1183. opp-400000000 {
  1184. opp-hz = /bits/ 64 <400000000>;
  1185. opp-microvolt = <1100000>;
  1186. };
  1187. opp-600000000 {
  1188. opp-hz = /bits/ 64 <600000000>;
  1189. opp-microvolt = <1250000>;
  1190. };
  1191. };
  1192. qos_gpu_r: qos@ffaa0000 {
  1193. compatible = "rockchip,rk3288-qos", "syscon";
  1194. reg = <0x0 0xffaa0000 0x0 0x20>;
  1195. };
  1196. qos_gpu_w: qos@ffaa0080 {
  1197. compatible = "rockchip,rk3288-qos", "syscon";
  1198. reg = <0x0 0xffaa0080 0x0 0x20>;
  1199. };
  1200. qos_vio1_vop: qos@ffad0000 {
  1201. compatible = "rockchip,rk3288-qos", "syscon";
  1202. reg = <0x0 0xffad0000 0x0 0x20>;
  1203. };
  1204. qos_vio1_isp_w0: qos@ffad0100 {
  1205. compatible = "rockchip,rk3288-qos", "syscon";
  1206. reg = <0x0 0xffad0100 0x0 0x20>;
  1207. };
  1208. qos_vio1_isp_w1: qos@ffad0180 {
  1209. compatible = "rockchip,rk3288-qos", "syscon";
  1210. reg = <0x0 0xffad0180 0x0 0x20>;
  1211. };
  1212. qos_vio0_vop: qos@ffad0400 {
  1213. compatible = "rockchip,rk3288-qos", "syscon";
  1214. reg = <0x0 0xffad0400 0x0 0x20>;
  1215. };
  1216. qos_vio0_vip: qos@ffad0480 {
  1217. compatible = "rockchip,rk3288-qos", "syscon";
  1218. reg = <0x0 0xffad0480 0x0 0x20>;
  1219. };
  1220. qos_vio0_iep: qos@ffad0500 {
  1221. compatible = "rockchip,rk3288-qos", "syscon";
  1222. reg = <0x0 0xffad0500 0x0 0x20>;
  1223. };
  1224. qos_vio2_rga_r: qos@ffad0800 {
  1225. compatible = "rockchip,rk3288-qos", "syscon";
  1226. reg = <0x0 0xffad0800 0x0 0x20>;
  1227. };
  1228. qos_vio2_rga_w: qos@ffad0880 {
  1229. compatible = "rockchip,rk3288-qos", "syscon";
  1230. reg = <0x0 0xffad0880 0x0 0x20>;
  1231. };
  1232. qos_vio1_isp_r: qos@ffad0900 {
  1233. compatible = "rockchip,rk3288-qos", "syscon";
  1234. reg = <0x0 0xffad0900 0x0 0x20>;
  1235. };
  1236. qos_video: qos@ffae0000 {
  1237. compatible = "rockchip,rk3288-qos", "syscon";
  1238. reg = <0x0 0xffae0000 0x0 0x20>;
  1239. };
  1240. qos_hevc_r: qos@ffaf0000 {
  1241. compatible = "rockchip,rk3288-qos", "syscon";
  1242. reg = <0x0 0xffaf0000 0x0 0x20>;
  1243. };
  1244. qos_hevc_w: qos@ffaf0080 {
  1245. compatible = "rockchip,rk3288-qos", "syscon";
  1246. reg = <0x0 0xffaf0080 0x0 0x20>;
  1247. };
  1248. dmac_bus_s: dma-controller@ffb20000 {
  1249. compatible = "arm,pl330", "arm,primecell";
  1250. reg = <0x0 0xffb20000 0x0 0x4000>;
  1251. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
  1252. <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  1253. #dma-cells = <1>;
  1254. arm,pl330-broken-no-flushp;
  1255. arm,pl330-periph-burst;
  1256. clocks = <&cru ACLK_DMAC1>;
  1257. clock-names = "apb_pclk";
  1258. };
  1259. efuse: efuse@ffb40000 {
  1260. compatible = "rockchip,rk3288-efuse";
  1261. reg = <0x0 0xffb40000 0x0 0x20>;
  1262. #address-cells = <1>;
  1263. #size-cells = <1>;
  1264. clocks = <&cru PCLK_EFUSE256>;
  1265. clock-names = "pclk_efuse";
  1266. cpu_id: cpu-id@7 {
  1267. reg = <0x07 0x10>;
  1268. };
  1269. cpu_leakage: cpu_leakage@17 {
  1270. reg = <0x17 0x1>;
  1271. };
  1272. };
  1273. gic: interrupt-controller@ffc01000 {
  1274. compatible = "arm,gic-400";
  1275. interrupt-controller;
  1276. #interrupt-cells = <3>;
  1277. #address-cells = <0>;
  1278. reg = <0x0 0xffc01000 0x0 0x1000>,
  1279. <0x0 0xffc02000 0x0 0x2000>,
  1280. <0x0 0xffc04000 0x0 0x2000>,
  1281. <0x0 0xffc06000 0x0 0x2000>;
  1282. interrupts = <GIC_PPI 9 0xf04>;
  1283. };
  1284. pinctrl: pinctrl {
  1285. compatible = "rockchip,rk3288-pinctrl";
  1286. rockchip,grf = <&grf>;
  1287. rockchip,pmu = <&pmu>;
  1288. #address-cells = <2>;
  1289. #size-cells = <2>;
  1290. ranges;
  1291. gpio0: gpio@ff750000 {
  1292. compatible = "rockchip,gpio-bank";
  1293. reg = <0x0 0xff750000 0x0 0x100>;
  1294. interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
  1295. clocks = <&cru PCLK_GPIO0>;
  1296. gpio-controller;
  1297. #gpio-cells = <2>;
  1298. interrupt-controller;
  1299. #interrupt-cells = <2>;
  1300. };
  1301. gpio1: gpio@ff780000 {
  1302. compatible = "rockchip,gpio-bank";
  1303. reg = <0x0 0xff780000 0x0 0x100>;
  1304. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  1305. clocks = <&cru PCLK_GPIO1>;
  1306. gpio-controller;
  1307. #gpio-cells = <2>;
  1308. interrupt-controller;
  1309. #interrupt-cells = <2>;
  1310. };
  1311. gpio2: gpio@ff790000 {
  1312. compatible = "rockchip,gpio-bank";
  1313. reg = <0x0 0xff790000 0x0 0x100>;
  1314. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  1315. clocks = <&cru PCLK_GPIO2>;
  1316. gpio-controller;
  1317. #gpio-cells = <2>;
  1318. interrupt-controller;
  1319. #interrupt-cells = <2>;
  1320. };
  1321. gpio3: gpio@ff7a0000 {
  1322. compatible = "rockchip,gpio-bank";
  1323. reg = <0x0 0xff7a0000 0x0 0x100>;
  1324. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  1325. clocks = <&cru PCLK_GPIO3>;
  1326. gpio-controller;
  1327. #gpio-cells = <2>;
  1328. interrupt-controller;
  1329. #interrupt-cells = <2>;
  1330. };
  1331. gpio4: gpio@ff7b0000 {
  1332. compatible = "rockchip,gpio-bank";
  1333. reg = <0x0 0xff7b0000 0x0 0x100>;
  1334. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  1335. clocks = <&cru PCLK_GPIO4>;
  1336. gpio-controller;
  1337. #gpio-cells = <2>;
  1338. interrupt-controller;
  1339. #interrupt-cells = <2>;
  1340. };
  1341. gpio5: gpio@ff7c0000 {
  1342. compatible = "rockchip,gpio-bank";
  1343. reg = <0x0 0xff7c0000 0x0 0x100>;
  1344. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  1345. clocks = <&cru PCLK_GPIO5>;
  1346. gpio-controller;
  1347. #gpio-cells = <2>;
  1348. interrupt-controller;
  1349. #interrupt-cells = <2>;
  1350. };
  1351. gpio6: gpio@ff7d0000 {
  1352. compatible = "rockchip,gpio-bank";
  1353. reg = <0x0 0xff7d0000 0x0 0x100>;
  1354. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  1355. clocks = <&cru PCLK_GPIO6>;
  1356. gpio-controller;
  1357. #gpio-cells = <2>;
  1358. interrupt-controller;
  1359. #interrupt-cells = <2>;
  1360. };
  1361. gpio7: gpio@ff7e0000 {
  1362. compatible = "rockchip,gpio-bank";
  1363. reg = <0x0 0xff7e0000 0x0 0x100>;
  1364. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  1365. clocks = <&cru PCLK_GPIO7>;
  1366. gpio-controller;
  1367. #gpio-cells = <2>;
  1368. interrupt-controller;
  1369. #interrupt-cells = <2>;
  1370. };
  1371. gpio8: gpio@ff7f0000 {
  1372. compatible = "rockchip,gpio-bank";
  1373. reg = <0x0 0xff7f0000 0x0 0x100>;
  1374. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  1375. clocks = <&cru PCLK_GPIO8>;
  1376. gpio-controller;
  1377. #gpio-cells = <2>;
  1378. interrupt-controller;
  1379. #interrupt-cells = <2>;
  1380. };
  1381. hdmi {
  1382. hdmi_cec_c0: hdmi-cec-c0 {
  1383. rockchip,pins = <7 RK_PC0 2 &pcfg_pull_none>;
  1384. };
  1385. hdmi_cec_c7: hdmi-cec-c7 {
  1386. rockchip,pins = <7 RK_PC7 4 &pcfg_pull_none>;
  1387. };
  1388. hdmi_ddc: hdmi-ddc {
  1389. rockchip,pins = <7 RK_PC3 2 &pcfg_pull_none>,
  1390. <7 RK_PC4 2 &pcfg_pull_none>;
  1391. };
  1392. hdmi_ddc_unwedge: hdmi-ddc-unwedge {
  1393. rockchip,pins = <7 RK_PC3 RK_FUNC_GPIO &pcfg_output_low>,
  1394. <7 RK_PC4 2 &pcfg_pull_none>;
  1395. };
  1396. };
  1397. pcfg_output_low: pcfg-output-low {
  1398. output-low;
  1399. };
  1400. pcfg_pull_up: pcfg-pull-up {
  1401. bias-pull-up;
  1402. };
  1403. pcfg_pull_down: pcfg-pull-down {
  1404. bias-pull-down;
  1405. };
  1406. pcfg_pull_none: pcfg-pull-none {
  1407. bias-disable;
  1408. };
  1409. pcfg_pull_none_12ma: pcfg-pull-none-12ma {
  1410. bias-disable;
  1411. drive-strength = <12>;
  1412. };
  1413. suspend {
  1414. global_pwroff: global-pwroff {
  1415. rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
  1416. };
  1417. ddrio_pwroff: ddrio-pwroff {
  1418. rockchip,pins = <0 RK_PA1 1 &pcfg_pull_none>;
  1419. };
  1420. ddr0_retention: ddr0-retention {
  1421. rockchip,pins = <0 RK_PA2 1 &pcfg_pull_up>;
  1422. };
  1423. ddr1_retention: ddr1-retention {
  1424. rockchip,pins = <0 RK_PA3 1 &pcfg_pull_up>;
  1425. };
  1426. };
  1427. edp {
  1428. edp_hpd: edp-hpd {
  1429. rockchip,pins = <7 RK_PB3 2 &pcfg_pull_down>;
  1430. };
  1431. };
  1432. i2c0 {
  1433. i2c0_xfer: i2c0-xfer {
  1434. rockchip,pins = <0 RK_PB7 1 &pcfg_pull_none>,
  1435. <0 RK_PC0 1 &pcfg_pull_none>;
  1436. };
  1437. };
  1438. i2c1 {
  1439. i2c1_xfer: i2c1-xfer {
  1440. rockchip,pins = <8 RK_PA4 1 &pcfg_pull_none>,
  1441. <8 RK_PA5 1 &pcfg_pull_none>;
  1442. };
  1443. };
  1444. i2c2 {
  1445. i2c2_xfer: i2c2-xfer {
  1446. rockchip,pins = <6 RK_PB1 1 &pcfg_pull_none>,
  1447. <6 RK_PB2 1 &pcfg_pull_none>;
  1448. };
  1449. };
  1450. i2c3 {
  1451. i2c3_xfer: i2c3-xfer {
  1452. rockchip,pins = <2 RK_PC0 1 &pcfg_pull_none>,
  1453. <2 RK_PC1 1 &pcfg_pull_none>;
  1454. };
  1455. };
  1456. i2c4 {
  1457. i2c4_xfer: i2c4-xfer {
  1458. rockchip,pins = <7 RK_PC1 1 &pcfg_pull_none>,
  1459. <7 RK_PC2 1 &pcfg_pull_none>;
  1460. };
  1461. };
  1462. i2c5 {
  1463. i2c5_xfer: i2c5-xfer {
  1464. rockchip,pins = <7 RK_PC3 1 &pcfg_pull_none>,
  1465. <7 RK_PC4 1 &pcfg_pull_none>;
  1466. };
  1467. };
  1468. i2s0 {
  1469. i2s0_bus: i2s0-bus {
  1470. rockchip,pins = <6 RK_PA0 1 &pcfg_pull_none>,
  1471. <6 RK_PA1 1 &pcfg_pull_none>,
  1472. <6 RK_PA2 1 &pcfg_pull_none>,
  1473. <6 RK_PA3 1 &pcfg_pull_none>,
  1474. <6 RK_PA4 1 &pcfg_pull_none>,
  1475. <6 RK_PB0 1 &pcfg_pull_none>;
  1476. };
  1477. };
  1478. lcdc {
  1479. lcdc_ctl: lcdc-ctl {
  1480. rockchip,pins = <1 RK_PD0 1 &pcfg_pull_none>,
  1481. <1 RK_PD1 1 &pcfg_pull_none>,
  1482. <1 RK_PD2 1 &pcfg_pull_none>,
  1483. <1 RK_PD3 1 &pcfg_pull_none>;
  1484. };
  1485. };
  1486. sdmmc {
  1487. sdmmc_clk: sdmmc-clk {
  1488. rockchip,pins = <6 RK_PC4 1 &pcfg_pull_none>;
  1489. };
  1490. sdmmc_cmd: sdmmc-cmd {
  1491. rockchip,pins = <6 RK_PC5 1 &pcfg_pull_up>;
  1492. };
  1493. sdmmc_cd: sdmmc-cd {
  1494. rockchip,pins = <6 RK_PC6 1 &pcfg_pull_up>;
  1495. };
  1496. sdmmc_bus1: sdmmc-bus1 {
  1497. rockchip,pins = <6 RK_PC0 1 &pcfg_pull_up>;
  1498. };
  1499. sdmmc_bus4: sdmmc-bus4 {
  1500. rockchip,pins = <6 RK_PC0 1 &pcfg_pull_up>,
  1501. <6 RK_PC1 1 &pcfg_pull_up>,
  1502. <6 RK_PC2 1 &pcfg_pull_up>,
  1503. <6 RK_PC3 1 &pcfg_pull_up>;
  1504. };
  1505. };
  1506. sdio0 {
  1507. sdio0_bus1: sdio0-bus1 {
  1508. rockchip,pins = <4 RK_PC4 1 &pcfg_pull_up>;
  1509. };
  1510. sdio0_bus4: sdio0-bus4 {
  1511. rockchip,pins = <4 RK_PC4 1 &pcfg_pull_up>,
  1512. <4 RK_PC5 1 &pcfg_pull_up>,
  1513. <4 RK_PC6 1 &pcfg_pull_up>,
  1514. <4 RK_PC7 1 &pcfg_pull_up>;
  1515. };
  1516. sdio0_cmd: sdio0-cmd {
  1517. rockchip,pins = <4 RK_PD0 1 &pcfg_pull_up>;
  1518. };
  1519. sdio0_clk: sdio0-clk {
  1520. rockchip,pins = <4 RK_PD1 1 &pcfg_pull_none>;
  1521. };
  1522. sdio0_cd: sdio0-cd {
  1523. rockchip,pins = <4 RK_PD2 1 &pcfg_pull_up>;
  1524. };
  1525. sdio0_wp: sdio0-wp {
  1526. rockchip,pins = <4 RK_PD3 1 &pcfg_pull_up>;
  1527. };
  1528. sdio0_pwr: sdio0-pwr {
  1529. rockchip,pins = <4 RK_PD4 1 &pcfg_pull_up>;
  1530. };
  1531. sdio0_bkpwr: sdio0-bkpwr {
  1532. rockchip,pins = <4 RK_PD5 1 &pcfg_pull_up>;
  1533. };
  1534. sdio0_int: sdio0-int {
  1535. rockchip,pins = <4 RK_PD6 1 &pcfg_pull_up>;
  1536. };
  1537. };
  1538. sdio1 {
  1539. sdio1_bus1: sdio1-bus1 {
  1540. rockchip,pins = <3 RK_PD0 4 &pcfg_pull_up>;
  1541. };
  1542. sdio1_bus4: sdio1-bus4 {
  1543. rockchip,pins = <3 RK_PD0 4 &pcfg_pull_up>,
  1544. <3 RK_PD1 4 &pcfg_pull_up>,
  1545. <3 RK_PD2 4 &pcfg_pull_up>,
  1546. <3 RK_PD3 4 &pcfg_pull_up>;
  1547. };
  1548. sdio1_cd: sdio1-cd {
  1549. rockchip,pins = <3 RK_PD4 4 &pcfg_pull_up>;
  1550. };
  1551. sdio1_wp: sdio1-wp {
  1552. rockchip,pins = <3 RK_PD5 4 &pcfg_pull_up>;
  1553. };
  1554. sdio1_bkpwr: sdio1-bkpwr {
  1555. rockchip,pins = <3 RK_PD6 4 &pcfg_pull_up>;
  1556. };
  1557. sdio1_int: sdio1-int {
  1558. rockchip,pins = <3 RK_PD7 4 &pcfg_pull_up>;
  1559. };
  1560. sdio1_cmd: sdio1-cmd {
  1561. rockchip,pins = <4 RK_PA6 4 &pcfg_pull_up>;
  1562. };
  1563. sdio1_clk: sdio1-clk {
  1564. rockchip,pins = <4 RK_PA7 4 &pcfg_pull_none>;
  1565. };
  1566. sdio1_pwr: sdio1-pwr {
  1567. rockchip,pins = <4 RK_PB1 4 &pcfg_pull_up>;
  1568. };
  1569. };
  1570. emmc {
  1571. emmc_clk: emmc-clk {
  1572. rockchip,pins = <3 RK_PC2 2 &pcfg_pull_none>;
  1573. };
  1574. emmc_cmd: emmc-cmd {
  1575. rockchip,pins = <3 RK_PC0 2 &pcfg_pull_up>;
  1576. };
  1577. emmc_pwr: emmc-pwr {
  1578. rockchip,pins = <3 RK_PB1 2 &pcfg_pull_up>;
  1579. };
  1580. emmc_bus1: emmc-bus1 {
  1581. rockchip,pins = <3 RK_PA0 2 &pcfg_pull_up>;
  1582. };
  1583. emmc_bus4: emmc-bus4 {
  1584. rockchip,pins = <3 RK_PA0 2 &pcfg_pull_up>,
  1585. <3 RK_PA1 2 &pcfg_pull_up>,
  1586. <3 RK_PA2 2 &pcfg_pull_up>,
  1587. <3 RK_PA3 2 &pcfg_pull_up>;
  1588. };
  1589. emmc_bus8: emmc-bus8 {
  1590. rockchip,pins = <3 RK_PA0 2 &pcfg_pull_up>,
  1591. <3 RK_PA1 2 &pcfg_pull_up>,
  1592. <3 RK_PA2 2 &pcfg_pull_up>,
  1593. <3 RK_PA3 2 &pcfg_pull_up>,
  1594. <3 RK_PA4 2 &pcfg_pull_up>,
  1595. <3 RK_PA5 2 &pcfg_pull_up>,
  1596. <3 RK_PA6 2 &pcfg_pull_up>,
  1597. <3 RK_PA7 2 &pcfg_pull_up>;
  1598. };
  1599. };
  1600. spi0 {
  1601. spi0_clk: spi0-clk {
  1602. rockchip,pins = <5 RK_PB4 1 &pcfg_pull_up>;
  1603. };
  1604. spi0_cs0: spi0-cs0 {
  1605. rockchip,pins = <5 RK_PB5 1 &pcfg_pull_up>;
  1606. };
  1607. spi0_tx: spi0-tx {
  1608. rockchip,pins = <5 RK_PB6 1 &pcfg_pull_up>;
  1609. };
  1610. spi0_rx: spi0-rx {
  1611. rockchip,pins = <5 RK_PB7 1 &pcfg_pull_up>;
  1612. };
  1613. spi0_cs1: spi0-cs1 {
  1614. rockchip,pins = <5 RK_PC0 1 &pcfg_pull_up>;
  1615. };
  1616. };
  1617. spi1 {
  1618. spi1_clk: spi1-clk {
  1619. rockchip,pins = <7 RK_PB4 2 &pcfg_pull_up>;
  1620. };
  1621. spi1_cs0: spi1-cs0 {
  1622. rockchip,pins = <7 RK_PB5 2 &pcfg_pull_up>;
  1623. };
  1624. spi1_rx: spi1-rx {
  1625. rockchip,pins = <7 RK_PB6 2 &pcfg_pull_up>;
  1626. };
  1627. spi1_tx: spi1-tx {
  1628. rockchip,pins = <7 RK_PB7 2 &pcfg_pull_up>;
  1629. };
  1630. };
  1631. spi2 {
  1632. spi2_cs1: spi2-cs1 {
  1633. rockchip,pins = <8 RK_PA3 1 &pcfg_pull_up>;
  1634. };
  1635. spi2_clk: spi2-clk {
  1636. rockchip,pins = <8 RK_PA6 1 &pcfg_pull_up>;
  1637. };
  1638. spi2_cs0: spi2-cs0 {
  1639. rockchip,pins = <8 RK_PA7 1 &pcfg_pull_up>;
  1640. };
  1641. spi2_rx: spi2-rx {
  1642. rockchip,pins = <8 RK_PB0 1 &pcfg_pull_up>;
  1643. };
  1644. spi2_tx: spi2-tx {
  1645. rockchip,pins = <8 RK_PB1 1 &pcfg_pull_up>;
  1646. };
  1647. };
  1648. uart0 {
  1649. uart0_xfer: uart0-xfer {
  1650. rockchip,pins = <4 RK_PC0 1 &pcfg_pull_up>,
  1651. <4 RK_PC1 1 &pcfg_pull_none>;
  1652. };
  1653. uart0_cts: uart0-cts {
  1654. rockchip,pins = <4 RK_PC2 1 &pcfg_pull_up>;
  1655. };
  1656. uart0_rts: uart0-rts {
  1657. rockchip,pins = <4 RK_PC3 1 &pcfg_pull_none>;
  1658. };
  1659. };
  1660. uart1 {
  1661. uart1_xfer: uart1-xfer {
  1662. rockchip,pins = <5 RK_PB0 1 &pcfg_pull_up>,
  1663. <5 RK_PB1 1 &pcfg_pull_none>;
  1664. };
  1665. uart1_cts: uart1-cts {
  1666. rockchip,pins = <5 RK_PB2 1 &pcfg_pull_up>;
  1667. };
  1668. uart1_rts: uart1-rts {
  1669. rockchip,pins = <5 RK_PB3 1 &pcfg_pull_none>;
  1670. };
  1671. };
  1672. uart2 {
  1673. uart2_xfer: uart2-xfer {
  1674. rockchip,pins = <7 RK_PC6 1 &pcfg_pull_up>,
  1675. <7 RK_PC7 1 &pcfg_pull_none>;
  1676. };
  1677. /* no rts / cts for uart2 */
  1678. };
  1679. uart3 {
  1680. uart3_xfer: uart3-xfer {
  1681. rockchip,pins = <7 RK_PA7 1 &pcfg_pull_up>,
  1682. <7 RK_PB0 1 &pcfg_pull_none>;
  1683. };
  1684. uart3_cts: uart3-cts {
  1685. rockchip,pins = <7 RK_PB1 1 &pcfg_pull_up>;
  1686. };
  1687. uart3_rts: uart3-rts {
  1688. rockchip,pins = <7 RK_PB2 1 &pcfg_pull_none>;
  1689. };
  1690. };
  1691. uart4 {
  1692. uart4_xfer: uart4-xfer {
  1693. rockchip,pins = <5 RK_PB7 3 &pcfg_pull_up>,
  1694. <5 RK_PB6 3 &pcfg_pull_none>;
  1695. };
  1696. uart4_cts: uart4-cts {
  1697. rockchip,pins = <5 RK_PB4 3 &pcfg_pull_up>;
  1698. };
  1699. uart4_rts: uart4-rts {
  1700. rockchip,pins = <5 RK_PB5 3 &pcfg_pull_none>;
  1701. };
  1702. };
  1703. tsadc {
  1704. otp_pin: otp-pin {
  1705. rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
  1706. };
  1707. otp_out: otp-out {
  1708. rockchip,pins = <0 RK_PB2 1 &pcfg_pull_none>;
  1709. };
  1710. };
  1711. pwm0 {
  1712. pwm0_pin: pwm0-pin {
  1713. rockchip,pins = <7 RK_PA0 1 &pcfg_pull_none>;
  1714. };
  1715. };
  1716. pwm1 {
  1717. pwm1_pin: pwm1-pin {
  1718. rockchip,pins = <7 RK_PA1 1 &pcfg_pull_none>;
  1719. };
  1720. };
  1721. pwm2 {
  1722. pwm2_pin: pwm2-pin {
  1723. rockchip,pins = <7 RK_PC6 3 &pcfg_pull_none>;
  1724. };
  1725. };
  1726. pwm3 {
  1727. pwm3_pin: pwm3-pin {
  1728. rockchip,pins = <7 RK_PC7 3 &pcfg_pull_none>;
  1729. };
  1730. };
  1731. gmac {
  1732. rgmii_pins: rgmii-pins {
  1733. rockchip,pins = <3 RK_PD6 3 &pcfg_pull_none>,
  1734. <3 RK_PD7 3 &pcfg_pull_none>,
  1735. <3 RK_PD2 3 &pcfg_pull_none>,
  1736. <3 RK_PD3 3 &pcfg_pull_none>,
  1737. <3 RK_PD4 3 &pcfg_pull_none_12ma>,
  1738. <3 RK_PD5 3 &pcfg_pull_none_12ma>,
  1739. <3 RK_PD0 3 &pcfg_pull_none_12ma>,
  1740. <3 RK_PD1 3 &pcfg_pull_none_12ma>,
  1741. <4 RK_PA0 3 &pcfg_pull_none>,
  1742. <4 RK_PA5 3 &pcfg_pull_none>,
  1743. <4 RK_PA6 3 &pcfg_pull_none>,
  1744. <4 RK_PB1 3 &pcfg_pull_none_12ma>,
  1745. <4 RK_PA4 3 &pcfg_pull_none_12ma>,
  1746. <4 RK_PA1 3 &pcfg_pull_none>,
  1747. <4 RK_PA3 3 &pcfg_pull_none>;
  1748. };
  1749. rmii_pins: rmii-pins {
  1750. rockchip,pins = <3 RK_PD6 3 &pcfg_pull_none>,
  1751. <3 RK_PD7 3 &pcfg_pull_none>,
  1752. <3 RK_PD4 3 &pcfg_pull_none>,
  1753. <3 RK_PD5 3 &pcfg_pull_none>,
  1754. <4 RK_PA0 3 &pcfg_pull_none>,
  1755. <4 RK_PA5 3 &pcfg_pull_none>,
  1756. <4 RK_PA4 3 &pcfg_pull_none>,
  1757. <4 RK_PA1 3 &pcfg_pull_none>,
  1758. <4 RK_PA2 3 &pcfg_pull_none>,
  1759. <4 RK_PA3 3 &pcfg_pull_none>;
  1760. };
  1761. };
  1762. spdif {
  1763. spdif_tx: spdif-tx {
  1764. rockchip,pins = <6 RK_PB3 1 &pcfg_pull_none>;
  1765. };
  1766. };
  1767. };
  1768. };