hi3670.dtsi 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * dts file for Hisilicon Hi3670 SoC
  4. *
  5. * Copyright (C) 2016, HiSilicon Ltd.
  6. * Copyright (C) 2018, Linaro Ltd.
  7. */
  8. #include <dt-bindings/interrupt-controller/arm-gic.h>
  9. #include <dt-bindings/clock/hi3670-clock.h>
  10. / {
  11. compatible = "hisilicon,hi3670";
  12. interrupt-parent = <&gic>;
  13. #address-cells = <2>;
  14. #size-cells = <2>;
  15. psci {
  16. compatible = "arm,psci-0.2";
  17. method = "smc";
  18. };
  19. cpus {
  20. #address-cells = <2>;
  21. #size-cells = <0>;
  22. cpu-map {
  23. cluster0 {
  24. core0 {
  25. cpu = <&cpu0>;
  26. };
  27. core1 {
  28. cpu = <&cpu1>;
  29. };
  30. core2 {
  31. cpu = <&cpu2>;
  32. };
  33. core3 {
  34. cpu = <&cpu3>;
  35. };
  36. };
  37. cluster1 {
  38. core0 {
  39. cpu = <&cpu4>;
  40. };
  41. core1 {
  42. cpu = <&cpu5>;
  43. };
  44. core2 {
  45. cpu = <&cpu6>;
  46. };
  47. core3 {
  48. cpu = <&cpu7>;
  49. };
  50. };
  51. };
  52. cpu0: cpu@0 {
  53. compatible = "arm,cortex-a53";
  54. device_type = "cpu";
  55. reg = <0x0 0x0>;
  56. enable-method = "psci";
  57. };
  58. cpu1: cpu@1 {
  59. compatible = "arm,cortex-a53";
  60. device_type = "cpu";
  61. reg = <0x0 0x1>;
  62. enable-method = "psci";
  63. };
  64. cpu2: cpu@2 {
  65. compatible = "arm,cortex-a53";
  66. device_type = "cpu";
  67. reg = <0x0 0x2>;
  68. enable-method = "psci";
  69. };
  70. cpu3: cpu@3 {
  71. compatible = "arm,cortex-a53";
  72. device_type = "cpu";
  73. reg = <0x0 0x3>;
  74. enable-method = "psci";
  75. };
  76. cpu4: cpu@100 {
  77. compatible = "arm,cortex-a73";
  78. device_type = "cpu";
  79. reg = <0x0 0x100>;
  80. enable-method = "psci";
  81. };
  82. cpu5: cpu@101 {
  83. compatible = "arm,cortex-a73";
  84. device_type = "cpu";
  85. reg = <0x0 0x101>;
  86. enable-method = "psci";
  87. };
  88. cpu6: cpu@102 {
  89. compatible = "arm,cortex-a73";
  90. device_type = "cpu";
  91. reg = <0x0 0x102>;
  92. enable-method = "psci";
  93. };
  94. cpu7: cpu@103 {
  95. compatible = "arm,cortex-a73";
  96. device_type = "cpu";
  97. reg = <0x0 0x103>;
  98. enable-method = "psci";
  99. };
  100. };
  101. gic: interrupt-controller@e82b0000 {
  102. compatible = "arm,gic-400";
  103. reg = <0x0 0xe82b1000 0 0x1000>, /* GICD */
  104. <0x0 0xe82b2000 0 0x2000>, /* GICC */
  105. <0x0 0xe82b4000 0 0x2000>, /* GICH */
  106. <0x0 0xe82b6000 0 0x2000>; /* GICV */
  107. #interrupt-cells = <3>;
  108. #address-cells = <0>;
  109. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) |
  110. IRQ_TYPE_LEVEL_HIGH)>;
  111. interrupt-controller;
  112. };
  113. timer {
  114. compatible = "arm,armv8-timer";
  115. interrupt-parent = <&gic>;
  116. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) |
  117. IRQ_TYPE_LEVEL_LOW)>,
  118. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) |
  119. IRQ_TYPE_LEVEL_LOW)>,
  120. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) |
  121. IRQ_TYPE_LEVEL_LOW)>,
  122. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) |
  123. IRQ_TYPE_LEVEL_LOW)>;
  124. clock-frequency = <1920000>;
  125. };
  126. soc {
  127. compatible = "simple-bus";
  128. #address-cells = <2>;
  129. #size-cells = <2>;
  130. ranges;
  131. crg_ctrl: crg_ctrl@fff35000 {
  132. compatible = "hisilicon,hi3670-crgctrl", "syscon";
  133. reg = <0x0 0xfff35000 0x0 0x1000>;
  134. #clock-cells = <1>;
  135. };
  136. crg_rst: crg_rst_controller {
  137. compatible = "hisilicon,hi3670-reset",
  138. "hisilicon,hi3660-reset";
  139. #reset-cells = <2>;
  140. hisi,rst-syscon = <&crg_ctrl>;
  141. };
  142. pctrl: pctrl@e8a09000 {
  143. compatible = "hisilicon,hi3670-pctrl", "syscon";
  144. reg = <0x0 0xe8a09000 0x0 0x1000>;
  145. #clock-cells = <1>;
  146. };
  147. pmuctrl: crg_ctrl@fff34000 {
  148. compatible = "hisilicon,hi3670-pmuctrl", "syscon";
  149. reg = <0x0 0xfff34000 0x0 0x1000>;
  150. #clock-cells = <1>;
  151. };
  152. sctrl: sctrl@fff0a000 {
  153. compatible = "hisilicon,hi3670-sctrl", "syscon";
  154. reg = <0x0 0xfff0a000 0x0 0x1000>;
  155. #clock-cells = <1>;
  156. };
  157. iomcu: iomcu@ffd7e000 {
  158. compatible = "hisilicon,hi3670-iomcu", "syscon";
  159. reg = <0x0 0xffd7e000 0x0 0x1000>;
  160. #clock-cells = <1>;
  161. };
  162. media1_crg: media1_crgctrl@e87ff000 {
  163. compatible = "hisilicon,hi3670-media1-crg", "syscon";
  164. reg = <0x0 0xe87ff000 0x0 0x1000>;
  165. #clock-cells = <1>;
  166. };
  167. media2_crg: media2_crgctrl@e8900000 {
  168. compatible = "hisilicon,hi3670-media2-crg","syscon";
  169. reg = <0x0 0xe8900000 0x0 0x1000>;
  170. #clock-cells = <1>;
  171. };
  172. iomcu_rst: reset {
  173. compatible = "hisilicon,hi3660-reset";
  174. hisi,rst-syscon = <&iomcu>;
  175. #reset-cells = <2>;
  176. };
  177. uart0: serial@fdf02000 {
  178. compatible = "arm,pl011", "arm,primecell";
  179. reg = <0x0 0xfdf02000 0x0 0x1000>;
  180. interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  181. clocks = <&crg_ctrl HI3670_CLK_GATE_UART0>,
  182. <&crg_ctrl HI3670_PCLK>;
  183. clock-names = "uartclk", "apb_pclk";
  184. pinctrl-names = "default";
  185. pinctrl-0 = <&uart0_pmx_func &uart0_cfg_func>;
  186. status = "disabled";
  187. };
  188. uart1: serial@fdf00000 {
  189. compatible = "arm,pl011", "arm,primecell";
  190. reg = <0x0 0xfdf00000 0x0 0x1000>;
  191. interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
  192. clocks = <&crg_ctrl HI3670_CLK_GATE_UART1>,
  193. <&crg_ctrl HI3670_PCLK>;
  194. clock-names = "uartclk", "apb_pclk";
  195. status = "disabled";
  196. };
  197. uart2: serial@fdf03000 {
  198. compatible = "arm,pl011", "arm,primecell";
  199. reg = <0x0 0xfdf03000 0x0 0x1000>;
  200. interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
  201. clocks = <&crg_ctrl HI3670_CLK_GATE_UART2>,
  202. <&crg_ctrl HI3670_PCLK>;
  203. clock-names = "uartclk", "apb_pclk";
  204. pinctrl-names = "default";
  205. pinctrl-0 = <&uart2_pmx_func &uart2_cfg_func>;
  206. status = "disabled";
  207. };
  208. uart3: serial@ffd74000 {
  209. compatible = "arm,pl011", "arm,primecell";
  210. reg = <0x0 0xffd74000 0x0 0x1000>;
  211. interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
  212. clocks = <&crg_ctrl HI3670_CLK_GATE_UART3>,
  213. <&crg_ctrl HI3670_PCLK>;
  214. clock-names = "uartclk", "apb_pclk";
  215. pinctrl-names = "default";
  216. pinctrl-0 = <&uart3_pmx_func &uart3_cfg_func>;
  217. status = "disabled";
  218. };
  219. uart4: serial@fdf01000 {
  220. compatible = "arm,pl011", "arm,primecell";
  221. reg = <0x0 0xfdf01000 0x0 0x1000>;
  222. interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
  223. clocks = <&crg_ctrl HI3670_CLK_GATE_UART4>,
  224. <&crg_ctrl HI3670_PCLK>;
  225. clock-names = "uartclk", "apb_pclk";
  226. pinctrl-names = "default";
  227. pinctrl-0 = <&uart4_pmx_func &uart4_cfg_func>;
  228. status = "disabled";
  229. };
  230. uart5: serial@fdf05000 {
  231. compatible = "arm,pl011", "arm,primecell";
  232. reg = <0x0 0xfdf05000 0x0 0x1000>;
  233. interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
  234. clocks = <&crg_ctrl HI3670_CLK_GATE_UART5>,
  235. <&crg_ctrl HI3670_PCLK>;
  236. clock-names = "uartclk", "apb_pclk";
  237. status = "disabled";
  238. };
  239. uart6: serial@fff32000 {
  240. compatible = "arm,pl011", "arm,primecell";
  241. reg = <0x0 0xfff32000 0x0 0x1000>;
  242. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
  243. clocks = <&crg_ctrl HI3670_CLK_UART6>,
  244. <&crg_ctrl HI3670_PCLK>;
  245. clock-names = "uartclk", "apb_pclk";
  246. pinctrl-names = "default";
  247. pinctrl-0 = <&uart6_pmx_func &uart6_cfg_func>;
  248. status = "disabled";
  249. };
  250. gpio0: gpio@e8a0b000 {
  251. compatible = "arm,pl061", "arm,primecell";
  252. reg = <0x0 0xe8a0b000 0x0 0x1000>;
  253. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  254. gpio-controller;
  255. #gpio-cells = <2>;
  256. gpio-ranges = <&pmx0 1 0 1 &pmx0 3 1 5>;
  257. interrupt-controller;
  258. #interrupt-cells = <2>;
  259. clocks = <&crg_ctrl HI3670_PCLK_GPIO0>;
  260. clock-names = "apb_pclk";
  261. };
  262. gpio1: gpio@e8a0c000 {
  263. compatible = "arm,pl061", "arm,primecell";
  264. reg = <0x0 0xe8a0c000 0x0 0x1000>;
  265. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  266. gpio-controller;
  267. #gpio-cells = <2>;
  268. interrupt-controller;
  269. #interrupt-cells = <2>;
  270. clocks = <&crg_ctrl HI3670_PCLK_GPIO1>;
  271. clock-names = "apb_pclk";
  272. };
  273. gpio2: gpio@e8a0d000 {
  274. compatible = "arm,pl061", "arm,primecell";
  275. reg = <0x0 0xe8a0d000 0x0 0x1000>;
  276. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  277. gpio-controller;
  278. #gpio-cells = <2>;
  279. gpio-ranges = <&pmx0 1 6 7>;
  280. interrupt-controller;
  281. #interrupt-cells = <2>;
  282. clocks = <&crg_ctrl HI3670_PCLK_GPIO2>;
  283. clock-names = "apb_pclk";
  284. };
  285. gpio3: gpio@e8a0e000 {
  286. compatible = "arm,pl061", "arm,primecell";
  287. reg = <0x0 0xe8a0e000 0x0 0x1000>;
  288. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  289. gpio-controller;
  290. #gpio-cells = <2>;
  291. gpio-ranges = <&pmx0 0 13 4 &pmx0 7 17 1>;
  292. interrupt-controller;
  293. #interrupt-cells = <2>;
  294. clocks = <&crg_ctrl HI3670_PCLK_GPIO3>;
  295. clock-names = "apb_pclk";
  296. };
  297. gpio4: gpio@e8a0f000 {
  298. compatible = "arm,pl061", "arm,primecell";
  299. reg = <0x0 0xe8a0f000 0x0 0x1000>;
  300. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  301. gpio-controller;
  302. #gpio-cells = <2>;
  303. gpio-ranges = <&pmx0 0 18 8>;
  304. interrupt-controller;
  305. #interrupt-cells = <2>;
  306. clocks = <&crg_ctrl HI3670_PCLK_GPIO4>;
  307. clock-names = "apb_pclk";
  308. };
  309. gpio5: gpio@e8a10000 {
  310. compatible = "arm,pl061", "arm,primecell";
  311. reg = <0x0 0xe8a10000 0x0 0x1000>;
  312. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  313. gpio-controller;
  314. #gpio-cells = <2>;
  315. gpio-ranges = <&pmx0 0 26 8>;
  316. interrupt-controller;
  317. #interrupt-cells = <2>;
  318. clocks = <&crg_ctrl HI3670_PCLK_GPIO5>;
  319. clock-names = "apb_pclk";
  320. };
  321. gpio6: gpio@e8a11000 {
  322. compatible = "arm,pl061", "arm,primecell";
  323. reg = <0x0 0xe8a11000 0x0 0x1000>;
  324. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  325. gpio-controller;
  326. #gpio-cells = <2>;
  327. gpio-ranges = <&pmx0 1 34 7>;
  328. interrupt-controller;
  329. #interrupt-cells = <2>;
  330. clocks = <&crg_ctrl HI3670_PCLK_GPIO6>;
  331. clock-names = "apb_pclk";
  332. };
  333. gpio7: gpio@e8a12000 {
  334. compatible = "arm,pl061", "arm,primecell";
  335. reg = <0x0 0xe8a12000 0x0 0x1000>;
  336. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  337. gpio-controller;
  338. #gpio-cells = <2>;
  339. gpio-ranges = <&pmx0 0 41 8>;
  340. interrupt-controller;
  341. #interrupt-cells = <2>;
  342. clocks = <&crg_ctrl HI3670_PCLK_GPIO7>;
  343. clock-names = "apb_pclk";
  344. };
  345. gpio8: gpio@e8a13000 {
  346. compatible = "arm,pl061", "arm,primecell";
  347. reg = <0x0 0xe8a13000 0x0 0x1000>;
  348. interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
  349. gpio-controller;
  350. #gpio-cells = <2>;
  351. gpio-ranges = <&pmx0 0 49 8>;
  352. interrupt-controller;
  353. #interrupt-cells = <2>;
  354. clocks = <&crg_ctrl HI3670_PCLK_GPIO8>;
  355. clock-names = "apb_pclk";
  356. };
  357. gpio9: gpio@e8a14000 {
  358. compatible = "arm,pl061", "arm,primecell";
  359. reg = <0x0 0xe8a14000 0x0 0x1000>;
  360. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  361. gpio-controller;
  362. #gpio-cells = <2>;
  363. gpio-ranges = <&pmx0 0 57 8>;
  364. interrupt-controller;
  365. #interrupt-cells = <2>;
  366. clocks = <&crg_ctrl HI3670_PCLK_GPIO9>;
  367. clock-names = "apb_pclk";
  368. };
  369. gpio10: gpio@e8a15000 {
  370. compatible = "arm,pl061", "arm,primecell";
  371. reg = <0x0 0xe8a15000 0x0 0x1000>;
  372. interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
  373. gpio-controller;
  374. #gpio-cells = <2>;
  375. gpio-ranges = <&pmx0 0 65 8>;
  376. interrupt-controller;
  377. #interrupt-cells = <2>;
  378. clocks = <&crg_ctrl HI3670_PCLK_GPIO10>;
  379. clock-names = "apb_pclk";
  380. };
  381. gpio11: gpio@e8a16000 {
  382. compatible = "arm,pl061", "arm,primecell";
  383. reg = <0x0 0xe8a16000 0x0 0x1000>;
  384. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  385. gpio-controller;
  386. #gpio-cells = <2>;
  387. gpio-ranges = <&pmx0 0 73 8>;
  388. interrupt-controller;
  389. #interrupt-cells = <2>;
  390. clocks = <&crg_ctrl HI3670_PCLK_GPIO11>;
  391. clock-names = "apb_pclk";
  392. };
  393. gpio12: gpio@e8a17000 {
  394. compatible = "arm,pl061", "arm,primecell";
  395. reg = <0x0 0xe8a17000 0x0 0x1000>;
  396. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  397. gpio-controller;
  398. #gpio-cells = <2>;
  399. gpio-ranges = <&pmx0 0 81 1>;
  400. interrupt-controller;
  401. #interrupt-cells = <2>;
  402. clocks = <&crg_ctrl HI3670_PCLK_GPIO12>;
  403. clock-names = "apb_pclk";
  404. };
  405. gpio13: gpio@e8a18000 {
  406. compatible = "arm,pl061", "arm,primecell";
  407. reg = <0x0 0xe8a18000 0x0 0x1000>;
  408. interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
  409. gpio-controller;
  410. #gpio-cells = <2>;
  411. interrupt-controller;
  412. #interrupt-cells = <2>;
  413. clocks = <&crg_ctrl HI3670_PCLK_GPIO13>;
  414. clock-names = "apb_pclk";
  415. };
  416. gpio14: gpio@e8a19000 {
  417. compatible = "arm,pl061", "arm,primecell";
  418. reg = <0x0 0xe8a19000 0x0 0x1000>;
  419. interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  420. gpio-controller;
  421. #gpio-cells = <2>;
  422. interrupt-controller;
  423. #interrupt-cells = <2>;
  424. clocks = <&crg_ctrl HI3670_PCLK_GPIO14>;
  425. clock-names = "apb_pclk";
  426. };
  427. gpio15: gpio@e8a1a000 {
  428. compatible = "arm,pl061", "arm,primecell";
  429. reg = <0x0 0xe8a1a000 0x0 0x1000>;
  430. interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
  431. gpio-controller;
  432. #gpio-cells = <2>;
  433. interrupt-controller;
  434. #interrupt-cells = <2>;
  435. clocks = <&crg_ctrl HI3670_PCLK_GPIO15>;
  436. clock-names = "apb_pclk";
  437. };
  438. gpio16: gpio@e8a1b000 {
  439. compatible = "arm,pl061", "arm,primecell";
  440. reg = <0x0 0xe8a1b000 0x0 0x1000>;
  441. interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
  442. gpio-controller;
  443. #gpio-cells = <2>;
  444. gpio-ranges = <&pmx5 0 0 8>;
  445. interrupt-controller;
  446. #interrupt-cells = <2>;
  447. clocks = <&crg_ctrl HI3670_PCLK_GPIO16>;
  448. clock-names = "apb_pclk";
  449. };
  450. gpio17: gpio@e8a1c000 {
  451. compatible = "arm,pl061", "arm,primecell";
  452. reg = <0x0 0xe8a1c000 0x0 0x1000>;
  453. interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  454. gpio-controller;
  455. #gpio-cells = <2>;
  456. gpio-ranges = <&pmx5 0 8 2>;
  457. interrupt-controller;
  458. #interrupt-cells = <2>;
  459. clocks = <&crg_ctrl HI3670_PCLK_GPIO17>;
  460. clock-names = "apb_pclk";
  461. };
  462. gpio18: gpio@fff28000 {
  463. compatible = "arm,pl061", "arm,primecell";
  464. reg = <0x0 0xfff28000 0x0 0x1000>;
  465. interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
  466. gpio-controller;
  467. #gpio-cells = <2>;
  468. gpio-ranges = <&pmx1 4 42 4>;
  469. interrupt-controller;
  470. #interrupt-cells = <2>;
  471. clocks = <&sctrl HI3670_PCLK_GPIO18>;
  472. clock-names = "apb_pclk";
  473. };
  474. gpio19: gpio@fff29000 {
  475. compatible = "arm,pl061", "arm,primecell";
  476. reg = <0x0 0xfff29000 0x0 0x1000>;
  477. interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
  478. gpio-controller;
  479. #gpio-cells = <2>;
  480. gpio-ranges = <&pmx1 0 61 2>;
  481. interrupt-controller;
  482. #interrupt-cells = <2>;
  483. clocks = <&sctrl HI3670_PCLK_GPIO19>;
  484. clock-names = "apb_pclk";
  485. };
  486. gpio20: gpio@e8a1f000 {
  487. compatible = "arm,pl061", "arm,primecell";
  488. reg = <0x0 0xe8a1f000 0x0 0x1000>;
  489. interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
  490. gpio-controller;
  491. #gpio-cells = <2>;
  492. gpio-ranges = <&pmx7 0 0 8>;
  493. interrupt-controller;
  494. #interrupt-cells = <2>;
  495. clocks = <&crg_ctrl HI3670_PCLK_GPIO20>;
  496. clock-names = "apb_pclk";
  497. };
  498. gpio21: gpio@e8a20000 {
  499. compatible = "arm,pl061", "arm,primecell";
  500. reg = <0x0 0xe8a20000 0x0 0x1000>;
  501. interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
  502. gpio-controller;
  503. #gpio-cells = <2>;
  504. gpio-ranges = <&pmx7 0 8 4>;
  505. interrupt-controller;
  506. #interrupt-cells = <2>;
  507. clocks = <&crg_ctrl HI3670_PCLK_GPIO21>;
  508. clock-names = "apb_pclk";
  509. };
  510. gpio22: gpio@fff0b000 {
  511. compatible = "arm,pl061", "arm,primecell";
  512. reg = <0x0 0xfff0b000 0x0 0x1000>;
  513. interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
  514. gpio-controller;
  515. #gpio-cells = <2>;
  516. /* GPIO176 */
  517. gpio-ranges = <&pmx1 2 0 6>;
  518. interrupt-controller;
  519. #interrupt-cells = <2>;
  520. clocks = <&sctrl HI3670_PCLK_AO_GPIO0>;
  521. clock-names = "apb_pclk";
  522. };
  523. gpio23: gpio@fff0c000 {
  524. compatible = "arm,pl061", "arm,primecell";
  525. reg = <0x0 0xfff0c000 0x0 0x1000>;
  526. interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
  527. gpio-controller;
  528. #gpio-cells = <2>;
  529. /* GPIO184 */
  530. gpio-ranges = <&pmx1 0 6 8>;
  531. interrupt-controller;
  532. #interrupt-cells = <2>;
  533. clocks = <&sctrl HI3670_PCLK_AO_GPIO1>;
  534. clock-names = "apb_pclk";
  535. };
  536. gpio24: gpio@fff0d000 {
  537. compatible = "arm,pl061", "arm,primecell";
  538. reg = <0x0 0xfff0d000 0x0 0x1000>;
  539. interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
  540. gpio-controller;
  541. #gpio-cells = <2>;
  542. /* GPIO192 */
  543. gpio-ranges = <&pmx1 0 14 8>;
  544. interrupt-controller;
  545. #interrupt-cells = <2>;
  546. clocks = <&sctrl HI3670_PCLK_AO_GPIO2>;
  547. clock-names = "apb_pclk";
  548. };
  549. gpio25: gpio@fff0e000 {
  550. compatible = "arm,pl061", "arm,primecell";
  551. reg = <0x0 0xfff0e000 0x0 0x1000>;
  552. interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
  553. gpio-controller;
  554. #gpio-cells = <2>;
  555. /* GPIO200 */
  556. gpio-ranges = <&pmx1 0 22 8>;
  557. interrupt-controller;
  558. #interrupt-cells = <2>;
  559. clocks = <&sctrl HI3670_PCLK_AO_GPIO3>;
  560. clock-names = "apb_pclk";
  561. };
  562. gpio26: gpio@fff0f000 {
  563. compatible = "arm,pl061", "arm,primecell";
  564. reg = <0x0 0xfff0f000 0x0 0x1000>;
  565. interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
  566. gpio-controller;
  567. #gpio-cells = <2>;
  568. /* GPIO208 */
  569. gpio-ranges = <&pmx1 0 30 1>;
  570. interrupt-controller;
  571. #interrupt-cells = <2>;
  572. clocks = <&sctrl HI3670_PCLK_AO_GPIO4>;
  573. clock-names = "apb_pclk";
  574. };
  575. gpio27: gpio@fff10000 {
  576. compatible = "arm,pl061", "arm,primecell";
  577. reg = <0x0 0xfff10000 0x0 0x1000>;
  578. interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
  579. gpio-controller;
  580. #gpio-cells = <2>;
  581. /* GPIO216 */
  582. gpio-ranges = <&pmx1 4 31 4>;
  583. interrupt-controller;
  584. #interrupt-cells = <2>;
  585. clocks = <&sctrl HI3670_PCLK_AO_GPIO5>;
  586. clock-names = "apb_pclk";
  587. };
  588. gpio28: gpio@fff1d000 {
  589. compatible = "arm,pl061", "arm,primecell";
  590. reg = <0x0 0xfff1d000 0x0 0x1000>;
  591. interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
  592. gpio-controller;
  593. #gpio-cells = <2>;
  594. gpio-ranges = <&pmx1 1 35 7>;
  595. interrupt-controller;
  596. #interrupt-cells = <2>;
  597. clocks = <&sctrl HI3670_PCLK_AO_GPIO6>;
  598. clock-names = "apb_pclk";
  599. };
  600. /* UFS */
  601. ufs: ufs@ff3c0000 {
  602. compatible = "hisilicon,hi3670-ufs", "jedec,ufs-2.1";
  603. /* 0: HCI standard */
  604. /* 1: UFS SYS CTRL */
  605. reg = <0x0 0xff3c0000 0x0 0x1000>,
  606. <0x0 0xff3e0000 0x0 0x1000>;
  607. interrupt-parent = <&gic>;
  608. interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
  609. clocks = <&crg_ctrl HI3670_CLK_GATE_UFSIO_REF>,
  610. <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
  611. clock-names = "ref_clk", "phy_clk";
  612. freq-table-hz = <0 0>,
  613. <0 0>;
  614. /* offset: 0x84; bit: 12 */
  615. resets = <&crg_rst 0x84 12>;
  616. reset-names = "rst";
  617. };
  618. /* SD */
  619. dwmmc1: dwmmc1@ff37f000 {
  620. compatible = "hisilicon,hi3670-dw-mshc",
  621. "hisilicon,hi3660-dw-mshc";
  622. reg = <0x0 0xff37f000 0x0 0x1000>;
  623. #address-cells = <1>;
  624. #size-cells = <0>;
  625. interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
  626. clocks = <&crg_ctrl HI3670_CLK_GATE_SD>,
  627. <&crg_ctrl HI3670_HCLK_GATE_SD>;
  628. clock-names = "ciu", "biu";
  629. clock-frequency = <3200000>;
  630. resets = <&crg_rst 0x94 18>;
  631. reset-names = "reset";
  632. hisilicon,peripheral-syscon = <&sctrl>;
  633. card-detect-delay = <200>;
  634. status = "disabled";
  635. };
  636. /* SDIO */
  637. dwmmc2: dwmmc2@fc183000 {
  638. compatible = "hisilicon,hi3670-dw-mshc",
  639. "hisilicon,hi3660-dw-mshc";
  640. reg = <0x0 0xfc183000 0x0 0x1000>;
  641. #address-cells = <1>;
  642. #size-cells = <0>;
  643. interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
  644. clocks = <&crg_ctrl HI3670_CLK_GATE_SDIO>,
  645. <&crg_ctrl HI3670_HCLK_GATE_SDIO>;
  646. clock-names = "ciu", "biu";
  647. clock-frequency = <3200000>;
  648. resets = <&crg_rst 0x94 20>;
  649. reset-names = "reset";
  650. card-detect-delay = <200>;
  651. status = "disabled";
  652. };
  653. /* I2C */
  654. i2c0: i2c@ffd71000 {
  655. compatible = "snps,designware-i2c";
  656. reg = <0x0 0xffd71000 0x0 0x1000>;
  657. interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
  658. #address-cells = <1>;
  659. #size-cells = <0>;
  660. clock-frequency = <400000>;
  661. clocks = <&iomcu HI3670_CLK_GATE_I2C0>;
  662. resets = <&iomcu_rst 0x20 3>;
  663. pinctrl-names = "default";
  664. pinctrl-0 = <&i2c0_pmx_func &i2c0_cfg_func>;
  665. status = "disabled";
  666. };
  667. i2c1: i2c@ffd72000 {
  668. compatible = "snps,designware-i2c";
  669. reg = <0x0 0xffd72000 0x0 0x1000>;
  670. interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
  671. #address-cells = <1>;
  672. #size-cells = <0>;
  673. clock-frequency = <400000>;
  674. clocks = <&iomcu HI3670_CLK_GATE_I2C1>;
  675. resets = <&iomcu_rst 0x20 4>;
  676. pinctrl-names = "default";
  677. pinctrl-0 = <&i2c1_pmx_func &i2c1_cfg_func>;
  678. status = "disabled";
  679. };
  680. i2c2: i2c@ffd73000 {
  681. compatible = "snps,designware-i2c";
  682. reg = <0x0 0xffd73000 0x0 0x1000>;
  683. interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
  684. #address-cells = <1>;
  685. #size-cells = <0>;
  686. clock-frequency = <400000>;
  687. clocks = <&iomcu HI3670_CLK_GATE_I2C2>;
  688. resets = <&iomcu_rst 0x20 5>;
  689. pinctrl-names = "default";
  690. pinctrl-0 = <&i2c2_pmx_func &i2c2_cfg_func>;
  691. status = "disabled";
  692. };
  693. i2c3: i2c@fdf0c000 {
  694. compatible = "snps,designware-i2c";
  695. reg = <0x0 0xfdf0c000 0x0 0x1000>;
  696. interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
  697. #address-cells = <1>;
  698. #size-cells = <0>;
  699. clock-frequency = <400000>;
  700. clocks = <&crg_ctrl HI3670_CLK_GATE_I2C3>;
  701. resets = <&crg_rst 0x78 7>;
  702. pinctrl-names = "default";
  703. pinctrl-0 = <&i2c3_pmx_func &i2c3_cfg_func>;
  704. status = "disabled";
  705. };
  706. i2c4: i2c@fdf0d000 {
  707. compatible = "snps,designware-i2c";
  708. reg = <0x0 0xfdf0d000 0x0 0x1000>;
  709. interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
  710. #address-cells = <1>;
  711. #size-cells = <0>;
  712. clock-frequency = <400000>;
  713. clocks = <&crg_ctrl HI3670_CLK_GATE_I2C4>;
  714. resets = <&crg_rst 0x78 27>;
  715. pinctrl-names = "default";
  716. pinctrl-0 = <&i2c4_pmx_func &i2c4_cfg_func>;
  717. status = "disabled";
  718. };
  719. };
  720. };