rk3399.dtsi 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110
  1. /*
  2. * (C) Copyright 2016 Rockchip Electronics Co., Ltd
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <dt-bindings/clock/rk3399-cru.h>
  7. #include <dt-bindings/gpio/gpio.h>
  8. #include <dt-bindings/interrupt-controller/arm-gic.h>
  9. #include <dt-bindings/interrupt-controller/irq.h>
  10. #include <dt-bindings/pinctrl/rockchip.h>
  11. #define USB_CLASS_HUB 9
  12. / {
  13. compatible = "rockchip,rk3399";
  14. interrupt-parent = <&gic>;
  15. #address-cells = <2>;
  16. #size-cells = <2>;
  17. aliases {
  18. serial0 = &uart0;
  19. serial1 = &uart1;
  20. serial2 = &uart2;
  21. serial3 = &uart3;
  22. serial4 = &uart4;
  23. };
  24. cpus {
  25. #address-cells = <2>;
  26. #size-cells = <0>;
  27. cpu-map {
  28. cluster0 {
  29. core0 {
  30. cpu = <&cpu_l0>;
  31. };
  32. core1 {
  33. cpu = <&cpu_l1>;
  34. };
  35. core2 {
  36. cpu = <&cpu_l2>;
  37. };
  38. core3 {
  39. cpu = <&cpu_l3>;
  40. };
  41. };
  42. cluster1 {
  43. core0 {
  44. cpu = <&cpu_b0>;
  45. };
  46. core1 {
  47. cpu = <&cpu_b1>;
  48. };
  49. };
  50. };
  51. cpu_l0: cpu@0 {
  52. device_type = "cpu";
  53. compatible = "arm,cortex-a53", "arm,armv8";
  54. reg = <0x0 0x0>;
  55. enable-method = "psci";
  56. #cooling-cells = <2>; /* min followed by max */
  57. clocks = <&cru ARMCLKL>;
  58. };
  59. cpu_l1: cpu@1 {
  60. device_type = "cpu";
  61. compatible = "arm,cortex-a53", "arm,armv8";
  62. reg = <0x0 0x1>;
  63. enable-method = "psci";
  64. clocks = <&cru ARMCLKL>;
  65. };
  66. cpu_l2: cpu@2 {
  67. device_type = "cpu";
  68. compatible = "arm,cortex-a53", "arm,armv8";
  69. reg = <0x0 0x2>;
  70. enable-method = "psci";
  71. clocks = <&cru ARMCLKL>;
  72. };
  73. cpu_l3: cpu@3 {
  74. device_type = "cpu";
  75. compatible = "arm,cortex-a53", "arm,armv8";
  76. reg = <0x0 0x3>;
  77. enable-method = "psci";
  78. clocks = <&cru ARMCLKL>;
  79. };
  80. cpu_b0: cpu@100 {
  81. device_type = "cpu";
  82. compatible = "arm,cortex-a72", "arm,armv8";
  83. reg = <0x0 0x100>;
  84. enable-method = "psci";
  85. #cooling-cells = <2>; /* min followed by max */
  86. clocks = <&cru ARMCLKB>;
  87. };
  88. cpu_b1: cpu@101 {
  89. device_type = "cpu";
  90. compatible = "arm,cortex-a72", "arm,armv8";
  91. reg = <0x0 0x101>;
  92. enable-method = "psci";
  93. clocks = <&cru ARMCLKB>;
  94. };
  95. };
  96. psci {
  97. compatible = "arm,psci-1.0";
  98. method = "smc";
  99. };
  100. timer {
  101. compatible = "arm,armv8-timer";
  102. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
  103. <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
  104. <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
  105. <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
  106. };
  107. xin24m: xin24m {
  108. compatible = "fixed-clock";
  109. clock-frequency = <24000000>;
  110. clock-output-names = "xin24m";
  111. #clock-cells = <0>;
  112. };
  113. amba {
  114. compatible = "simple-bus";
  115. #address-cells = <2>;
  116. #size-cells = <2>;
  117. ranges;
  118. dmac_bus: dma-controller@ff6d0000 {
  119. compatible = "arm,pl330", "arm,primecell";
  120. reg = <0x0 0xff6d0000 0x0 0x4000>;
  121. interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
  122. <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
  123. #dma-cells = <1>;
  124. clocks = <&cru ACLK_DMAC0_PERILP>;
  125. clock-names = "apb_pclk";
  126. };
  127. dmac_peri: dma-controller@ff6e0000 {
  128. compatible = "arm,pl330", "arm,primecell";
  129. reg = <0x0 0xff6e0000 0x0 0x4000>;
  130. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
  131. <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  132. #dma-cells = <1>;
  133. clocks = <&cru ACLK_DMAC1_PERILP>;
  134. clock-names = "apb_pclk";
  135. };
  136. };
  137. sdio0: dwmmc@fe310000 {
  138. compatible = "rockchip,rk3399-dw-mshc",
  139. "rockchip,rk3288-dw-mshc";
  140. reg = <0x0 0xfe310000 0x0 0x4000>;
  141. interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
  142. clock-freq-min-max = <400000 150000000>;
  143. clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
  144. <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
  145. clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
  146. fifo-depth = <0x100>;
  147. status = "disabled";
  148. };
  149. sdmmc: dwmmc@fe320000 {
  150. compatible = "rockchip,rk3399-dw-mshc",
  151. "rockchip,rk3288-dw-mshc";
  152. reg = <0x0 0xfe320000 0x0 0x4000>;
  153. interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  154. clock-freq-min-max = <400000 150000000>;
  155. clocks = <&cru SCLK_SDMMC>, <&cru HCLK_SDMMC>,
  156. <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
  157. clock-names = "ciu", "biu", "ciu-drive", "ciu-sample";
  158. pinctrl-names = "default";
  159. pinctrl-0 = <&sdmmc_clk>;
  160. fifo-depth = <0x100>;
  161. status = "disabled";
  162. };
  163. sdhci: sdhci@fe330000 {
  164. compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
  165. reg = <0x0 0xfe330000 0x0 0x10000>;
  166. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
  167. assigned-clocks = <&cru SCLK_EMMC>;
  168. assigned-clock-rates = <200000000>;
  169. clocks = <&cru SCLK_EMMC>, <&cru ACLK_EMMC>;
  170. clock-names = "clk_xin", "clk_ahb";
  171. phys = <&emmc_phy>;
  172. phy-names = "phy_arasan";
  173. status = "disabled";
  174. };
  175. usb_host0_ehci: usb@fe380000 {
  176. compatible = "generic-ehci";
  177. reg = <0x0 0xfe380000 0x0 0x20000>;
  178. interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
  179. clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>;
  180. clock-names = "hclk_host0", "hclk_host0_arb";
  181. status = "disabled";
  182. };
  183. usb_host0_ohci: usb@fe3a0000 {
  184. compatible = "generic-ohci";
  185. reg = <0x0 0xfe3a0000 0x0 0x20000>;
  186. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  187. clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>;
  188. clock-names = "hclk_host0", "hclk_host0_arb";
  189. status = "disabled";
  190. };
  191. usb_host1_ehci: usb@fe3c0000 {
  192. compatible = "generic-ehci";
  193. reg = <0x0 0xfe3c0000 0x0 0x20000>;
  194. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  195. clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST1_ARB>;
  196. clock-names = "hclk_host1", "hclk_host1_arb";
  197. status = "disabled";
  198. };
  199. usb_host1_ohci: usb@fe3e0000 {
  200. compatible = "generic-ohci";
  201. reg = <0x0 0xfe3e0000 0x0 0x20000>;
  202. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  203. clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST1_ARB>;
  204. clock-names = "hclk_host1", "hclk_host1_arb";
  205. status = "disabled";
  206. };
  207. dwc3_typec0: usb@fe800000 {
  208. compatible = "rockchip,rk3399-xhci";
  209. reg = <0x0 0xfe800000 0x0 0x100000>;
  210. status = "disabled";
  211. rockchip,vbus-gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
  212. snps,dis-enblslpm-quirk;
  213. snps,phyif-utmi-bits = <16>;
  214. snps,dis-u2-freeclk-exists-quirk;
  215. snps,dis-u2-susphy-quirk;
  216. #address-cells = <2>;
  217. #size-cells = <2>;
  218. hub {
  219. compatible = "usb-hub";
  220. usb,device-class = <USB_CLASS_HUB>;
  221. };
  222. typec_phy0 {
  223. compatible = "rockchip,rk3399-usb3-phy";
  224. reg = <0x0 0xff7c0000 0x0 0x40000>;
  225. };
  226. };
  227. dwc3_typec1: usb@fe900000 {
  228. compatible = "rockchip,rk3399-xhci";
  229. reg = <0x0 0xfe900000 0x0 0x100000>;
  230. status = "disabled";
  231. rockchip,vbus-gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
  232. snps,dis-enblslpm-quirk;
  233. snps,phyif-utmi-bits = <16>;
  234. snps,dis-u2-freeclk-exists-quirk;
  235. snps,dis-u2-susphy-quirk;
  236. #address-cells = <2>;
  237. #size-cells = <2>;
  238. hub {
  239. compatible = "usb-hub";
  240. usb,device-class = <USB_CLASS_HUB>;
  241. };
  242. typec_phy1 {
  243. compatible = "rockchip,rk3399-usb3-phy";
  244. reg = <0x0 0xff800000 0x0 0x40000>;
  245. };
  246. };
  247. gic: interrupt-controller@fee00000 {
  248. compatible = "arm,gic-v3";
  249. #interrupt-cells = <3>;
  250. #address-cells = <2>;
  251. #size-cells = <2>;
  252. ranges;
  253. interrupt-controller;
  254. reg = <0x0 0xfee00000 0 0x10000>, /* GICD */
  255. <0x0 0xfef00000 0 0xc0000>, /* GICR */
  256. <0x0 0xfff00000 0 0x10000>, /* GICC */
  257. <0x0 0xfff10000 0 0x10000>, /* GICH */
  258. <0x0 0xfff20000 0 0x10000>; /* GICV */
  259. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  260. its: interrupt-controller@fee20000 {
  261. compatible = "arm,gic-v3-its";
  262. msi-controller;
  263. reg = <0x0 0xfee20000 0x0 0x20000>;
  264. };
  265. };
  266. uart0: serial@ff180000 {
  267. compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
  268. reg = <0x0 0xff180000 0x0 0x100>;
  269. clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
  270. clock-names = "baudclk", "apb_pclk";
  271. interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
  272. reg-shift = <2>;
  273. reg-io-width = <4>;
  274. pinctrl-names = "default";
  275. pinctrl-0 = <&uart0_xfer>;
  276. status = "disabled";
  277. };
  278. uart1: serial@ff190000 {
  279. compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
  280. reg = <0x0 0xff190000 0x0 0x100>;
  281. clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
  282. clock-names = "baudclk", "apb_pclk";
  283. interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  284. reg-shift = <2>;
  285. reg-io-width = <4>;
  286. pinctrl-names = "default";
  287. pinctrl-0 = <&uart1_xfer>;
  288. status = "disabled";
  289. };
  290. uart2: serial@ff1a0000 {
  291. compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
  292. reg = <0x0 0xff1a0000 0x0 0x100>;
  293. clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
  294. clock-names = "baudclk", "apb_pclk";
  295. interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
  296. clock-frequency = <24000000>;
  297. reg-shift = <2>;
  298. reg-io-width = <4>;
  299. pinctrl-names = "default";
  300. pinctrl-0 = <&uart2c_xfer>;
  301. status = "disabled";
  302. };
  303. uart3: serial@ff1b0000 {
  304. compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
  305. reg = <0x0 0xff1b0000 0x0 0x100>;
  306. clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
  307. clock-names = "baudclk", "apb_pclk";
  308. interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  309. reg-shift = <2>;
  310. reg-io-width = <4>;
  311. pinctrl-names = "default";
  312. pinctrl-0 = <&uart3_xfer>;
  313. status = "disabled";
  314. };
  315. spi0: spi@ff1c0000 {
  316. compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
  317. reg = <0x0 0xff1c0000 0x0 0x1000>;
  318. clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
  319. clock-names = "spiclk", "apb_pclk";
  320. interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
  321. pinctrl-names = "default";
  322. pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
  323. #address-cells = <1>;
  324. #size-cells = <0>;
  325. status = "disabled";
  326. };
  327. spi1: spi@ff1d0000 {
  328. compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
  329. reg = <0x0 0xff1d0000 0x0 0x1000>;
  330. clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
  331. clock-names = "spiclk", "apb_pclk";
  332. interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
  333. pinctrl-names = "default";
  334. pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
  335. #address-cells = <1>;
  336. #size-cells = <0>;
  337. status = "disabled";
  338. };
  339. spi2: spi@ff1e0000 {
  340. compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
  341. reg = <0x0 0xff1e0000 0x0 0x1000>;
  342. clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
  343. clock-names = "spiclk", "apb_pclk";
  344. interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
  345. pinctrl-names = "default";
  346. pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
  347. #address-cells = <1>;
  348. #size-cells = <0>;
  349. status = "disabled";
  350. };
  351. spi4: spi@ff1f0000 {
  352. compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
  353. reg = <0x0 0xff1f0000 0x0 0x1000>;
  354. clocks = <&cru SCLK_SPI4>, <&cru PCLK_SPI4>;
  355. clock-names = "spiclk", "apb_pclk";
  356. interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  357. pinctrl-names = "default";
  358. pinctrl-0 = <&spi4_clk &spi4_tx &spi4_rx &spi4_cs0>;
  359. #address-cells = <1>;
  360. #size-cells = <0>;
  361. status = "disabled";
  362. };
  363. spi5: spi@ff200000 {
  364. compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
  365. reg = <0x0 0xff200000 0x0 0x1000>;
  366. clocks = <&cru SCLK_SPI5>, <&cru PCLK_SPI5>;
  367. clock-names = "spiclk", "apb_pclk";
  368. interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
  369. pinctrl-names = "default";
  370. pinctrl-0 = <&spi5_clk &spi5_tx &spi5_rx &spi5_cs0>;
  371. #address-cells = <1>;
  372. #size-cells = <0>;
  373. status = "disabled";
  374. };
  375. pmugrf: syscon@ff320000 {
  376. compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd";
  377. reg = <0x0 0xff320000 0x0 0x1000>;
  378. #address-cells = <1>;
  379. #size-cells = <1>;
  380. pmu_io_domains: io-domains {
  381. compatible = "rockchip,rk3399-pmu-io-voltage-domain";
  382. status = "disabled";
  383. };
  384. };
  385. spi3: spi@ff350000 {
  386. compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
  387. reg = <0x0 0xff350000 0x0 0x1000>;
  388. clocks = <&pmucru SCLK_SPI3_PMU>, <&pmucru PCLK_SPI3_PMU>;
  389. clock-names = "spiclk", "apb_pclk";
  390. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  391. pinctrl-names = "default";
  392. pinctrl-0 = <&spi3_clk &spi3_tx &spi3_rx &spi3_cs0>;
  393. #address-cells = <1>;
  394. #size-cells = <0>;
  395. status = "disabled";
  396. };
  397. uart4: serial@ff370000 {
  398. compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
  399. reg = <0x0 0xff370000 0x0 0x100>;
  400. clocks = <&pmucru SCLK_UART4_PMU>, <&pmucru PCLK_UART4_PMU>;
  401. clock-names = "baudclk", "apb_pclk";
  402. interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
  403. reg-shift = <2>;
  404. reg-io-width = <4>;
  405. pinctrl-names = "default";
  406. pinctrl-0 = <&uart4_xfer>;
  407. status = "disabled";
  408. };
  409. pwm0: pwm@ff420000 {
  410. compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
  411. reg = <0x0 0xff420000 0x0 0x10>;
  412. #pwm-cells = <3>;
  413. pinctrl-names = "default";
  414. pinctrl-0 = <&pwm0_pin>;
  415. clocks = <&pmucru PCLK_RKPWM_PMU>;
  416. clock-names = "pwm";
  417. status = "disabled";
  418. };
  419. pwm1: pwm@ff420010 {
  420. compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
  421. reg = <0x0 0xff420010 0x0 0x10>;
  422. #pwm-cells = <3>;
  423. pinctrl-names = "default";
  424. pinctrl-0 = <&pwm1_pin>;
  425. clocks = <&pmucru PCLK_RKPWM_PMU>;
  426. clock-names = "pwm";
  427. status = "disabled";
  428. };
  429. pwm2: pwm@ff420020 {
  430. compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
  431. reg = <0x0 0xff420020 0x0 0x10>;
  432. #pwm-cells = <3>;
  433. pinctrl-names = "default";
  434. pinctrl-0 = <&pwm2_pin>;
  435. clocks = <&pmucru PCLK_RKPWM_PMU>;
  436. clock-names = "pwm";
  437. status = "disabled";
  438. };
  439. pwm3: pwm@ff420030 {
  440. compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
  441. reg = <0x0 0xff420030 0x0 0x10>;
  442. #pwm-cells = <3>;
  443. pinctrl-names = "default";
  444. pinctrl-0 = <&pwm3a_pin>;
  445. clocks = <&pmucru PCLK_RKPWM_PMU>;
  446. clock-names = "pwm";
  447. status = "disabled";
  448. };
  449. pmucru: pmu-clock-controller@ff750000 {
  450. compatible = "rockchip,rk3399-pmucru";
  451. reg = <0x0 0xff750000 0x0 0x1000>;
  452. #clock-cells = <1>;
  453. #reset-cells = <1>;
  454. assigned-clocks = <&pmucru PLL_PPLL>;
  455. assigned-clock-rates = <676000000>;
  456. };
  457. cru: clock-controller@ff760000 {
  458. compatible = "rockchip,rk3399-cru";
  459. reg = <0x0 0xff760000 0x0 0x1000>;
  460. #clock-cells = <1>;
  461. #reset-cells = <1>;
  462. assigned-clocks =
  463. <&cru PLL_GPLL>, <&cru PLL_CPLL>,
  464. <&cru PLL_NPLL>,
  465. <&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>,
  466. <&cru PCLK_PERIHP>,
  467. <&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>,
  468. <&cru PCLK_PERILP0>,
  469. <&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>;
  470. assigned-clock-rates =
  471. <594000000>, <800000000>,
  472. <1000000000>,
  473. <150000000>, <75000000>,
  474. <37500000>,
  475. <100000000>, <100000000>,
  476. <50000000>,
  477. <100000000>, <50000000>;
  478. };
  479. grf: syscon@ff770000 {
  480. compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
  481. reg = <0x0 0xff770000 0x0 0x10000>;
  482. #address-cells = <1>;
  483. #size-cells = <1>;
  484. io_domains: io-domains {
  485. compatible = "rockchip,rk3399-io-voltage-domain";
  486. status = "disabled";
  487. };
  488. emmc_phy: phy@f780 {
  489. compatible = "rockchip,rk3399-emmc-phy";
  490. reg = <0xf780 0x24>;
  491. #phy-cells = <0>;
  492. status = "disabled";
  493. };
  494. };
  495. watchdog@ff840000 {
  496. compatible = "snps,dw-wdt";
  497. reg = <0x0 0xff840000 0x0 0x100>;
  498. clocks = <&cru PCLK_WDT>;
  499. interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
  500. };
  501. spdif: spdif@ff870000 {
  502. compatible = "rockchip,rk3399-spdif";
  503. reg = <0x0 0xff870000 0x0 0x1000>;
  504. interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
  505. dmas = <&dmac_bus 7>;
  506. dma-names = "tx";
  507. clock-names = "mclk", "hclk";
  508. clocks = <&cru SCLK_SPDIF_8CH>, <&cru HCLK_SPDIF>;
  509. pinctrl-names = "default";
  510. pinctrl-0 = <&spdif_bus>;
  511. status = "disabled";
  512. };
  513. i2s0: i2s@ff880000 {
  514. compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
  515. reg = <0x0 0xff880000 0x0 0x1000>;
  516. rockchip,grf = <&grf>;
  517. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  518. dmas = <&dmac_bus 0>, <&dmac_bus 1>;
  519. dma-names = "tx", "rx";
  520. clock-names = "i2s_clk", "i2s_hclk";
  521. clocks = <&cru SCLK_I2S0_8CH>, <&cru HCLK_I2S0_8CH>;
  522. pinctrl-names = "default";
  523. pinctrl-0 = <&i2s0_8ch_bus>;
  524. status = "disabled";
  525. };
  526. i2s1: i2s@ff890000 {
  527. compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
  528. reg = <0x0 0xff890000 0x0 0x1000>;
  529. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  530. dmas = <&dmac_bus 2>, <&dmac_bus 3>;
  531. dma-names = "tx", "rx";
  532. clock-names = "i2s_clk", "i2s_hclk";
  533. clocks = <&cru SCLK_I2S1_8CH>, <&cru HCLK_I2S1_8CH>;
  534. pinctrl-names = "default";
  535. pinctrl-0 = <&i2s1_2ch_bus>;
  536. status = "disabled";
  537. };
  538. i2s2: i2s@ff8a0000 {
  539. compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
  540. reg = <0x0 0xff8a0000 0x0 0x1000>;
  541. interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  542. dmas = <&dmac_bus 4>, <&dmac_bus 5>;
  543. dma-names = "tx", "rx";
  544. clock-names = "i2s_clk", "i2s_hclk";
  545. clocks = <&cru SCLK_I2S2_8CH>, <&cru HCLK_I2S2_8CH>;
  546. status = "disabled";
  547. };
  548. pinctrl: pinctrl {
  549. compatible = "rockchip,rk3399-pinctrl";
  550. rockchip,grf = <&grf>;
  551. rockchip,pmu = <&pmugrf>;
  552. #address-cells = <2>;
  553. #size-cells = <2>;
  554. ranges;
  555. gpio0: gpio0@ff720000 {
  556. compatible = "rockchip,gpio-bank";
  557. reg = <0x0 0xff720000 0x0 0x100>;
  558. clocks = <&pmucru PCLK_GPIO0_PMU>;
  559. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  560. gpio-controller;
  561. #gpio-cells = <0x2>;
  562. interrupt-controller;
  563. #interrupt-cells = <0x2>;
  564. };
  565. gpio1: gpio1@ff730000 {
  566. compatible = "rockchip,gpio-bank";
  567. reg = <0x0 0xff730000 0x0 0x100>;
  568. clocks = <&pmucru PCLK_GPIO1_PMU>;
  569. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  570. gpio-controller;
  571. #gpio-cells = <0x2>;
  572. interrupt-controller;
  573. #interrupt-cells = <0x2>;
  574. };
  575. gpio2: gpio2@ff780000 {
  576. compatible = "rockchip,gpio-bank";
  577. reg = <0x0 0xff780000 0x0 0x100>;
  578. clocks = <&cru PCLK_GPIO2>;
  579. interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
  580. gpio-controller;
  581. #gpio-cells = <0x2>;
  582. interrupt-controller;
  583. #interrupt-cells = <0x2>;
  584. };
  585. gpio3: gpio3@ff788000 {
  586. compatible = "rockchip,gpio-bank";
  587. reg = <0x0 0xff788000 0x0 0x100>;
  588. clocks = <&cru PCLK_GPIO3>;
  589. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  590. gpio-controller;
  591. #gpio-cells = <0x2>;
  592. interrupt-controller;
  593. #interrupt-cells = <0x2>;
  594. };
  595. gpio4: gpio4@ff790000 {
  596. compatible = "rockchip,gpio-bank";
  597. reg = <0x0 0xff790000 0x0 0x100>;
  598. clocks = <&cru PCLK_GPIO4>;
  599. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
  600. gpio-controller;
  601. #gpio-cells = <0x2>;
  602. interrupt-controller;
  603. #interrupt-cells = <0x2>;
  604. };
  605. pcfg_pull_up: pcfg-pull-up {
  606. bias-pull-up;
  607. };
  608. pcfg_pull_down: pcfg-pull-down {
  609. bias-pull-down;
  610. };
  611. pcfg_pull_none: pcfg-pull-none {
  612. bias-disable;
  613. };
  614. pcfg_pull_none_12ma: pcfg-pull-none-12ma {
  615. bias-disable;
  616. drive-strength = <12>;
  617. };
  618. pcfg_pull_up_8ma: pcfg-pull-up-8ma {
  619. bias-pull-up;
  620. drive-strength = <8>;
  621. };
  622. pcfg_pull_down_4ma: pcfg-pull-down-4ma {
  623. bias-pull-down;
  624. drive-strength = <4>;
  625. };
  626. pcfg_pull_up_2ma: pcfg-pull-up-2ma {
  627. bias-pull-up;
  628. drive-strength = <2>;
  629. };
  630. pcfg_pull_down_12ma: pcfg-pull-down-12ma {
  631. bias-pull-down;
  632. drive-strength = <12>;
  633. };
  634. pcfg_pull_none_13ma: pcfg-pull-none-13ma {
  635. bias-disable;
  636. drive-strength = <13>;
  637. };
  638. i2c0 {
  639. i2c0_xfer: i2c0-xfer {
  640. rockchip,pins =
  641. <1 15 RK_FUNC_2 &pcfg_pull_none>,
  642. <1 16 RK_FUNC_2 &pcfg_pull_none>;
  643. };
  644. };
  645. i2c1 {
  646. i2c1_xfer: i2c1-xfer {
  647. rockchip,pins =
  648. <4 2 RK_FUNC_1 &pcfg_pull_none>,
  649. <4 1 RK_FUNC_1 &pcfg_pull_none>;
  650. };
  651. };
  652. i2c2 {
  653. i2c2_xfer: i2c2-xfer {
  654. rockchip,pins =
  655. <2 1 RK_FUNC_2 &pcfg_pull_none_12ma>,
  656. <2 0 RK_FUNC_2 &pcfg_pull_none_12ma>;
  657. };
  658. };
  659. i2c3 {
  660. i2c3_xfer: i2c3-xfer {
  661. rockchip,pins =
  662. <4 17 RK_FUNC_1 &pcfg_pull_none>,
  663. <4 16 RK_FUNC_1 &pcfg_pull_none>;
  664. };
  665. };
  666. i2c4 {
  667. i2c4_xfer: i2c4-xfer {
  668. rockchip,pins =
  669. <1 12 RK_FUNC_1 &pcfg_pull_none>,
  670. <1 11 RK_FUNC_1 &pcfg_pull_none>;
  671. };
  672. };
  673. i2c5 {
  674. i2c5_xfer: i2c5-xfer {
  675. rockchip,pins =
  676. <3 11 RK_FUNC_2 &pcfg_pull_none>,
  677. <3 10 RK_FUNC_2 &pcfg_pull_none>;
  678. };
  679. };
  680. i2c6 {
  681. i2c6_xfer: i2c6-xfer {
  682. rockchip,pins =
  683. <2 10 RK_FUNC_2 &pcfg_pull_none>,
  684. <2 9 RK_FUNC_2 &pcfg_pull_none>;
  685. };
  686. };
  687. i2c7 {
  688. i2c7_xfer: i2c7-xfer {
  689. rockchip,pins =
  690. <2 8 RK_FUNC_2 &pcfg_pull_none>,
  691. <2 7 RK_FUNC_2 &pcfg_pull_none>;
  692. };
  693. };
  694. i2c8 {
  695. i2c8_xfer: i2c8-xfer {
  696. rockchip,pins =
  697. <1 21 RK_FUNC_1 &pcfg_pull_none>,
  698. <1 20 RK_FUNC_1 &pcfg_pull_none>;
  699. };
  700. };
  701. i2s0 {
  702. i2s0_8ch_bus: i2s0-8ch-bus {
  703. rockchip,pins =
  704. <3 24 RK_FUNC_1 &pcfg_pull_none>,
  705. <3 25 RK_FUNC_1 &pcfg_pull_none>,
  706. <3 26 RK_FUNC_1 &pcfg_pull_none>,
  707. <3 27 RK_FUNC_1 &pcfg_pull_none>,
  708. <3 28 RK_FUNC_1 &pcfg_pull_none>,
  709. <3 29 RK_FUNC_1 &pcfg_pull_none>,
  710. <3 30 RK_FUNC_1 &pcfg_pull_none>,
  711. <3 31 RK_FUNC_1 &pcfg_pull_none>,
  712. <4 0 RK_FUNC_1 &pcfg_pull_none>;
  713. };
  714. };
  715. i2s1 {
  716. i2s1_2ch_bus: i2s1-2ch-bus {
  717. rockchip,pins =
  718. <4 3 RK_FUNC_1 &pcfg_pull_none>,
  719. <4 4 RK_FUNC_1 &pcfg_pull_none>,
  720. <4 5 RK_FUNC_1 &pcfg_pull_none>,
  721. <4 6 RK_FUNC_1 &pcfg_pull_none>,
  722. <4 7 RK_FUNC_1 &pcfg_pull_none>;
  723. };
  724. };
  725. sdmmc {
  726. sdmmc_bus1: sdmmc-bus1 {
  727. rockchip,pins =
  728. <4 8 RK_FUNC_1 &pcfg_pull_up>;
  729. };
  730. sdmmc_bus4: sdmmc-bus4 {
  731. rockchip,pins =
  732. <4 8 RK_FUNC_1 &pcfg_pull_up>,
  733. <4 9 RK_FUNC_1 &pcfg_pull_up>,
  734. <4 10 RK_FUNC_1 &pcfg_pull_up>,
  735. <4 11 RK_FUNC_1 &pcfg_pull_up>;
  736. };
  737. sdmmc_clk: sdmmc-clk {
  738. rockchip,pins =
  739. <4 12 RK_FUNC_1 &pcfg_pull_none>;
  740. };
  741. sdmmc_cmd: sdmmc-cmd {
  742. rockchip,pins =
  743. <4 13 RK_FUNC_1 &pcfg_pull_up>;
  744. };
  745. sdmmc_cd: sdmcc-cd {
  746. rockchip,pins =
  747. <0 7 RK_FUNC_1 &pcfg_pull_up>;
  748. };
  749. sdmmc_wp: sdmmc-wp {
  750. rockchip,pins =
  751. <0 8 RK_FUNC_1 &pcfg_pull_up>;
  752. };
  753. };
  754. spdif {
  755. spdif_bus: spdif-bus {
  756. rockchip,pins =
  757. <4 21 RK_FUNC_1 &pcfg_pull_none>;
  758. };
  759. };
  760. spi0 {
  761. spi0_clk: spi0-clk {
  762. rockchip,pins =
  763. <3 6 RK_FUNC_2 &pcfg_pull_up>;
  764. };
  765. spi0_cs0: spi0-cs0 {
  766. rockchip,pins =
  767. <3 7 RK_FUNC_2 &pcfg_pull_up>;
  768. };
  769. spi0_cs1: spi0-cs1 {
  770. rockchip,pins =
  771. <3 8 RK_FUNC_2 &pcfg_pull_up>;
  772. };
  773. spi0_tx: spi0-tx {
  774. rockchip,pins =
  775. <3 5 RK_FUNC_2 &pcfg_pull_up>;
  776. };
  777. spi0_rx: spi0-rx {
  778. rockchip,pins =
  779. <3 4 RK_FUNC_2 &pcfg_pull_up>;
  780. };
  781. };
  782. spi1 {
  783. spi1_clk: spi1-clk {
  784. rockchip,pins =
  785. <1 9 RK_FUNC_2 &pcfg_pull_up>;
  786. };
  787. spi1_cs0: spi1-cs0 {
  788. rockchip,pins =
  789. <1 10 RK_FUNC_2 &pcfg_pull_up>;
  790. };
  791. spi1_rx: spi1-rx {
  792. rockchip,pins =
  793. <1 7 RK_FUNC_2 &pcfg_pull_up>;
  794. };
  795. spi1_tx: spi1-tx {
  796. rockchip,pins =
  797. <1 8 RK_FUNC_2 &pcfg_pull_up>;
  798. };
  799. };
  800. spi2 {
  801. spi2_clk: spi2-clk {
  802. rockchip,pins =
  803. <2 11 RK_FUNC_1 &pcfg_pull_up>;
  804. };
  805. spi2_cs0: spi2-cs0 {
  806. rockchip,pins =
  807. <2 12 RK_FUNC_1 &pcfg_pull_up>;
  808. };
  809. spi2_rx: spi2-rx {
  810. rockchip,pins =
  811. <2 9 RK_FUNC_1 &pcfg_pull_up>;
  812. };
  813. spi2_tx: spi2-tx {
  814. rockchip,pins =
  815. <2 10 RK_FUNC_1 &pcfg_pull_up>;
  816. };
  817. };
  818. spi3 {
  819. spi3_clk: spi3-clk {
  820. rockchip,pins =
  821. <1 17 RK_FUNC_1 &pcfg_pull_up>;
  822. };
  823. spi3_cs0: spi3-cs0 {
  824. rockchip,pins =
  825. <1 18 RK_FUNC_1 &pcfg_pull_up>;
  826. };
  827. spi3_rx: spi3-rx {
  828. rockchip,pins =
  829. <1 15 RK_FUNC_1 &pcfg_pull_up>;
  830. };
  831. spi3_tx: spi3-tx {
  832. rockchip,pins =
  833. <1 16 RK_FUNC_1 &pcfg_pull_up>;
  834. };
  835. };
  836. spi4 {
  837. spi4_clk: spi4-clk {
  838. rockchip,pins =
  839. <3 2 RK_FUNC_2 &pcfg_pull_up>;
  840. };
  841. spi4_cs0: spi4-cs0 {
  842. rockchip,pins =
  843. <3 3 RK_FUNC_2 &pcfg_pull_up>;
  844. };
  845. spi4_rx: spi4-rx {
  846. rockchip,pins =
  847. <3 0 RK_FUNC_2 &pcfg_pull_up>;
  848. };
  849. spi4_tx: spi4-tx {
  850. rockchip,pins =
  851. <3 1 RK_FUNC_2 &pcfg_pull_up>;
  852. };
  853. };
  854. spi5 {
  855. spi5_clk: spi5-clk {
  856. rockchip,pins =
  857. <2 22 RK_FUNC_2 &pcfg_pull_up>;
  858. };
  859. spi5_cs0: spi5-cs0 {
  860. rockchip,pins =
  861. <2 23 RK_FUNC_2 &pcfg_pull_up>;
  862. };
  863. spi5_rx: spi5-rx {
  864. rockchip,pins =
  865. <2 20 RK_FUNC_2 &pcfg_pull_up>;
  866. };
  867. spi5_tx: spi5-tx {
  868. rockchip,pins =
  869. <2 21 RK_FUNC_2 &pcfg_pull_up>;
  870. };
  871. };
  872. uart0 {
  873. uart0_xfer: uart0-xfer {
  874. rockchip,pins =
  875. <2 16 RK_FUNC_1 &pcfg_pull_up>,
  876. <2 17 RK_FUNC_1 &pcfg_pull_none>;
  877. };
  878. uart0_cts: uart0-cts {
  879. rockchip,pins =
  880. <2 18 RK_FUNC_1 &pcfg_pull_none>;
  881. };
  882. uart0_rts: uart0-rts {
  883. rockchip,pins =
  884. <2 19 RK_FUNC_1 &pcfg_pull_none>;
  885. };
  886. };
  887. uart1 {
  888. uart1_xfer: uart1-xfer {
  889. rockchip,pins =
  890. <3 12 RK_FUNC_2 &pcfg_pull_up>,
  891. <3 13 RK_FUNC_2 &pcfg_pull_none>;
  892. };
  893. };
  894. uart2a {
  895. uart2a_xfer: uart2a-xfer {
  896. rockchip,pins =
  897. <4 8 RK_FUNC_2 &pcfg_pull_up>,
  898. <4 9 RK_FUNC_2 &pcfg_pull_none>;
  899. };
  900. };
  901. uart2b {
  902. uart2b_xfer: uart2b-xfer {
  903. rockchip,pins =
  904. <4 16 RK_FUNC_2 &pcfg_pull_up>,
  905. <4 17 RK_FUNC_2 &pcfg_pull_none>;
  906. };
  907. };
  908. uart2c {
  909. uart2c_xfer: uart2c-xfer {
  910. rockchip,pins =
  911. <4 19 RK_FUNC_1 &pcfg_pull_up>,
  912. <4 20 RK_FUNC_1 &pcfg_pull_none>;
  913. };
  914. };
  915. uart3 {
  916. uart3_xfer: uart3-xfer {
  917. rockchip,pins =
  918. <3 14 RK_FUNC_2 &pcfg_pull_up>,
  919. <3 15 RK_FUNC_2 &pcfg_pull_none>;
  920. };
  921. uart3_cts: uart3-cts {
  922. rockchip,pins =
  923. <3 18 RK_FUNC_2 &pcfg_pull_none>;
  924. };
  925. uart3_rts: uart3-rts {
  926. rockchip,pins =
  927. <3 19 RK_FUNC_2 &pcfg_pull_none>;
  928. };
  929. };
  930. uart4 {
  931. uart4_xfer: uart4-xfer {
  932. rockchip,pins =
  933. <1 7 RK_FUNC_1 &pcfg_pull_up>,
  934. <1 8 RK_FUNC_1 &pcfg_pull_none>;
  935. };
  936. };
  937. uarthdcp {
  938. uarthdcp_xfer: uarthdcp-xfer {
  939. rockchip,pins =
  940. <4 21 RK_FUNC_2 &pcfg_pull_up>,
  941. <4 22 RK_FUNC_2 &pcfg_pull_none>;
  942. };
  943. };
  944. pwm0 {
  945. pwm0_pin: pwm0-pin {
  946. rockchip,pins =
  947. <4 18 RK_FUNC_1 &pcfg_pull_none>;
  948. };
  949. vop0_pwm_pin: vop0-pwm-pin {
  950. rockchip,pins =
  951. <4 18 RK_FUNC_2 &pcfg_pull_none>;
  952. };
  953. };
  954. pwm1 {
  955. pwm1_pin: pwm1-pin {
  956. rockchip,pins =
  957. <4 22 RK_FUNC_1 &pcfg_pull_none>;
  958. };
  959. vop1_pwm_pin: vop1-pwm-pin {
  960. rockchip,pins =
  961. <4 18 RK_FUNC_3 &pcfg_pull_none>;
  962. };
  963. };
  964. pwm2 {
  965. pwm2_pin: pwm2-pin {
  966. rockchip,pins =
  967. <1 19 RK_FUNC_1 &pcfg_pull_none>;
  968. };
  969. };
  970. pwm3a {
  971. pwm3a_pin: pwm3a-pin {
  972. rockchip,pins =
  973. <0 6 RK_FUNC_1 &pcfg_pull_none>;
  974. };
  975. };
  976. pwm3b {
  977. pwm3b_pin: pwm3b-pin {
  978. rockchip,pins =
  979. <1 14 RK_FUNC_1 &pcfg_pull_none>;
  980. };
  981. };
  982. };
  983. };