rk3036.dtsi 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  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/rk3036-cru.h>
  7. #include <dt-bindings/soc/rockchip,boot-mode.h>
  8. #include <dt-bindings/power/rk3036-power.h>
  9. / {
  10. #address-cells = <1>;
  11. #size-cells = <1>;
  12. compatible = "rockchip,rk3036";
  13. interrupt-parent = <&gic>;
  14. aliases {
  15. i2c0 = &i2c0;
  16. i2c1 = &i2c1;
  17. i2c2 = &i2c2;
  18. mshc0 = &emmc;
  19. mshc1 = &sdmmc;
  20. mshc2 = &sdio;
  21. serial0 = &uart0;
  22. serial1 = &uart1;
  23. serial2 = &uart2;
  24. spi = &spi;
  25. };
  26. cpus {
  27. #address-cells = <1>;
  28. #size-cells = <0>;
  29. enable-method = "rockchip,rk3036-smp";
  30. cpu0: cpu@f00 {
  31. device_type = "cpu";
  32. compatible = "arm,cortex-a7";
  33. reg = <0xf00>;
  34. resets = <&cru SRST_CORE0>;
  35. operating-points = <
  36. /* KHz uV */
  37. 816000 1000000
  38. >;
  39. clock-latency = <40000>;
  40. clocks = <&cru ARMCLK>;
  41. };
  42. cpu1: cpu@f01 {
  43. device_type = "cpu";
  44. compatible = "arm,cortex-a7";
  45. reg = <0xf01>;
  46. resets = <&cru SRST_CORE1>;
  47. };
  48. };
  49. arm-pmu {
  50. compatible = "arm,cortex-a7-pmu";
  51. interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
  52. <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
  53. interrupt-affinity = <&cpu0>, <&cpu1>;
  54. };
  55. display-subsystem {
  56. compatible = "rockchip,display-subsystem";
  57. ports = <&vop_out>;
  58. };
  59. timer {
  60. compatible = "arm,armv7-timer";
  61. arm,cpu-registers-not-fw-configured;
  62. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>,
  63. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>,
  64. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>,
  65. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
  66. clock-frequency = <24000000>;
  67. };
  68. xin24m: oscillator {
  69. compatible = "fixed-clock";
  70. clock-frequency = <24000000>;
  71. clock-output-names = "xin24m";
  72. #clock-cells = <0>;
  73. };
  74. bus_intmem: sram@10080000 {
  75. compatible = "mmio-sram";
  76. reg = <0x10080000 0x2000>;
  77. #address-cells = <1>;
  78. #size-cells = <1>;
  79. ranges = <0 0x10080000 0x2000>;
  80. smp-sram@0 {
  81. compatible = "rockchip,rk3066-smp-sram";
  82. reg = <0x00 0x10>;
  83. };
  84. };
  85. gpu: gpu@10090000 {
  86. compatible = "rockchip,rk3036-mali", "arm,mali-400";
  87. reg = <0x10090000 0x10000>;
  88. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
  89. <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
  90. <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
  91. <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
  92. interrupt-names = "gp",
  93. "gpmmu",
  94. "pp0",
  95. "ppmmu0";
  96. assigned-clocks = <&cru SCLK_GPU>;
  97. assigned-clock-rates = <100000000>;
  98. clocks = <&cru SCLK_GPU>, <&cru SCLK_GPU>;
  99. clock-names = "bus", "core";
  100. power-domains = <&power RK3036_PD_GPU>;
  101. resets = <&cru SRST_GPU>;
  102. status = "disabled";
  103. };
  104. vpu: video-codec@10108000 {
  105. compatible = "rockchip,rk3036-vpu";
  106. reg = <0x10108000 0x800>;
  107. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  108. interrupt-names = "vdpu";
  109. clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
  110. clock-names = "aclk", "hclk";
  111. iommus = <&vpu_mmu>;
  112. power-domains = <&power RK3036_PD_VPU>;
  113. };
  114. vpu_mmu: iommu@10108800 {
  115. compatible = "rockchip,iommu";
  116. reg = <0x10108800 0x100>;
  117. interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
  118. clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
  119. clock-names = "aclk", "iface";
  120. power-domains = <&power RK3036_PD_VPU>;
  121. #iommu-cells = <0>;
  122. };
  123. vop: vop@10118000 {
  124. compatible = "rockchip,rk3036-vop";
  125. reg = <0x10118000 0x19c>;
  126. interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
  127. clocks = <&cru ACLK_LCDC>, <&cru SCLK_LCDC>, <&cru HCLK_LCDC>;
  128. clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
  129. resets = <&cru SRST_LCDC1_A>, <&cru SRST_LCDC1_H>, <&cru SRST_LCDC1_D>;
  130. reset-names = "axi", "ahb", "dclk";
  131. iommus = <&vop_mmu>;
  132. power-domains = <&power RK3036_PD_VIO>;
  133. status = "disabled";
  134. vop_out: port {
  135. #address-cells = <1>;
  136. #size-cells = <0>;
  137. vop_out_hdmi: endpoint@0 {
  138. reg = <0>;
  139. remote-endpoint = <&hdmi_in_vop>;
  140. };
  141. };
  142. };
  143. vop_mmu: iommu@10118300 {
  144. compatible = "rockchip,iommu";
  145. reg = <0x10118300 0x100>;
  146. interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
  147. clocks = <&cru ACLK_LCDC>, <&cru HCLK_LCDC>;
  148. clock-names = "aclk", "iface";
  149. power-domains = <&power RK3036_PD_VIO>;
  150. #iommu-cells = <0>;
  151. status = "disabled";
  152. };
  153. qos_gpu: qos@1012d000 {
  154. compatible = "rockchip,rk3036-qos", "syscon";
  155. reg = <0x1012d000 0x20>;
  156. };
  157. qos_vpu: qos@1012e000 {
  158. compatible = "rockchip,rk3036-qos", "syscon";
  159. reg = <0x1012e000 0x20>;
  160. };
  161. qos_vio: qos@1012f000 {
  162. compatible = "rockchip,rk3036-qos", "syscon";
  163. reg = <0x1012f000 0x20>;
  164. };
  165. gic: interrupt-controller@10139000 {
  166. compatible = "arm,gic-400";
  167. interrupt-controller;
  168. #interrupt-cells = <3>;
  169. #address-cells = <0>;
  170. reg = <0x10139000 0x1000>,
  171. <0x1013a000 0x2000>,
  172. <0x1013c000 0x2000>,
  173. <0x1013e000 0x2000>;
  174. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
  175. };
  176. usb_otg: usb@10180000 {
  177. compatible = "rockchip,rk3036-usb", "rockchip,rk3066-usb",
  178. "snps,dwc2";
  179. reg = <0x10180000 0x40000>;
  180. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  181. clocks = <&cru HCLK_OTG0>;
  182. clock-names = "otg";
  183. dr_mode = "otg";
  184. g-np-tx-fifo-size = <16>;
  185. g-rx-fifo-size = <275>;
  186. g-tx-fifo-size = <256 128 128 64 64 32>;
  187. status = "disabled";
  188. };
  189. usb_host: usb@101c0000 {
  190. compatible = "rockchip,rk3036-usb", "rockchip,rk3066-usb",
  191. "snps,dwc2";
  192. reg = <0x101c0000 0x40000>;
  193. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
  194. clocks = <&cru HCLK_OTG1>;
  195. clock-names = "otg";
  196. dr_mode = "host";
  197. status = "disabled";
  198. };
  199. emac: ethernet@10200000 {
  200. compatible = "rockchip,rk3036-emac";
  201. reg = <0x10200000 0x4000>;
  202. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  203. rockchip,grf = <&grf>;
  204. clocks = <&cru HCLK_MAC>, <&cru SCLK_MACREF>, <&cru SCLK_MAC>;
  205. clock-names = "hclk", "macref", "macclk";
  206. /*
  207. * Fix the emac parent clock is DPLL instead of APLL.
  208. * since that will cause some unstable things if the cpufreq
  209. * is working. (e.g: the accurate 50MHz what mac_ref need)
  210. */
  211. assigned-clocks = <&cru SCLK_MACPLL>;
  212. assigned-clock-parents = <&cru PLL_DPLL>;
  213. max-speed = <100>;
  214. phy-mode = "rmii";
  215. status = "disabled";
  216. };
  217. sdmmc: mmc@10214000 {
  218. compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
  219. reg = <0x10214000 0x4000>;
  220. clock-frequency = <37500000>;
  221. max-frequency = <37500000>;
  222. clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
  223. clock-names = "biu", "ciu";
  224. fifo-depth = <0x100>;
  225. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  226. resets = <&cru SRST_MMC0>;
  227. reset-names = "reset";
  228. status = "disabled";
  229. };
  230. sdio: mmc@10218000 {
  231. compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
  232. reg = <0x10218000 0x4000>;
  233. max-frequency = <37500000>;
  234. clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
  235. <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
  236. clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
  237. fifo-depth = <0x100>;
  238. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  239. resets = <&cru SRST_SDIO>;
  240. reset-names = "reset";
  241. status = "disabled";
  242. };
  243. emmc: mmc@1021c000 {
  244. compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
  245. reg = <0x1021c000 0x4000>;
  246. interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
  247. bus-width = <8>;
  248. cap-mmc-highspeed;
  249. clock-frequency = <37500000>;
  250. max-frequency = <37500000>;
  251. clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
  252. <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
  253. clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
  254. rockchip,default-sample-phase = <158>;
  255. disable-wp;
  256. dmas = <&pdma 12>;
  257. dma-names = "rx-tx";
  258. fifo-depth = <0x100>;
  259. mmc-ddr-1_8v;
  260. non-removable;
  261. pinctrl-names = "default";
  262. pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
  263. resets = <&cru SRST_EMMC>;
  264. reset-names = "reset";
  265. status = "disabled";
  266. };
  267. i2s: i2s@10220000 {
  268. compatible = "rockchip,rk3036-i2s", "rockchip,rk3066-i2s";
  269. reg = <0x10220000 0x4000>;
  270. interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
  271. clock-names = "i2s_clk", "i2s_hclk";
  272. clocks = <&cru SCLK_I2S>, <&cru HCLK_I2S>;
  273. dmas = <&pdma 0>, <&pdma 1>;
  274. dma-names = "tx", "rx";
  275. pinctrl-names = "default";
  276. pinctrl-0 = <&i2s_bus>;
  277. #sound-dai-cells = <0>;
  278. status = "disabled";
  279. };
  280. nfc: nand-controller@10500000 {
  281. compatible = "rockchip,rk3036-nfc",
  282. "rockchip,rk2928-nfc";
  283. reg = <0x10500000 0x4000>;
  284. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
  285. clocks = <&cru HCLK_NANDC>, <&cru SCLK_NANDC>;
  286. clock-names = "ahb", "nfc";
  287. assigned-clocks = <&cru SCLK_NANDC>;
  288. assigned-clock-rates = <150000000>;
  289. pinctrl-0 = <&flash_ale &flash_bus8 &flash_cle &flash_csn0
  290. &flash_rdn &flash_rdy &flash_wrn>;
  291. pinctrl-names = "default";
  292. status = "disabled";
  293. };
  294. cru: clock-controller@20000000 {
  295. compatible = "rockchip,rk3036-cru";
  296. reg = <0x20000000 0x1000>;
  297. clocks = <&xin24m>;
  298. clock-names = "xin24m";
  299. rockchip,grf = <&grf>;
  300. #clock-cells = <1>;
  301. #reset-cells = <1>;
  302. assigned-clocks = <&cru PLL_GPLL>;
  303. assigned-clock-rates = <594000000>;
  304. };
  305. grf: syscon@20008000 {
  306. compatible = "rockchip,rk3036-grf", "syscon", "simple-mfd";
  307. reg = <0x20008000 0x1000>;
  308. power: power-controller {
  309. compatible = "rockchip,rk3036-power-controller";
  310. #power-domain-cells = <1>;
  311. #address-cells = <1>;
  312. #size-cells = <0>;
  313. power-domain@RK3036_PD_VIO {
  314. reg = <RK3036_PD_VIO>;
  315. clocks = <&cru ACLK_LCDC>,
  316. <&cru HCLK_LCDC>,
  317. <&cru SCLK_LCDC>;
  318. pm_qos = <&qos_vio>;
  319. #power-domain-cells = <0>;
  320. };
  321. power-domain@RK3036_PD_VPU {
  322. reg = <RK3036_PD_VPU>;
  323. clocks = <&cru ACLK_VCODEC>,
  324. <&cru HCLK_VCODEC>;
  325. pm_qos = <&qos_vpu>;
  326. #power-domain-cells = <0>;
  327. };
  328. power-domain@RK3036_PD_GPU {
  329. reg = <RK3036_PD_GPU>;
  330. clocks = <&cru SCLK_GPU>;
  331. pm_qos = <&qos_gpu>;
  332. #power-domain-cells = <0>;
  333. };
  334. };
  335. reboot-mode {
  336. compatible = "syscon-reboot-mode";
  337. offset = <0x1d8>;
  338. mode-normal = <BOOT_NORMAL>;
  339. mode-recovery = <BOOT_RECOVERY>;
  340. mode-bootloader = <BOOT_FASTBOOT>;
  341. mode-loader = <BOOT_BL_DOWNLOAD>;
  342. };
  343. };
  344. acodec: acodec-ana@20030000 {
  345. compatible = "rk3036-codec";
  346. reg = <0x20030000 0x4000>;
  347. rockchip,grf = <&grf>;
  348. clock-names = "acodec_pclk";
  349. clocks = <&cru PCLK_ACODEC>;
  350. status = "disabled";
  351. };
  352. hdmi: hdmi@20034000 {
  353. compatible = "rockchip,rk3036-inno-hdmi";
  354. reg = <0x20034000 0x4000>;
  355. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  356. clocks = <&cru PCLK_HDMI>;
  357. clock-names = "pclk";
  358. rockchip,grf = <&grf>;
  359. pinctrl-names = "default";
  360. pinctrl-0 = <&hdmi_ctl>;
  361. status = "disabled";
  362. hdmi_in: port {
  363. #address-cells = <1>;
  364. #size-cells = <0>;
  365. hdmi_in_vop: endpoint@0 {
  366. reg = <0>;
  367. remote-endpoint = <&vop_out_hdmi>;
  368. };
  369. };
  370. };
  371. timer: timer@20044000 {
  372. compatible = "rockchip,rk3036-timer", "rockchip,rk3288-timer";
  373. reg = <0x20044000 0x20>;
  374. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  375. clocks = <&cru PCLK_TIMER>, <&xin24m>;
  376. clock-names = "pclk", "timer";
  377. };
  378. pwm0: pwm@20050000 {
  379. compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
  380. reg = <0x20050000 0x10>;
  381. #pwm-cells = <3>;
  382. clocks = <&cru PCLK_PWM>;
  383. pinctrl-names = "default";
  384. pinctrl-0 = <&pwm0_pin>;
  385. status = "disabled";
  386. };
  387. pwm1: pwm@20050010 {
  388. compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
  389. reg = <0x20050010 0x10>;
  390. #pwm-cells = <3>;
  391. clocks = <&cru PCLK_PWM>;
  392. pinctrl-names = "default";
  393. pinctrl-0 = <&pwm1_pin>;
  394. status = "disabled";
  395. };
  396. pwm2: pwm@20050020 {
  397. compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
  398. reg = <0x20050020 0x10>;
  399. #pwm-cells = <3>;
  400. clocks = <&cru PCLK_PWM>;
  401. pinctrl-names = "default";
  402. pinctrl-0 = <&pwm2_pin>;
  403. status = "disabled";
  404. };
  405. pwm3: pwm@20050030 {
  406. compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
  407. reg = <0x20050030 0x10>;
  408. #pwm-cells = <2>;
  409. clocks = <&cru PCLK_PWM>;
  410. pinctrl-names = "default";
  411. pinctrl-0 = <&pwm3_pin>;
  412. status = "disabled";
  413. };
  414. i2c1: i2c@20056000 {
  415. compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
  416. reg = <0x20056000 0x1000>;
  417. interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
  418. #address-cells = <1>;
  419. #size-cells = <0>;
  420. clock-names = "i2c";
  421. clocks = <&cru PCLK_I2C1>;
  422. pinctrl-names = "default";
  423. pinctrl-0 = <&i2c1_xfer>;
  424. status = "disabled";
  425. };
  426. i2c2: i2c@2005a000 {
  427. compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
  428. reg = <0x2005a000 0x1000>;
  429. interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
  430. #address-cells = <1>;
  431. #size-cells = <0>;
  432. clock-names = "i2c";
  433. clocks = <&cru PCLK_I2C2>;
  434. pinctrl-names = "default";
  435. pinctrl-0 = <&i2c2_xfer>;
  436. status = "disabled";
  437. };
  438. uart0: serial@20060000 {
  439. compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
  440. reg = <0x20060000 0x100>;
  441. interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
  442. reg-shift = <2>;
  443. reg-io-width = <4>;
  444. clock-frequency = <24000000>;
  445. clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
  446. clock-names = "baudclk", "apb_pclk";
  447. pinctrl-names = "default";
  448. pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
  449. status = "disabled";
  450. };
  451. uart1: serial@20064000 {
  452. compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
  453. reg = <0x20064000 0x100>;
  454. interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
  455. reg-shift = <2>;
  456. reg-io-width = <4>;
  457. clock-frequency = <24000000>;
  458. clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
  459. clock-names = "baudclk", "apb_pclk";
  460. pinctrl-names = "default";
  461. pinctrl-0 = <&uart1_xfer>;
  462. status = "disabled";
  463. };
  464. uart2: serial@20068000 {
  465. compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
  466. reg = <0x20068000 0x100>;
  467. interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
  468. reg-shift = <2>;
  469. reg-io-width = <4>;
  470. clock-frequency = <24000000>;
  471. clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
  472. clock-names = "baudclk", "apb_pclk";
  473. pinctrl-names = "default";
  474. pinctrl-0 = <&uart2_xfer>;
  475. status = "disabled";
  476. };
  477. i2c0: i2c@20072000 {
  478. compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
  479. reg = <0x20072000 0x1000>;
  480. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  481. #address-cells = <1>;
  482. #size-cells = <0>;
  483. clock-names = "i2c";
  484. clocks = <&cru PCLK_I2C0>;
  485. pinctrl-names = "default";
  486. pinctrl-0 = <&i2c0_xfer>;
  487. status = "disabled";
  488. };
  489. spi: spi@20074000 {
  490. compatible = "rockchip,rockchip-spi";
  491. reg = <0x20074000 0x1000>;
  492. interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  493. clocks = <&cru PCLK_SPI>, <&cru SCLK_SPI>;
  494. clock-names = "apb-pclk","spi_pclk";
  495. dmas = <&pdma 8>, <&pdma 9>;
  496. dma-names = "tx", "rx";
  497. pinctrl-names = "default";
  498. pinctrl-0 = <&spi_txd &spi_rxd &spi_clk &spi_cs0>;
  499. #address-cells = <1>;
  500. #size-cells = <0>;
  501. status = "disabled";
  502. };
  503. pdma: dma-controller@20078000 {
  504. compatible = "arm,pl330", "arm,primecell";
  505. reg = <0x20078000 0x4000>;
  506. interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
  507. <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  508. #dma-cells = <1>;
  509. arm,pl330-broken-no-flushp;
  510. arm,pl330-periph-burst;
  511. clocks = <&cru ACLK_DMAC2>;
  512. clock-names = "apb_pclk";
  513. };
  514. pinctrl: pinctrl {
  515. compatible = "rockchip,rk3036-pinctrl";
  516. rockchip,grf = <&grf>;
  517. #address-cells = <1>;
  518. #size-cells = <1>;
  519. ranges;
  520. gpio0: gpio@2007c000 {
  521. compatible = "rockchip,gpio-bank";
  522. reg = <0x2007c000 0x100>;
  523. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
  524. clocks = <&cru PCLK_GPIO0>;
  525. gpio-controller;
  526. #gpio-cells = <2>;
  527. interrupt-controller;
  528. #interrupt-cells = <2>;
  529. };
  530. gpio1: gpio@20080000 {
  531. compatible = "rockchip,gpio-bank";
  532. reg = <0x20080000 0x100>;
  533. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  534. clocks = <&cru PCLK_GPIO1>;
  535. gpio-controller;
  536. #gpio-cells = <2>;
  537. interrupt-controller;
  538. #interrupt-cells = <2>;
  539. };
  540. gpio2: gpio@20084000 {
  541. compatible = "rockchip,gpio-bank";
  542. reg = <0x20084000 0x100>;
  543. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  544. clocks = <&cru PCLK_GPIO2>;
  545. gpio-controller;
  546. #gpio-cells = <2>;
  547. interrupt-controller;
  548. #interrupt-cells = <2>;
  549. };
  550. pcfg_pull_default: pcfg-pull-default {
  551. bias-pull-pin-default;
  552. };
  553. pcfg_pull_none: pcfg-pull-none {
  554. bias-disable;
  555. };
  556. pwm0 {
  557. pwm0_pin: pwm0-pin {
  558. rockchip,pins = <0 RK_PA0 2 &pcfg_pull_none>;
  559. };
  560. };
  561. pwm1 {
  562. pwm1_pin: pwm1-pin {
  563. rockchip,pins = <0 RK_PA1 2 &pcfg_pull_none>;
  564. };
  565. };
  566. pwm2 {
  567. pwm2_pin: pwm2-pin {
  568. rockchip,pins = <0 RK_PA1 2 &pcfg_pull_none>;
  569. };
  570. };
  571. pwm3 {
  572. pwm3_pin: pwm3-pin {
  573. rockchip,pins = <0 RK_PD3 1 &pcfg_pull_none>;
  574. };
  575. };
  576. sdmmc {
  577. sdmmc_clk: sdmmc-clk {
  578. rockchip,pins = <1 RK_PC0 1 &pcfg_pull_none>;
  579. };
  580. sdmmc_cmd: sdmmc-cmd {
  581. rockchip,pins = <1 RK_PB7 1 &pcfg_pull_default>;
  582. };
  583. sdmmc_cd: sdmmc-cd {
  584. rockchip,pins = <1 RK_PC1 1 &pcfg_pull_default>;
  585. };
  586. sdmmc_bus1: sdmmc-bus1 {
  587. rockchip,pins = <1 RK_PC2 1 &pcfg_pull_default>;
  588. };
  589. sdmmc_bus4: sdmmc-bus4 {
  590. rockchip,pins = <1 RK_PC2 1 &pcfg_pull_default>,
  591. <1 RK_PC3 1 &pcfg_pull_default>,
  592. <1 RK_PC4 1 &pcfg_pull_default>,
  593. <1 RK_PC5 1 &pcfg_pull_default>;
  594. };
  595. };
  596. sdio {
  597. sdio_bus1: sdio-bus1 {
  598. rockchip,pins = <0 RK_PB3 1 &pcfg_pull_default>;
  599. };
  600. sdio_bus4: sdio-bus4 {
  601. rockchip,pins = <0 RK_PB3 1 &pcfg_pull_default>,
  602. <0 RK_PB4 1 &pcfg_pull_default>,
  603. <0 RK_PB5 1 &pcfg_pull_default>,
  604. <0 RK_PB6 1 &pcfg_pull_default>;
  605. };
  606. sdio_cmd: sdio-cmd {
  607. rockchip,pins = <0 RK_PB0 1 &pcfg_pull_default>;
  608. };
  609. sdio_clk: sdio-clk {
  610. rockchip,pins = <0 RK_PB1 1 &pcfg_pull_none>;
  611. };
  612. };
  613. emmc {
  614. /*
  615. * We run eMMC at max speed; bump up drive strength.
  616. * We also have external pulls, so disable the internal ones.
  617. */
  618. emmc_clk: emmc-clk {
  619. rockchip,pins = <2 RK_PA4 2 &pcfg_pull_none>;
  620. };
  621. emmc_cmd: emmc-cmd {
  622. rockchip,pins = <2 RK_PA1 2 &pcfg_pull_default>;
  623. };
  624. emmc_bus8: emmc-bus8 {
  625. rockchip,pins = <1 RK_PD0 2 &pcfg_pull_default>,
  626. <1 RK_PD1 2 &pcfg_pull_default>,
  627. <1 RK_PD2 2 &pcfg_pull_default>,
  628. <1 RK_PD3 2 &pcfg_pull_default>,
  629. <1 RK_PD4 2 &pcfg_pull_default>,
  630. <1 RK_PD5 2 &pcfg_pull_default>,
  631. <1 RK_PD6 2 &pcfg_pull_default>,
  632. <1 RK_PD7 2 &pcfg_pull_default>;
  633. };
  634. };
  635. nfc {
  636. flash_ale: flash-ale {
  637. rockchip,pins = <2 RK_PA0 1 &pcfg_pull_default>;
  638. };
  639. flash_bus8: flash-bus8 {
  640. rockchip,pins = <1 RK_PD0 1 &pcfg_pull_default>,
  641. <1 RK_PD1 1 &pcfg_pull_default>,
  642. <1 RK_PD2 1 &pcfg_pull_default>,
  643. <1 RK_PD3 1 &pcfg_pull_default>,
  644. <1 RK_PD4 1 &pcfg_pull_default>,
  645. <1 RK_PD5 1 &pcfg_pull_default>,
  646. <1 RK_PD6 1 &pcfg_pull_default>,
  647. <1 RK_PD7 1 &pcfg_pull_default>;
  648. };
  649. flash_cle: flash-cle {
  650. rockchip,pins = <2 RK_PA1 1 &pcfg_pull_default>;
  651. };
  652. flash_csn0: flash-csn0 {
  653. rockchip,pins = <2 RK_PA6 1 &pcfg_pull_default>;
  654. };
  655. flash_rdn: flash-rdn {
  656. rockchip,pins = <2 RK_PA3 1 &pcfg_pull_default>;
  657. };
  658. flash_rdy: flash-rdy {
  659. rockchip,pins = <2 RK_PA4 1 &pcfg_pull_default>;
  660. };
  661. flash_wrn: flash-wrn {
  662. rockchip,pins = <2 RK_PA2 1 &pcfg_pull_default>;
  663. };
  664. };
  665. emac {
  666. emac_xfer: emac-xfer {
  667. rockchip,pins = <2 RK_PB2 1 &pcfg_pull_default>, /* crs_dvalid */
  668. <2 RK_PB5 1 &pcfg_pull_default>, /* tx_en */
  669. <2 RK_PB6 1 &pcfg_pull_default>, /* mac_clk */
  670. <2 RK_PB7 1 &pcfg_pull_default>, /* rx_err */
  671. <2 RK_PC0 1 &pcfg_pull_default>, /* rxd1 */
  672. <2 RK_PC1 1 &pcfg_pull_default>, /* rxd0 */
  673. <2 RK_PC2 1 &pcfg_pull_default>, /* txd1 */
  674. <2 RK_PC3 1 &pcfg_pull_default>; /* txd0 */
  675. };
  676. emac_mdio: emac-mdio {
  677. rockchip,pins = <2 RK_PB4 1 &pcfg_pull_default>, /* mac_md */
  678. <2 RK_PD1 1 &pcfg_pull_default>; /* mac_mdclk */
  679. };
  680. };
  681. i2c0 {
  682. i2c0_xfer: i2c0-xfer {
  683. rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>,
  684. <0 RK_PA1 1 &pcfg_pull_none>;
  685. };
  686. };
  687. i2c1 {
  688. i2c1_xfer: i2c1-xfer {
  689. rockchip,pins = <0 RK_PA2 1 &pcfg_pull_none>,
  690. <0 RK_PA3 1 &pcfg_pull_none>;
  691. };
  692. };
  693. i2c2 {
  694. i2c2_xfer: i2c2-xfer {
  695. rockchip,pins = <2 RK_PC4 1 &pcfg_pull_none>,
  696. <2 RK_PC5 1 &pcfg_pull_none>;
  697. };
  698. };
  699. i2s {
  700. i2s_bus: i2s-bus {
  701. rockchip,pins = <1 RK_PA0 1 &pcfg_pull_default>,
  702. <1 RK_PA1 1 &pcfg_pull_default>,
  703. <1 RK_PA2 1 &pcfg_pull_default>,
  704. <1 RK_PA3 1 &pcfg_pull_default>,
  705. <1 RK_PA4 1 &pcfg_pull_default>,
  706. <1 RK_PA5 1 &pcfg_pull_default>;
  707. };
  708. };
  709. hdmi {
  710. hdmi_ctl: hdmi-ctl {
  711. rockchip,pins = <1 RK_PB0 1 &pcfg_pull_none>,
  712. <1 RK_PB1 1 &pcfg_pull_none>,
  713. <1 RK_PB2 1 &pcfg_pull_none>,
  714. <1 RK_PB3 1 &pcfg_pull_none>;
  715. };
  716. };
  717. uart0 {
  718. uart0_xfer: uart0-xfer {
  719. rockchip,pins = <0 RK_PC0 1 &pcfg_pull_default>,
  720. <0 RK_PC1 1 &pcfg_pull_none>;
  721. };
  722. uart0_cts: uart0-cts {
  723. rockchip,pins = <0 RK_PC2 1 &pcfg_pull_default>;
  724. };
  725. uart0_rts: uart0-rts {
  726. rockchip,pins = <0 RK_PC3 1 &pcfg_pull_none>;
  727. };
  728. };
  729. uart1 {
  730. uart1_xfer: uart1-xfer {
  731. rockchip,pins = <2 RK_PC6 1 &pcfg_pull_default>,
  732. <2 RK_PC7 1 &pcfg_pull_none>;
  733. };
  734. /* no rts / cts for uart1 */
  735. };
  736. uart2 {
  737. uart2_xfer: uart2-xfer {
  738. rockchip,pins = <1 RK_PC2 2 &pcfg_pull_default>,
  739. <1 RK_PC3 2 &pcfg_pull_none>;
  740. };
  741. /* no rts / cts for uart2 */
  742. };
  743. spi-pins {
  744. spi_txd:spi-txd {
  745. rockchip,pins = <1 RK_PD5 3 &pcfg_pull_default>;
  746. };
  747. spi_rxd:spi-rxd {
  748. rockchip,pins = <1 RK_PD4 3 &pcfg_pull_default>;
  749. };
  750. spi_clk:spi-clk {
  751. rockchip,pins = <2 RK_PA0 2 &pcfg_pull_default>;
  752. };
  753. spi_cs0:spi-cs0 {
  754. rockchip,pins = <1 RK_PD6 3 &pcfg_pull_default>;
  755. };
  756. spi_cs1:spi-cs1 {
  757. rockchip,pins = <1 RK_PD7 3 &pcfg_pull_default>;
  758. };
  759. };
  760. };
  761. };