meson-g12.dtsi 12 KB

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