0001 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
0002 /*
0003 * Copyright (c) 2019 BayLibre, SAS
0004 * Author: Neil Armstrong <narmstrong@baylibre.com>
0005 */
0006
0007 #include "meson-g12-common.dtsi"
0008 #include <dt-bindings/clock/axg-audio-clkc.h>
0009 #include <dt-bindings/power/meson-sm1-power.h>
0010 #include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
0011 #include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
0012
0013 / {
0014 compatible = "amlogic,sm1";
0015
0016 tdmif_a: audio-controller-0 {
0017 compatible = "amlogic,axg-tdm-iface";
0018 #sound-dai-cells = <0>;
0019 sound-name-prefix = "TDM_A";
0020 clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
0021 <&clkc_audio AUD_CLKID_MST_A_SCLK>,
0022 <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
0023 clock-names = "mclk", "sclk", "lrclk";
0024 status = "disabled";
0025 };
0026
0027 tdmif_b: audio-controller-1 {
0028 compatible = "amlogic,axg-tdm-iface";
0029 #sound-dai-cells = <0>;
0030 sound-name-prefix = "TDM_B";
0031 clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
0032 <&clkc_audio AUD_CLKID_MST_B_SCLK>,
0033 <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
0034 clock-names = "mclk", "sclk", "lrclk";
0035 status = "disabled";
0036 };
0037
0038 tdmif_c: audio-controller-2 {
0039 compatible = "amlogic,axg-tdm-iface";
0040 #sound-dai-cells = <0>;
0041 sound-name-prefix = "TDM_C";
0042 clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
0043 <&clkc_audio AUD_CLKID_MST_C_SCLK>,
0044 <&clkc_audio AUD_CLKID_MST_C_LRCLK>;
0045 clock-names = "mclk", "sclk", "lrclk";
0046 status = "disabled";
0047 };
0048
0049 cpus {
0050 #address-cells = <0x2>;
0051 #size-cells = <0x0>;
0052
0053 cpu0: cpu@0 {
0054 device_type = "cpu";
0055 compatible = "arm,cortex-a55";
0056 reg = <0x0 0x0>;
0057 enable-method = "psci";
0058 next-level-cache = <&l2>;
0059 #cooling-cells = <2>;
0060 };
0061
0062 cpu1: cpu@1 {
0063 device_type = "cpu";
0064 compatible = "arm,cortex-a55";
0065 reg = <0x0 0x1>;
0066 enable-method = "psci";
0067 next-level-cache = <&l2>;
0068 #cooling-cells = <2>;
0069 };
0070
0071 cpu2: cpu@2 {
0072 device_type = "cpu";
0073 compatible = "arm,cortex-a55";
0074 reg = <0x0 0x2>;
0075 enable-method = "psci";
0076 next-level-cache = <&l2>;
0077 #cooling-cells = <2>;
0078 };
0079
0080 cpu3: cpu@3 {
0081 device_type = "cpu";
0082 compatible = "arm,cortex-a55";
0083 reg = <0x0 0x3>;
0084 enable-method = "psci";
0085 next-level-cache = <&l2>;
0086 #cooling-cells = <2>;
0087 };
0088
0089 l2: l2-cache0 {
0090 compatible = "cache";
0091 };
0092 };
0093
0094 cpu_opp_table: opp-table {
0095 compatible = "operating-points-v2";
0096 opp-shared;
0097
0098 opp-1000000000 {
0099 opp-hz = /bits/ 64 <1000000000>;
0100 opp-microvolt = <770000>;
0101 };
0102
0103 opp-1200000000 {
0104 opp-hz = /bits/ 64 <1200000000>;
0105 opp-microvolt = <780000>;
0106 };
0107
0108 opp-1404000000 {
0109 opp-hz = /bits/ 64 <1404000000>;
0110 opp-microvolt = <790000>;
0111 };
0112
0113 opp-1500000000 {
0114 opp-hz = /bits/ 64 <1500000000>;
0115 opp-microvolt = <800000>;
0116 };
0117
0118 opp-1608000000 {
0119 opp-hz = /bits/ 64 <1608000000>;
0120 opp-microvolt = <810000>;
0121 };
0122
0123 opp-1704000000 {
0124 opp-hz = /bits/ 64 <1704000000>;
0125 opp-microvolt = <850000>;
0126 };
0127
0128 opp-1800000000 {
0129 opp-hz = /bits/ 64 <1800000000>;
0130 opp-microvolt = <900000>;
0131 };
0132
0133 opp-1908000000 {
0134 opp-hz = /bits/ 64 <1908000000>;
0135 opp-microvolt = <950000>;
0136 };
0137 };
0138 };
0139
0140 &apb {
0141 audio: bus@60000 {
0142 compatible = "simple-bus";
0143 reg = <0x0 0x60000 0x0 0x1000>;
0144 #address-cells = <2>;
0145 #size-cells = <2>;
0146 ranges = <0x0 0x0 0x0 0x60000 0x0 0x1000>;
0147
0148 clkc_audio: clock-controller@0 {
0149 status = "disabled";
0150 compatible = "amlogic,sm1-audio-clkc";
0151 reg = <0x0 0x0 0x0 0xb4>;
0152 #clock-cells = <1>;
0153 #reset-cells = <1>;
0154
0155 clocks = <&clkc CLKID_AUDIO>,
0156 <&clkc CLKID_MPLL0>,
0157 <&clkc CLKID_MPLL1>,
0158 <&clkc CLKID_MPLL2>,
0159 <&clkc CLKID_MPLL3>,
0160 <&clkc CLKID_HIFI_PLL>,
0161 <&clkc CLKID_FCLK_DIV3>,
0162 <&clkc CLKID_FCLK_DIV4>,
0163 <&clkc CLKID_FCLK_DIV5>;
0164 clock-names = "pclk",
0165 "mst_in0",
0166 "mst_in1",
0167 "mst_in2",
0168 "mst_in3",
0169 "mst_in4",
0170 "mst_in5",
0171 "mst_in6",
0172 "mst_in7";
0173
0174 resets = <&reset RESET_AUDIO>;
0175 };
0176
0177 toddr_a: audio-controller@100 {
0178 compatible = "amlogic,sm1-toddr",
0179 "amlogic,axg-toddr";
0180 reg = <0x0 0x100 0x0 0x2c>;
0181 #sound-dai-cells = <0>;
0182 sound-name-prefix = "TODDR_A";
0183 interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
0184 clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
0185 resets = <&arb AXG_ARB_TODDR_A>,
0186 <&clkc_audio AUD_RESET_TODDR_A>;
0187 reset-names = "arb", "rst";
0188 amlogic,fifo-depth = <8192>;
0189 status = "disabled";
0190 };
0191
0192 toddr_b: audio-controller@140 {
0193 compatible = "amlogic,sm1-toddr",
0194 "amlogic,axg-toddr";
0195 reg = <0x0 0x140 0x0 0x2c>;
0196 #sound-dai-cells = <0>;
0197 sound-name-prefix = "TODDR_B";
0198 interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
0199 clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
0200 resets = <&arb AXG_ARB_TODDR_B>,
0201 <&clkc_audio AUD_RESET_TODDR_B>;
0202 reset-names = "arb", "rst";
0203 amlogic,fifo-depth = <256>;
0204 status = "disabled";
0205 };
0206
0207 toddr_c: audio-controller@180 {
0208 compatible = "amlogic,sm1-toddr",
0209 "amlogic,axg-toddr";
0210 reg = <0x0 0x180 0x0 0x2c>;
0211 #sound-dai-cells = <0>;
0212 sound-name-prefix = "TODDR_C";
0213 interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
0214 clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
0215 resets = <&arb AXG_ARB_TODDR_C>,
0216 <&clkc_audio AUD_RESET_TODDR_C>;
0217 reset-names = "arb", "rst";
0218 amlogic,fifo-depth = <256>;
0219 status = "disabled";
0220 };
0221
0222 frddr_a: audio-controller@1c0 {
0223 compatible = "amlogic,sm1-frddr",
0224 "amlogic,axg-frddr";
0225 reg = <0x0 0x1c0 0x0 0x2c>;
0226 #sound-dai-cells = <0>;
0227 sound-name-prefix = "FRDDR_A";
0228 interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
0229 clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
0230 resets = <&arb AXG_ARB_FRDDR_A>,
0231 <&clkc_audio AUD_RESET_FRDDR_A>;
0232 reset-names = "arb", "rst";
0233 amlogic,fifo-depth = <512>;
0234 status = "disabled";
0235 };
0236
0237 frddr_b: audio-controller@200 {
0238 compatible = "amlogic,sm1-frddr",
0239 "amlogic,axg-frddr";
0240 reg = <0x0 0x200 0x0 0x2c>;
0241 #sound-dai-cells = <0>;
0242 sound-name-prefix = "FRDDR_B";
0243 interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
0244 clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
0245 resets = <&arb AXG_ARB_FRDDR_B>,
0246 <&clkc_audio AUD_RESET_FRDDR_B>;
0247 reset-names = "arb", "rst";
0248 amlogic,fifo-depth = <256>;
0249 status = "disabled";
0250 };
0251
0252 frddr_c: audio-controller@240 {
0253 compatible = "amlogic,sm1-frddr",
0254 "amlogic,axg-frddr";
0255 reg = <0x0 0x240 0x0 0x2c>;
0256 #sound-dai-cells = <0>;
0257 sound-name-prefix = "FRDDR_C";
0258 interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
0259 clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
0260 resets = <&arb AXG_ARB_FRDDR_C>,
0261 <&clkc_audio AUD_RESET_FRDDR_C>;
0262 reset-names = "arb", "rst";
0263 amlogic,fifo-depth = <256>;
0264 status = "disabled";
0265 };
0266
0267 arb: reset-controller@280 {
0268 status = "disabled";
0269 compatible = "amlogic,meson-sm1-audio-arb";
0270 reg = <0x0 0x280 0x0 0x4>;
0271 #reset-cells = <1>;
0272 clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
0273 };
0274
0275 tdmin_a: audio-controller@300 {
0276 compatible = "amlogic,sm1-tdmin",
0277 "amlogic,axg-tdmin";
0278 reg = <0x0 0x300 0x0 0x40>;
0279 sound-name-prefix = "TDMIN_A";
0280 resets = <&clkc_audio AUD_RESET_TDMIN_A>;
0281 clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
0282 <&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
0283 <&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
0284 <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
0285 <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
0286 clock-names = "pclk", "sclk", "sclk_sel",
0287 "lrclk", "lrclk_sel";
0288 status = "disabled";
0289 };
0290
0291 tdmin_b: audio-controller@340 {
0292 compatible = "amlogic,sm1-tdmin",
0293 "amlogic,axg-tdmin";
0294 reg = <0x0 0x340 0x0 0x40>;
0295 sound-name-prefix = "TDMIN_B";
0296 resets = <&clkc_audio AUD_RESET_TDMIN_B>;
0297 clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
0298 <&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
0299 <&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
0300 <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
0301 <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
0302 clock-names = "pclk", "sclk", "sclk_sel",
0303 "lrclk", "lrclk_sel";
0304 status = "disabled";
0305 };
0306
0307 tdmin_c: audio-controller@380 {
0308 compatible = "amlogic,sm1-tdmin",
0309 "amlogic,axg-tdmin";
0310 reg = <0x0 0x380 0x0 0x40>;
0311 sound-name-prefix = "TDMIN_C";
0312 resets = <&clkc_audio AUD_RESET_TDMIN_C>;
0313 clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
0314 <&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
0315 <&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
0316 <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
0317 <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
0318 clock-names = "pclk", "sclk", "sclk_sel",
0319 "lrclk", "lrclk_sel";
0320 status = "disabled";
0321 };
0322
0323 tdmin_lb: audio-controller@3c0 {
0324 compatible = "amlogic,sm1-tdmin",
0325 "amlogic,axg-tdmin";
0326 reg = <0x0 0x3c0 0x0 0x40>;
0327 sound-name-prefix = "TDMIN_LB";
0328 resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
0329 clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
0330 <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
0331 <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
0332 <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
0333 <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
0334 clock-names = "pclk", "sclk", "sclk_sel",
0335 "lrclk", "lrclk_sel";
0336 status = "disabled";
0337 };
0338
0339 spdifin: audio-controller@400 {
0340 compatible = "amlogic,g12a-spdifin",
0341 "amlogic,axg-spdifin";
0342 reg = <0x0 0x400 0x0 0x30>;
0343 #sound-dai-cells = <0>;
0344 sound-name-prefix = "SPDIFIN";
0345 interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
0346 clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
0347 <&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
0348 clock-names = "pclk", "refclk";
0349 resets = <&clkc_audio AUD_RESET_SPDIFIN>;
0350 status = "disabled";
0351 };
0352
0353 spdifout_a: audio-controller@480 {
0354 compatible = "amlogic,g12a-spdifout",
0355 "amlogic,axg-spdifout";
0356 reg = <0x0 0x480 0x0 0x50>;
0357 #sound-dai-cells = <0>;
0358 sound-name-prefix = "SPDIFOUT_A";
0359 clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
0360 <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
0361 clock-names = "pclk", "mclk";
0362 resets = <&clkc_audio AUD_RESET_SPDIFOUT>;
0363 status = "disabled";
0364 };
0365
0366 tdmout_a: audio-controller@500 {
0367 compatible = "amlogic,sm1-tdmout";
0368 reg = <0x0 0x500 0x0 0x40>;
0369 sound-name-prefix = "TDMOUT_A";
0370 resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
0371 clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
0372 <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
0373 <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
0374 <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
0375 <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
0376 clock-names = "pclk", "sclk", "sclk_sel",
0377 "lrclk", "lrclk_sel";
0378 status = "disabled";
0379 };
0380
0381 tdmout_b: audio-controller@540 {
0382 compatible = "amlogic,sm1-tdmout";
0383 reg = <0x0 0x540 0x0 0x40>;
0384 sound-name-prefix = "TDMOUT_B";
0385 resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
0386 clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
0387 <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
0388 <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
0389 <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
0390 <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
0391 clock-names = "pclk", "sclk", "sclk_sel",
0392 "lrclk", "lrclk_sel";
0393 status = "disabled";
0394 };
0395
0396 tdmout_c: audio-controller@580 {
0397 compatible = "amlogic,sm1-tdmout";
0398 reg = <0x0 0x580 0x0 0x40>;
0399 sound-name-prefix = "TDMOUT_C";
0400 resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
0401 clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
0402 <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
0403 <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
0404 <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
0405 <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
0406 clock-names = "pclk", "sclk", "sclk_sel",
0407 "lrclk", "lrclk_sel";
0408 status = "disabled";
0409 };
0410
0411 toacodec: audio-controller@740 {
0412 compatible = "amlogic,sm1-toacodec",
0413 "amlogic,g12a-toacodec";
0414 reg = <0x0 0x740 0x0 0x4>;
0415 #sound-dai-cells = <1>;
0416 sound-name-prefix = "TOACODEC";
0417 resets = <&clkc_audio AUD_RESET_TOACODEC>;
0418 status = "disabled";
0419 };
0420
0421 tohdmitx: audio-controller@744 {
0422 compatible = "amlogic,sm1-tohdmitx",
0423 "amlogic,g12a-tohdmitx";
0424 reg = <0x0 0x744 0x0 0x4>;
0425 #sound-dai-cells = <1>;
0426 sound-name-prefix = "TOHDMITX";
0427 resets = <&clkc_audio AUD_RESET_TOHDMITX>;
0428 status = "disabled";
0429 };
0430
0431 toddr_d: audio-controller@840 {
0432 compatible = "amlogic,sm1-toddr",
0433 "amlogic,axg-toddr";
0434 reg = <0x0 0x840 0x0 0x2c>;
0435 #sound-dai-cells = <0>;
0436 sound-name-prefix = "TODDR_D";
0437 interrupts = <GIC_SPI 49 IRQ_TYPE_EDGE_RISING>;
0438 clocks = <&clkc_audio AUD_CLKID_TODDR_D>;
0439 resets = <&arb AXG_ARB_TODDR_D>,
0440 <&clkc_audio AUD_RESET_TODDR_D>;
0441 reset-names = "arb", "rst";
0442 amlogic,fifo-depth = <256>;
0443 status = "disabled";
0444 };
0445
0446 frddr_d: audio-controller@880 {
0447 compatible = "amlogic,sm1-frddr",
0448 "amlogic,axg-frddr";
0449 reg = <0x0 0x880 0x0 0x2c>;
0450 #sound-dai-cells = <0>;
0451 sound-name-prefix = "FRDDR_D";
0452 interrupts = <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
0453 clocks = <&clkc_audio AUD_CLKID_FRDDR_D>;
0454 resets = <&arb AXG_ARB_FRDDR_D>,
0455 <&clkc_audio AUD_RESET_FRDDR_D>;
0456 reset-names = "arb", "rst";
0457 amlogic,fifo-depth = <256>;
0458 status = "disabled";
0459 };
0460 };
0461
0462 pdm: audio-controller@61000 {
0463 compatible = "amlogic,sm1-pdm",
0464 "amlogic,axg-pdm";
0465 reg = <0x0 0x61000 0x0 0x34>;
0466 #sound-dai-cells = <0>;
0467 sound-name-prefix = "PDM";
0468 clocks = <&clkc_audio AUD_CLKID_PDM>,
0469 <&clkc_audio AUD_CLKID_PDM_DCLK>,
0470 <&clkc_audio AUD_CLKID_PDM_SYSCLK>;
0471 clock-names = "pclk", "dclk", "sysclk";
0472 resets = <&clkc_audio AUD_RESET_PDM>;
0473 status = "disabled";
0474 };
0475 };
0476
0477 &cecb_AO {
0478 compatible = "amlogic,meson-sm1-ao-cec";
0479 };
0480
0481 &clk_msr {
0482 compatible = "amlogic,meson-sm1-clk-measure";
0483 };
0484
0485
0486 &clkc {
0487 compatible = "amlogic,sm1-clkc";
0488 };
0489
0490 &cpu_thermal {
0491 cooling-maps {
0492 map0 {
0493 trip = <&cpu_passive>;
0494 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0495 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0496 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0497 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
0498 };
0499
0500 map1 {
0501 trip = <&cpu_hot>;
0502 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0503 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0504 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0505 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
0506 };
0507 };
0508 };
0509
0510 ðmac {
0511 power-domains = <&pwrc PWRC_SM1_ETH_ID>;
0512 };
0513
0514 &gpio_intc {
0515 compatible = "amlogic,meson-sm1-gpio-intc",
0516 "amlogic,meson-gpio-intc";
0517 };
0518
0519 &pcie {
0520 power-domains = <&pwrc PWRC_SM1_PCIE_ID>;
0521 };
0522
0523 &pwrc {
0524 compatible = "amlogic,meson-sm1-pwrc";
0525 };
0526
0527 &simplefb_cvbs {
0528 power-domains = <&pwrc PWRC_SM1_VPU_ID>;
0529 };
0530
0531 &simplefb_hdmi {
0532 power-domains = <&pwrc PWRC_SM1_VPU_ID>;
0533 };
0534
0535 &vdec {
0536 compatible = "amlogic,sm1-vdec";
0537 };
0538
0539 &vpu {
0540 power-domains = <&pwrc PWRC_SM1_VPU_ID>;
0541 };
0542
0543 &usb {
0544 power-domains = <&pwrc PWRC_SM1_USB_ID>;
0545 };