meson-g12.dtsi 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Copyright (c) 2019 BayLibre, SAS
  4. * Author: Jerome Brunet <jbrunet@baylibre.com>
  5. */
  6. #include "meson-g12-common.dtsi"
  7. #include <dt-bindings/clock/axg-audio-clkc.h>
  8. #include <dt-bindings/power/meson-g12a-power.h>
  9. #include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
  10. #include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
  11. / {
  12. tdmif_a: audio-controller-0 {
  13. compatible = "amlogic,axg-tdm-iface";
  14. #sound-dai-cells = <0>;
  15. sound-name-prefix = "TDM_A";
  16. clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
  17. <&clkc_audio AUD_CLKID_MST_A_SCLK>,
  18. <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
  19. clock-names = "mclk", "sclk", "lrclk";
  20. status = "disabled";
  21. };
  22. tdmif_b: audio-controller-1 {
  23. compatible = "amlogic,axg-tdm-iface";
  24. #sound-dai-cells = <0>;
  25. sound-name-prefix = "TDM_B";
  26. clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
  27. <&clkc_audio AUD_CLKID_MST_B_SCLK>,
  28. <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
  29. clock-names = "mclk", "sclk", "lrclk";
  30. status = "disabled";
  31. };
  32. tdmif_c: audio-controller-2 {
  33. compatible = "amlogic,axg-tdm-iface";
  34. #sound-dai-cells = <0>;
  35. sound-name-prefix = "TDM_C";
  36. clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
  37. <&clkc_audio AUD_CLKID_MST_C_SCLK>,
  38. <&clkc_audio AUD_CLKID_MST_C_LRCLK>;
  39. clock-names = "mclk", "sclk", "lrclk";
  40. status = "disabled";
  41. };
  42. };
  43. &apb {
  44. pdm: audio-controller@40000 {
  45. compatible = "amlogic,g12a-pdm",
  46. "amlogic,axg-pdm";
  47. reg = <0x0 0x40000 0x0 0x34>;
  48. #sound-dai-cells = <0>;
  49. sound-name-prefix = "PDM";
  50. clocks = <&clkc_audio AUD_CLKID_PDM>,
  51. <&clkc_audio AUD_CLKID_PDM_DCLK>,
  52. <&clkc_audio AUD_CLKID_PDM_SYSCLK>;
  53. clock-names = "pclk", "dclk", "sysclk";
  54. status = "disabled";
  55. };
  56. audio: bus@42000 {
  57. compatible = "simple-bus";
  58. reg = <0x0 0x42000 0x0 0x2000>;
  59. #address-cells = <2>;
  60. #size-cells = <2>;
  61. ranges = <0x0 0x0 0x0 0x42000 0x0 0x2000>;
  62. clkc_audio: clock-controller@0 {
  63. status = "disabled";
  64. compatible = "amlogic,g12a-audio-clkc";
  65. reg = <0x0 0x0 0x0 0xb4>;
  66. #clock-cells = <1>;
  67. #reset-cells = <1>;
  68. clocks = <&clkc CLKID_AUDIO>,
  69. <&clkc CLKID_MPLL0>,
  70. <&clkc CLKID_MPLL1>,
  71. <&clkc CLKID_MPLL2>,
  72. <&clkc CLKID_MPLL3>,
  73. <&clkc CLKID_HIFI_PLL>,
  74. <&clkc CLKID_FCLK_DIV3>,
  75. <&clkc CLKID_FCLK_DIV4>,
  76. <&clkc CLKID_GP0_PLL>;
  77. clock-names = "pclk",
  78. "mst_in0",
  79. "mst_in1",
  80. "mst_in2",
  81. "mst_in3",
  82. "mst_in4",
  83. "mst_in5",
  84. "mst_in6",
  85. "mst_in7";
  86. resets = <&reset RESET_AUDIO>;
  87. };
  88. toddr_a: audio-controller@100 {
  89. compatible = "amlogic,g12a-toddr",
  90. "amlogic,axg-toddr";
  91. reg = <0x0 0x100 0x0 0x2c>;
  92. #sound-dai-cells = <0>;
  93. sound-name-prefix = "TODDR_A";
  94. interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
  95. clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
  96. resets = <&arb AXG_ARB_TODDR_A>,
  97. <&clkc_audio AUD_RESET_TODDR_A>;
  98. reset-names = "arb", "rst";
  99. amlogic,fifo-depth = <512>;
  100. status = "disabled";
  101. };
  102. toddr_b: audio-controller@140 {
  103. compatible = "amlogic,g12a-toddr",
  104. "amlogic,axg-toddr";
  105. reg = <0x0 0x140 0x0 0x2c>;
  106. #sound-dai-cells = <0>;
  107. sound-name-prefix = "TODDR_B";
  108. interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
  109. clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
  110. resets = <&arb AXG_ARB_TODDR_B>,
  111. <&clkc_audio AUD_RESET_TODDR_B>;
  112. reset-names = "arb", "rst";
  113. amlogic,fifo-depth = <256>;
  114. status = "disabled";
  115. };
  116. toddr_c: audio-controller@180 {
  117. compatible = "amlogic,g12a-toddr",
  118. "amlogic,axg-toddr";
  119. reg = <0x0 0x180 0x0 0x2c>;
  120. #sound-dai-cells = <0>;
  121. sound-name-prefix = "TODDR_C";
  122. interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
  123. clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
  124. resets = <&arb AXG_ARB_TODDR_C>,
  125. <&clkc_audio AUD_RESET_TODDR_C>;
  126. reset-names = "arb", "rst";
  127. amlogic,fifo-depth = <256>;
  128. status = "disabled";
  129. };
  130. frddr_a: audio-controller@1c0 {
  131. compatible = "amlogic,g12a-frddr",
  132. "amlogic,axg-frddr";
  133. reg = <0x0 0x1c0 0x0 0x2c>;
  134. #sound-dai-cells = <0>;
  135. sound-name-prefix = "FRDDR_A";
  136. interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
  137. clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
  138. resets = <&arb AXG_ARB_FRDDR_A>,
  139. <&clkc_audio AUD_RESET_FRDDR_A>;
  140. reset-names = "arb", "rst";
  141. amlogic,fifo-depth = <512>;
  142. status = "disabled";
  143. };
  144. frddr_b: audio-controller@200 {
  145. compatible = "amlogic,g12a-frddr",
  146. "amlogic,axg-frddr";
  147. reg = <0x0 0x200 0x0 0x2c>;
  148. #sound-dai-cells = <0>;
  149. sound-name-prefix = "FRDDR_B";
  150. interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
  151. clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
  152. resets = <&arb AXG_ARB_FRDDR_B>,
  153. <&clkc_audio AUD_RESET_FRDDR_B>;
  154. reset-names = "arb", "rst";
  155. amlogic,fifo-depth = <256>;
  156. status = "disabled";
  157. };
  158. frddr_c: audio-controller@240 {
  159. compatible = "amlogic,g12a-frddr",
  160. "amlogic,axg-frddr";
  161. reg = <0x0 0x240 0x0 0x2c>;
  162. #sound-dai-cells = <0>;
  163. sound-name-prefix = "FRDDR_C";
  164. interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
  165. clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
  166. resets = <&arb AXG_ARB_FRDDR_C>,
  167. <&clkc_audio AUD_RESET_FRDDR_C>;
  168. reset-names = "arb", "rst";
  169. amlogic,fifo-depth = <256>;
  170. status = "disabled";
  171. };
  172. arb: reset-controller@280 {
  173. status = "disabled";
  174. compatible = "amlogic,meson-axg-audio-arb";
  175. reg = <0x0 0x280 0x0 0x4>;
  176. #reset-cells = <1>;
  177. clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
  178. };
  179. tdmin_a: audio-controller@300 {
  180. compatible = "amlogic,g12a-tdmin",
  181. "amlogic,axg-tdmin";
  182. reg = <0x0 0x300 0x0 0x40>;
  183. sound-name-prefix = "TDMIN_A";
  184. resets = <&clkc_audio AUD_RESET_TDMIN_A>;
  185. clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
  186. <&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
  187. <&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
  188. <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
  189. <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
  190. clock-names = "pclk", "sclk", "sclk_sel",
  191. "lrclk", "lrclk_sel";
  192. status = "disabled";
  193. };
  194. tdmin_b: audio-controller@340 {
  195. compatible = "amlogic,g12a-tdmin",
  196. "amlogic,axg-tdmin";
  197. reg = <0x0 0x340 0x0 0x40>;
  198. sound-name-prefix = "TDMIN_B";
  199. resets = <&clkc_audio AUD_RESET_TDMIN_B>;
  200. clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
  201. <&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
  202. <&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
  203. <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
  204. <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
  205. clock-names = "pclk", "sclk", "sclk_sel",
  206. "lrclk", "lrclk_sel";
  207. status = "disabled";
  208. };
  209. tdmin_c: audio-controller@380 {
  210. compatible = "amlogic,g12a-tdmin",
  211. "amlogic,axg-tdmin";
  212. reg = <0x0 0x380 0x0 0x40>;
  213. sound-name-prefix = "TDMIN_C";
  214. resets = <&clkc_audio AUD_RESET_TDMIN_C>;
  215. clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
  216. <&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
  217. <&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
  218. <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
  219. <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
  220. clock-names = "pclk", "sclk", "sclk_sel",
  221. "lrclk", "lrclk_sel";
  222. status = "disabled";
  223. };
  224. tdmin_lb: audio-controller@3c0 {
  225. compatible = "amlogic,g12a-tdmin",
  226. "amlogic,axg-tdmin";
  227. reg = <0x0 0x3c0 0x0 0x40>;
  228. sound-name-prefix = "TDMIN_LB";
  229. resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
  230. clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
  231. <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
  232. <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
  233. <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
  234. <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
  235. clock-names = "pclk", "sclk", "sclk_sel",
  236. "lrclk", "lrclk_sel";
  237. status = "disabled";
  238. };
  239. spdifin: audio-controller@400 {
  240. compatible = "amlogic,g12a-spdifin",
  241. "amlogic,axg-spdifin";
  242. reg = <0x0 0x400 0x0 0x30>;
  243. #sound-dai-cells = <0>;
  244. sound-name-prefix = "SPDIFIN";
  245. interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
  246. clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
  247. <&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
  248. clock-names = "pclk", "refclk";
  249. resets = <&clkc_audio AUD_RESET_SPDIFIN>;
  250. status = "disabled";
  251. };
  252. spdifout: audio-controller@480 {
  253. compatible = "amlogic,g12a-spdifout",
  254. "amlogic,axg-spdifout";
  255. reg = <0x0 0x480 0x0 0x50>;
  256. #sound-dai-cells = <0>;
  257. sound-name-prefix = "SPDIFOUT";
  258. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
  259. <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
  260. clock-names = "pclk", "mclk";
  261. resets = <&clkc_audio AUD_RESET_SPDIFOUT>;
  262. status = "disabled";
  263. };
  264. tdmout_a: audio-controller@500 {
  265. compatible = "amlogic,g12a-tdmout";
  266. reg = <0x0 0x500 0x0 0x40>;
  267. sound-name-prefix = "TDMOUT_A";
  268. resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
  269. clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
  270. <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
  271. <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
  272. <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
  273. <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
  274. clock-names = "pclk", "sclk", "sclk_sel",
  275. "lrclk", "lrclk_sel";
  276. status = "disabled";
  277. };
  278. tdmout_b: audio-controller@540 {
  279. compatible = "amlogic,g12a-tdmout";
  280. reg = <0x0 0x540 0x0 0x40>;
  281. sound-name-prefix = "TDMOUT_B";
  282. resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
  283. clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
  284. <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
  285. <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
  286. <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
  287. <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
  288. clock-names = "pclk", "sclk", "sclk_sel",
  289. "lrclk", "lrclk_sel";
  290. status = "disabled";
  291. };
  292. tdmout_c: audio-controller@580 {
  293. compatible = "amlogic,g12a-tdmout";
  294. reg = <0x0 0x580 0x0 0x40>;
  295. sound-name-prefix = "TDMOUT_C";
  296. resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
  297. clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
  298. <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
  299. <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
  300. <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
  301. <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
  302. clock-names = "pclk", "sclk", "sclk_sel",
  303. "lrclk", "lrclk_sel";
  304. status = "disabled";
  305. };
  306. spdifout_b: audio-controller@680 {
  307. compatible = "amlogic,g12a-spdifout",
  308. "amlogic,axg-spdifout";
  309. reg = <0x0 0x680 0x0 0x50>;
  310. #sound-dai-cells = <0>;
  311. sound-name-prefix = "SPDIFOUT_B";
  312. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
  313. <&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
  314. clock-names = "pclk", "mclk";
  315. resets = <&clkc_audio AUD_RESET_SPDIFOUT_B>;
  316. status = "disabled";
  317. };
  318. tohdmitx: audio-controller@744 {
  319. compatible = "amlogic,g12a-tohdmitx";
  320. reg = <0x0 0x744 0x0 0x4>;
  321. #sound-dai-cells = <1>;
  322. sound-name-prefix = "TOHDMITX";
  323. resets = <&clkc_audio AUD_RESET_TOHDMITX>;
  324. status = "disabled";
  325. };
  326. };
  327. };
  328. &cpu_thermal {
  329. cooling-maps {
  330. map0 {
  331. trip = <&cpu_passive>;
  332. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  333. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  334. <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  335. <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  336. <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  337. <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  338. };
  339. map1 {
  340. trip = <&cpu_hot>;
  341. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  342. <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  343. <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  344. <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  345. <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  346. <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  347. };
  348. };
  349. };
  350. &ethmac {
  351. power-domains = <&pwrc PWRC_G12A_ETH_ID>;
  352. };
  353. &vpu {
  354. power-domains = <&pwrc PWRC_G12A_VPU_ID>;
  355. };
  356. &sd_emmc_a {
  357. amlogic,dram-access-quirk;
  358. };
  359. &simplefb_cvbs {
  360. power-domains = <&pwrc PWRC_G12A_VPU_ID>;
  361. };
  362. &simplefb_hdmi {
  363. power-domains = <&pwrc PWRC_G12A_VPU_ID>;
  364. };