meson8.dtsi 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786
  1. // SPDX-License-Identifier: GPL-2.0 OR MIT
  2. /*
  3. * Copyright 2014 Carlo Caione <[email protected]>
  4. */
  5. #include <dt-bindings/clock/meson8-ddr-clkc.h>
  6. #include <dt-bindings/clock/meson8b-clkc.h>
  7. #include <dt-bindings/gpio/meson8-gpio.h>
  8. #include <dt-bindings/power/meson8-power.h>
  9. #include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h>
  10. #include <dt-bindings/reset/amlogic,meson8b-reset.h>
  11. #include <dt-bindings/thermal/thermal.h>
  12. #include "meson.dtsi"
  13. / {
  14. model = "Amlogic Meson8 SoC";
  15. compatible = "amlogic,meson8";
  16. cpus {
  17. #address-cells = <1>;
  18. #size-cells = <0>;
  19. cpu0: cpu@200 {
  20. device_type = "cpu";
  21. compatible = "arm,cortex-a9";
  22. next-level-cache = <&L2>;
  23. reg = <0x200>;
  24. enable-method = "amlogic,meson8-smp";
  25. resets = <&clkc CLKC_RESET_CPU0_SOFT_RESET>;
  26. operating-points-v2 = <&cpu_opp_table>;
  27. clocks = <&clkc CLKID_CPUCLK>;
  28. #cooling-cells = <2>; /* min followed by max */
  29. };
  30. cpu1: cpu@201 {
  31. device_type = "cpu";
  32. compatible = "arm,cortex-a9";
  33. next-level-cache = <&L2>;
  34. reg = <0x201>;
  35. enable-method = "amlogic,meson8-smp";
  36. resets = <&clkc CLKC_RESET_CPU1_SOFT_RESET>;
  37. operating-points-v2 = <&cpu_opp_table>;
  38. clocks = <&clkc CLKID_CPUCLK>;
  39. #cooling-cells = <2>; /* min followed by max */
  40. };
  41. cpu2: cpu@202 {
  42. device_type = "cpu";
  43. compatible = "arm,cortex-a9";
  44. next-level-cache = <&L2>;
  45. reg = <0x202>;
  46. enable-method = "amlogic,meson8-smp";
  47. resets = <&clkc CLKC_RESET_CPU2_SOFT_RESET>;
  48. operating-points-v2 = <&cpu_opp_table>;
  49. clocks = <&clkc CLKID_CPUCLK>;
  50. #cooling-cells = <2>; /* min followed by max */
  51. };
  52. cpu3: cpu@203 {
  53. device_type = "cpu";
  54. compatible = "arm,cortex-a9";
  55. next-level-cache = <&L2>;
  56. reg = <0x203>;
  57. enable-method = "amlogic,meson8-smp";
  58. resets = <&clkc CLKC_RESET_CPU3_SOFT_RESET>;
  59. operating-points-v2 = <&cpu_opp_table>;
  60. clocks = <&clkc CLKID_CPUCLK>;
  61. #cooling-cells = <2>; /* min followed by max */
  62. };
  63. };
  64. cpu_opp_table: opp-table {
  65. compatible = "operating-points-v2";
  66. opp-shared;
  67. opp-96000000 {
  68. opp-hz = /bits/ 64 <96000000>;
  69. opp-microvolt = <825000>;
  70. };
  71. opp-192000000 {
  72. opp-hz = /bits/ 64 <192000000>;
  73. opp-microvolt = <825000>;
  74. };
  75. opp-312000000 {
  76. opp-hz = /bits/ 64 <312000000>;
  77. opp-microvolt = <825000>;
  78. };
  79. opp-408000000 {
  80. opp-hz = /bits/ 64 <408000000>;
  81. opp-microvolt = <825000>;
  82. };
  83. opp-504000000 {
  84. opp-hz = /bits/ 64 <504000000>;
  85. opp-microvolt = <825000>;
  86. };
  87. opp-600000000 {
  88. opp-hz = /bits/ 64 <600000000>;
  89. opp-microvolt = <850000>;
  90. };
  91. opp-720000000 {
  92. opp-hz = /bits/ 64 <720000000>;
  93. opp-microvolt = <850000>;
  94. };
  95. opp-816000000 {
  96. opp-hz = /bits/ 64 <816000000>;
  97. opp-microvolt = <875000>;
  98. };
  99. opp-1008000000 {
  100. opp-hz = /bits/ 64 <1008000000>;
  101. opp-microvolt = <925000>;
  102. };
  103. opp-1200000000 {
  104. opp-hz = /bits/ 64 <1200000000>;
  105. opp-microvolt = <975000>;
  106. };
  107. opp-1416000000 {
  108. opp-hz = /bits/ 64 <1416000000>;
  109. opp-microvolt = <1025000>;
  110. };
  111. opp-1608000000 {
  112. opp-hz = /bits/ 64 <1608000000>;
  113. opp-microvolt = <1100000>;
  114. };
  115. opp-1800000000 {
  116. status = "disabled";
  117. opp-hz = /bits/ 64 <1800000000>;
  118. opp-microvolt = <1125000>;
  119. };
  120. opp-1992000000 {
  121. status = "disabled";
  122. opp-hz = /bits/ 64 <1992000000>;
  123. opp-microvolt = <1150000>;
  124. };
  125. };
  126. gpu_opp_table: gpu-opp-table {
  127. compatible = "operating-points-v2";
  128. opp-182142857 {
  129. opp-hz = /bits/ 64 <182142857>;
  130. opp-microvolt = <1150000>;
  131. };
  132. opp-318750000 {
  133. opp-hz = /bits/ 64 <318750000>;
  134. opp-microvolt = <1150000>;
  135. };
  136. opp-425000000 {
  137. opp-hz = /bits/ 64 <425000000>;
  138. opp-microvolt = <1150000>;
  139. };
  140. opp-510000000 {
  141. opp-hz = /bits/ 64 <510000000>;
  142. opp-microvolt = <1150000>;
  143. };
  144. opp-637500000 {
  145. opp-hz = /bits/ 64 <637500000>;
  146. opp-microvolt = <1150000>;
  147. turbo-mode;
  148. };
  149. };
  150. pmu {
  151. compatible = "arm,cortex-a9-pmu";
  152. interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
  153. <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
  154. <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
  155. <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
  156. interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
  157. };
  158. reserved-memory {
  159. #address-cells = <1>;
  160. #size-cells = <1>;
  161. ranges;
  162. /* 2 MiB reserved for Hardware ROM Firmware? */
  163. hwrom@0 {
  164. reg = <0x0 0x200000>;
  165. no-map;
  166. };
  167. /*
  168. * 1 MiB reserved for the "ARM Power Firmware": this is ARM
  169. * code which is responsible for system suspend. It loads a
  170. * piece of ARC code ("arc_power" in the vendor u-boot tree)
  171. * into SRAM, executes that and shuts down the (last) ARM core.
  172. * The arc_power firmware then checks various wakeup sources
  173. * (IR remote receiver, HDMI CEC, WIFI and Bluetooth wakeup or
  174. * simply the power key) and re-starts the ARM core once it
  175. * detects a wakeup request.
  176. */
  177. power-firmware@4f00000 {
  178. reg = <0x4f00000 0x100000>;
  179. no-map;
  180. };
  181. };
  182. thermal-zones {
  183. soc {
  184. polling-delay-passive = <250>; /* milliseconds */
  185. polling-delay = <1000>; /* milliseconds */
  186. thermal-sensors = <&thermal_sensor>;
  187. cooling-maps {
  188. map0 {
  189. trip = <&soc_passive>;
  190. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  191. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  192. <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  193. <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  194. <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  195. };
  196. map1 {
  197. trip = <&soc_hot>;
  198. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  199. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  200. <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  201. <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  202. <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  203. };
  204. };
  205. trips {
  206. soc_passive: soc-passive {
  207. temperature = <80000>; /* millicelsius */
  208. hysteresis = <2000>; /* millicelsius */
  209. type = "passive";
  210. };
  211. soc_hot: soc-hot {
  212. temperature = <90000>; /* millicelsius */
  213. hysteresis = <2000>; /* millicelsius */
  214. type = "hot";
  215. };
  216. soc_critical: soc-critical {
  217. temperature = <110000>; /* millicelsius */
  218. hysteresis = <2000>; /* millicelsius */
  219. type = "critical";
  220. };
  221. };
  222. };
  223. };
  224. mmcbus: bus@c8000000 {
  225. compatible = "simple-bus";
  226. reg = <0xc8000000 0x8000>;
  227. #address-cells = <1>;
  228. #size-cells = <1>;
  229. ranges = <0x0 0xc8000000 0x8000>;
  230. ddr_clkc: clock-controller@400 {
  231. compatible = "amlogic,meson8-ddr-clkc";
  232. reg = <0x400 0x20>;
  233. clocks = <&xtal>;
  234. clock-names = "xtal";
  235. #clock-cells = <1>;
  236. };
  237. dmcbus: bus@6000 {
  238. compatible = "simple-bus";
  239. reg = <0x6000 0x400>;
  240. #address-cells = <1>;
  241. #size-cells = <1>;
  242. ranges = <0x0 0x6000 0x400>;
  243. canvas: video-lut@20 {
  244. compatible = "amlogic,meson8-canvas",
  245. "amlogic,canvas";
  246. reg = <0x20 0x14>;
  247. };
  248. };
  249. };
  250. apb: bus@d0000000 {
  251. compatible = "simple-bus";
  252. reg = <0xd0000000 0x200000>;
  253. #address-cells = <1>;
  254. #size-cells = <1>;
  255. ranges = <0x0 0xd0000000 0x200000>;
  256. mali: gpu@c0000 {
  257. compatible = "amlogic,meson8-mali", "arm,mali-450";
  258. reg = <0xc0000 0x40000>;
  259. interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
  260. <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
  261. <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
  262. <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
  263. <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
  264. <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
  265. <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
  266. <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
  267. <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
  268. <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
  269. <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>,
  270. <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>,
  271. <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
  272. <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>,
  273. <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>,
  274. <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
  275. interrupt-names = "gp", "gpmmu", "pp", "pmu",
  276. "pp0", "ppmmu0", "pp1", "ppmmu1",
  277. "pp2", "ppmmu2", "pp4", "ppmmu4",
  278. "pp5", "ppmmu5", "pp6", "ppmmu6";
  279. resets = <&reset RESET_MALI>;
  280. clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
  281. clock-names = "bus", "core";
  282. assigned-clocks = <&clkc CLKID_MALI>;
  283. assigned-clock-rates = <318750000>;
  284. operating-points-v2 = <&gpu_opp_table>;
  285. #cooling-cells = <2>; /* min followed by max */
  286. };
  287. };
  288. }; /* end of / */
  289. &aiu {
  290. compatible = "amlogic,aiu-meson8", "amlogic,aiu";
  291. clocks = <&clkc CLKID_AIU_GLUE>,
  292. <&clkc CLKID_I2S_OUT>,
  293. <&clkc CLKID_AOCLK_GATE>,
  294. <&clkc CLKID_CTS_AMCLK>,
  295. <&clkc CLKID_MIXER_IFACE>,
  296. <&clkc CLKID_IEC958>,
  297. <&clkc CLKID_IEC958_GATE>,
  298. <&clkc CLKID_CTS_MCLK_I958>,
  299. <&clkc CLKID_CTS_I958>;
  300. clock-names = "pclk",
  301. "i2s_pclk",
  302. "i2s_aoclk",
  303. "i2s_mclk",
  304. "i2s_mixer",
  305. "spdif_pclk",
  306. "spdif_aoclk",
  307. "spdif_mclk",
  308. "spdif_mclk_sel";
  309. resets = <&reset RESET_AIU>;
  310. };
  311. &aobus {
  312. pmu: pmu@e0 {
  313. compatible = "amlogic,meson8-pmu", "syscon";
  314. reg = <0xe0 0x18>;
  315. };
  316. pinctrl_aobus: pinctrl@84 {
  317. compatible = "amlogic,meson8-aobus-pinctrl";
  318. reg = <0x84 0xc>;
  319. #address-cells = <1>;
  320. #size-cells = <1>;
  321. ranges;
  322. gpio_ao: ao-bank@14 {
  323. reg = <0x14 0x4>,
  324. <0x2c 0x4>,
  325. <0x24 0x8>;
  326. reg-names = "mux", "pull", "gpio";
  327. gpio-controller;
  328. #gpio-cells = <2>;
  329. gpio-ranges = <&pinctrl_aobus 0 0 16>;
  330. };
  331. i2s_am_clk_pins: i2s-am-clk-out {
  332. mux {
  333. groups = "i2s_am_clk_out_ao";
  334. function = "i2s_ao";
  335. bias-disable;
  336. };
  337. };
  338. i2s_out_ao_clk_pins: i2s-ao-clk-out {
  339. mux {
  340. groups = "i2s_ao_clk_out_ao";
  341. function = "i2s_ao";
  342. bias-disable;
  343. };
  344. };
  345. i2s_out_lr_clk_pins: i2s-lr-clk-out {
  346. mux {
  347. groups = "i2s_lr_clk_out_ao";
  348. function = "i2s_ao";
  349. bias-disable;
  350. };
  351. };
  352. i2s_out_ch01_ao_pins: i2s-out-ch01 {
  353. mux {
  354. groups = "i2s_out_ch01_ao";
  355. function = "i2s_ao";
  356. bias-disable;
  357. };
  358. };
  359. uart_ao_a_pins: uart_ao_a {
  360. mux {
  361. groups = "uart_tx_ao_a", "uart_rx_ao_a";
  362. function = "uart_ao";
  363. bias-disable;
  364. };
  365. };
  366. i2c_ao_pins: i2c_mst_ao {
  367. mux {
  368. groups = "i2c_mst_sck_ao", "i2c_mst_sda_ao";
  369. function = "i2c_mst_ao";
  370. bias-disable;
  371. };
  372. };
  373. ir_recv_pins: remote {
  374. mux {
  375. groups = "remote_input";
  376. function = "remote";
  377. bias-disable;
  378. };
  379. };
  380. pwm_f_ao_pins: pwm-f-ao {
  381. mux {
  382. groups = "pwm_f_ao";
  383. function = "pwm_f_ao";
  384. bias-disable;
  385. };
  386. };
  387. };
  388. };
  389. &ao_arc_rproc {
  390. compatible = "amlogic,meson8-ao-arc", "amlogic,meson-mx-ao-arc";
  391. amlogic,secbus2 = <&secbus2>;
  392. sram = <&ao_arc_sram>;
  393. resets = <&reset RESET_MEDIA_CPU>;
  394. clocks = <&clkc CLKID_AO_MEDIA_CPU>;
  395. };
  396. &cbus {
  397. reset: reset-controller@4404 {
  398. compatible = "amlogic,meson8b-reset";
  399. reg = <0x4404 0x9c>;
  400. #reset-cells = <1>;
  401. };
  402. analog_top: analog-top@81a8 {
  403. compatible = "amlogic,meson8-analog-top", "syscon";
  404. reg = <0x81a8 0x14>;
  405. };
  406. pwm_ef: pwm@86c0 {
  407. compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm";
  408. reg = <0x86c0 0x10>;
  409. #pwm-cells = <3>;
  410. status = "disabled";
  411. };
  412. clock-measure@8758 {
  413. compatible = "amlogic,meson8-clk-measure";
  414. reg = <0x8758 0x1c>;
  415. };
  416. pinctrl_cbus: pinctrl@9880 {
  417. compatible = "amlogic,meson8-cbus-pinctrl";
  418. reg = <0x9880 0x10>;
  419. #address-cells = <1>;
  420. #size-cells = <1>;
  421. ranges;
  422. gpio: banks@80b0 {
  423. reg = <0x80b0 0x28>,
  424. <0x80e8 0x18>,
  425. <0x8120 0x18>,
  426. <0x8030 0x30>;
  427. reg-names = "mux", "pull", "pull-enable", "gpio";
  428. gpio-controller;
  429. #gpio-cells = <2>;
  430. gpio-ranges = <&pinctrl_cbus 0 0 120>;
  431. };
  432. sd_a_pins: sd-a {
  433. mux {
  434. groups = "sd_d0_a", "sd_d1_a", "sd_d2_a",
  435. "sd_d3_a", "sd_clk_a", "sd_cmd_a";
  436. function = "sd_a";
  437. bias-disable;
  438. };
  439. };
  440. sd_b_pins: sd-b {
  441. mux {
  442. groups = "sd_d0_b", "sd_d1_b", "sd_d2_b",
  443. "sd_d3_b", "sd_clk_b", "sd_cmd_b";
  444. function = "sd_b";
  445. bias-disable;
  446. };
  447. };
  448. sd_c_pins: sd-c {
  449. mux {
  450. groups = "sd_d0_c", "sd_d1_c", "sd_d2_c",
  451. "sd_d3_c", "sd_clk_c", "sd_cmd_c";
  452. function = "sd_c";
  453. bias-disable;
  454. };
  455. };
  456. sdxc_b_pins: sdxc-b {
  457. mux {
  458. groups = "sdxc_d0_b", "sdxc_d13_b",
  459. "sdxc_clk_b", "sdxc_cmd_b";
  460. function = "sdxc_b";
  461. bias-pull-up;
  462. };
  463. };
  464. spdif_out_pins: spdif-out {
  465. mux {
  466. groups = "spdif_out";
  467. function = "spdif";
  468. bias-disable;
  469. };
  470. };
  471. spi_nor_pins: nor {
  472. mux {
  473. groups = "nor_d", "nor_q", "nor_c", "nor_cs";
  474. function = "nor";
  475. bias-disable;
  476. };
  477. };
  478. eth_pins: ethernet {
  479. mux {
  480. groups = "eth_tx_clk_50m", "eth_tx_en",
  481. "eth_txd1", "eth_txd0",
  482. "eth_rx_clk_in", "eth_rx_dv",
  483. "eth_rxd1", "eth_rxd0", "eth_mdio",
  484. "eth_mdc";
  485. function = "ethernet";
  486. bias-disable;
  487. };
  488. };
  489. pwm_e_pins: pwm-e {
  490. mux {
  491. groups = "pwm_e";
  492. function = "pwm_e";
  493. bias-disable;
  494. };
  495. };
  496. uart_a1_pins: uart-a1 {
  497. mux {
  498. groups = "uart_tx_a1",
  499. "uart_rx_a1";
  500. function = "uart_a";
  501. bias-disable;
  502. };
  503. };
  504. uart_a1_cts_rts_pins: uart-a1-cts-rts {
  505. mux {
  506. groups = "uart_cts_a1",
  507. "uart_rts_a1";
  508. function = "uart_a";
  509. bias-disable;
  510. };
  511. };
  512. };
  513. };
  514. &ahb_sram {
  515. ao_arc_sram: ao-arc-sram@0 {
  516. compatible = "amlogic,meson8-ao-arc-sram";
  517. reg = <0x0 0x8000>;
  518. pool;
  519. };
  520. smp-sram@1ff80 {
  521. compatible = "amlogic,meson8-smp-sram";
  522. reg = <0x1ff80 0x8>;
  523. };
  524. };
  525. &efuse {
  526. compatible = "amlogic,meson8-efuse";
  527. clocks = <&clkc CLKID_EFUSE>;
  528. clock-names = "core";
  529. temperature_calib: calib@1f4 {
  530. /* only the upper two bytes are relevant */
  531. reg = <0x1f4 0x4>;
  532. };
  533. };
  534. &ethmac {
  535. clocks = <&clkc CLKID_ETH>;
  536. clock-names = "stmmaceth";
  537. power-domains = <&pwrc PWRC_MESON8_ETHERNET_MEM_ID>;
  538. };
  539. &gpio_intc {
  540. compatible = "amlogic,meson8-gpio-intc", "amlogic,meson-gpio-intc";
  541. status = "okay";
  542. };
  543. &hhi {
  544. clkc: clock-controller {
  545. compatible = "amlogic,meson8-clkc";
  546. clocks = <&xtal>, <&ddr_clkc DDR_CLKID_DDR_PLL>;
  547. clock-names = "xtal", "ddr_pll";
  548. #clock-cells = <1>;
  549. #reset-cells = <1>;
  550. };
  551. pwrc: power-controller {
  552. compatible = "amlogic,meson8-pwrc";
  553. #power-domain-cells = <1>;
  554. amlogic,ao-sysctrl = <&pmu>;
  555. clocks = <&clkc CLKID_VPU>;
  556. clock-names = "vpu";
  557. assigned-clocks = <&clkc CLKID_VPU>;
  558. assigned-clock-rates = <364285714>;
  559. };
  560. };
  561. &hwrng {
  562. compatible = "amlogic,meson8-rng", "amlogic,meson-rng";
  563. clocks = <&clkc CLKID_RNG0>;
  564. clock-names = "core";
  565. };
  566. &i2c_AO {
  567. clocks = <&clkc CLKID_CLK81>;
  568. };
  569. &i2c_A {
  570. clocks = <&clkc CLKID_CLK81>;
  571. };
  572. &i2c_B {
  573. clocks = <&clkc CLKID_CLK81>;
  574. };
  575. &L2 {
  576. arm,data-latency = <3 3 3>;
  577. arm,tag-latency = <2 2 2>;
  578. arm,filter-ranges = <0x100000 0xc0000000>;
  579. prefetch-data = <1>;
  580. prefetch-instr = <1>;
  581. arm,shared-override;
  582. };
  583. &periph {
  584. scu@0 {
  585. compatible = "arm,cortex-a9-scu";
  586. reg = <0x0 0x100>;
  587. };
  588. timer@200 {
  589. compatible = "arm,cortex-a9-global-timer";
  590. reg = <0x200 0x20>;
  591. interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
  592. clocks = <&clkc CLKID_PERIPH>;
  593. /*
  594. * the arm_global_timer driver currently does not handle clock
  595. * rate changes. Keep it disabled for now.
  596. */
  597. status = "disabled";
  598. };
  599. timer@600 {
  600. compatible = "arm,cortex-a9-twd-timer";
  601. reg = <0x600 0x20>;
  602. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
  603. clocks = <&clkc CLKID_PERIPH>;
  604. };
  605. };
  606. &pwm_ab {
  607. compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm";
  608. };
  609. &pwm_cd {
  610. compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm";
  611. };
  612. &rtc {
  613. compatible = "amlogic,meson8-rtc";
  614. resets = <&reset RESET_RTC>;
  615. };
  616. &saradc {
  617. compatible = "amlogic,meson8-saradc", "amlogic,meson-saradc";
  618. clocks = <&xtal>, <&clkc CLKID_SAR_ADC>;
  619. clock-names = "clkin", "core";
  620. amlogic,hhi-sysctrl = <&hhi>;
  621. nvmem-cells = <&temperature_calib>;
  622. nvmem-cell-names = "temperature_calib";
  623. };
  624. &sdhc {
  625. compatible = "amlogic,meson8-sdhc", "amlogic,meson-mx-sdhc";
  626. clocks = <&xtal>,
  627. <&clkc CLKID_FCLK_DIV4>,
  628. <&clkc CLKID_FCLK_DIV3>,
  629. <&clkc CLKID_FCLK_DIV5>,
  630. <&clkc CLKID_SDHC>;
  631. clock-names = "clkin0", "clkin1", "clkin2", "clkin3", "pclk";
  632. };
  633. &secbus {
  634. secbus2: system-controller@4000 {
  635. compatible = "amlogic,meson8-secbus2", "syscon";
  636. reg = <0x4000 0x2000>;
  637. };
  638. };
  639. &sdio {
  640. compatible = "amlogic,meson8-sdio", "amlogic,meson-mx-sdio";
  641. clocks = <&clkc CLKID_SDIO>, <&clkc CLKID_CLK81>;
  642. clock-names = "core", "clkin";
  643. };
  644. &spifc {
  645. clocks = <&clkc CLKID_CLK81>;
  646. };
  647. &timer_abcde {
  648. clocks = <&xtal>, <&clkc CLKID_CLK81>;
  649. clock-names = "xtal", "pclk";
  650. };
  651. &uart_AO {
  652. compatible = "amlogic,meson8-uart", "amlogic,meson-ao-uart";
  653. clocks = <&xtal>, <&clkc CLKID_CLK81>, <&clkc CLKID_CLK81>;
  654. clock-names = "xtal", "pclk", "baud";
  655. };
  656. &uart_A {
  657. compatible = "amlogic,meson8-uart";
  658. clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
  659. clock-names = "xtal", "pclk", "baud";
  660. };
  661. &uart_B {
  662. compatible = "amlogic,meson8-uart";
  663. clocks = <&xtal>, <&clkc CLKID_UART1>, <&clkc CLKID_CLK81>;
  664. clock-names = "xtal", "pclk", "baud";
  665. };
  666. &uart_C {
  667. compatible = "amlogic,meson8-uart";
  668. clocks = <&xtal>, <&clkc CLKID_UART2>, <&clkc CLKID_CLK81>;
  669. clock-names = "xtal", "pclk", "baud";
  670. };
  671. &usb0 {
  672. compatible = "amlogic,meson8-usb", "snps,dwc2";
  673. clocks = <&clkc CLKID_USB0_DDR_BRIDGE>;
  674. clock-names = "otg";
  675. };
  676. &usb1 {
  677. compatible = "amlogic,meson8-usb", "snps,dwc2";
  678. clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
  679. clock-names = "otg";
  680. };
  681. &usb0_phy {
  682. compatible = "amlogic,meson8-usb2-phy", "amlogic,meson-mx-usb2-phy";
  683. clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB0>;
  684. clock-names = "usb_general", "usb";
  685. resets = <&reset RESET_USB_OTG>;
  686. };
  687. &usb1_phy {
  688. compatible = "amlogic,meson8-usb2-phy", "amlogic,meson-mx-usb2-phy";
  689. clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1>;
  690. clock-names = "usb_general", "usb";
  691. resets = <&reset RESET_USB_OTG>;
  692. };