Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: meson: Add the AIU audio controller

Add the AIU audio controller to the Amlogic Meson6/8/8b/8m2 SoC DT. This
provides I2S and SPDIF outputs as well as codec glues for the internal
HDMI controller.
Also add the clock inputs and pin mux definitions on Meson8/8b/8m2. On
Meson6 this is omitted because we neither have a clock nor pin
controller node there yet.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Link: https://lore.kernel.org/r/20210717233030.331273-2-martin.blumenstingl@googlemail.com

authored by

Martin Blumenstingl and committed by
Neil Armstrong
4f8ca13d 44cf630b

+138
+12
arch/arm/boot/dts/meson.dtsi
··· 5 5 6 6 #include <dt-bindings/interrupt-controller/irq.h> 7 7 #include <dt-bindings/interrupt-controller/arm-gic.h> 8 + #include <dt-bindings/sound/meson-aiu.h> 8 9 9 10 / { 10 11 #address-cells = <1>; ··· 35 34 "simple-mfd", 36 35 "syscon"; 37 36 reg = <0x4000 0x400>; 37 + }; 38 + 39 + aiu: audio-controller@5400 { 40 + compatible = "amlogic,aiu"; 41 + #sound-dai-cells = <2>; 42 + sound-name-prefix = "AIU"; 43 + reg = <0x5400 0x2ac>; 44 + interrupts = <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>, 45 + <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>; 46 + interrupt-names = "i2s", "spdif"; 47 + status = "disabled"; 38 48 }; 39 49 40 50 assist: assist@7c00 {
+63
arch/arm/boot/dts/meson8.dtsi
··· 317 317 }; 318 318 }; /* end of / */ 319 319 320 + &aiu { 321 + compatible = "amlogic,aiu-meson8", "amlogic,aiu"; 322 + clocks = <&clkc CLKID_AIU_GLUE>, 323 + <&clkc CLKID_I2S_OUT>, 324 + <&clkc CLKID_AOCLK_GATE>, 325 + <&clkc CLKID_CTS_AMCLK>, 326 + <&clkc CLKID_MIXER_IFACE>, 327 + <&clkc CLKID_IEC958>, 328 + <&clkc CLKID_IEC958_GATE>, 329 + <&clkc CLKID_CTS_MCLK_I958>, 330 + <&clkc CLKID_CTS_I958>; 331 + clock-names = "pclk", 332 + "i2s_pclk", 333 + "i2s_aoclk", 334 + "i2s_mclk", 335 + "i2s_mixer", 336 + "spdif_pclk", 337 + "spdif_aoclk", 338 + "spdif_mclk", 339 + "spdif_mclk_sel"; 340 + resets = <&reset RESET_AIU>; 341 + }; 342 + 320 343 &aobus { 321 344 pmu: pmu@e0 { 322 345 compatible = "amlogic,meson8-pmu", "syscon"; ··· 361 338 gpio-controller; 362 339 #gpio-cells = <2>; 363 340 gpio-ranges = <&pinctrl_aobus 0 0 16>; 341 + }; 342 + 343 + i2s_am_clk_pins: i2s-am-clk-out { 344 + mux { 345 + groups = "i2s_am_clk_out_ao"; 346 + function = "i2s_ao"; 347 + bias-disable; 348 + }; 349 + }; 350 + 351 + i2s_out_ao_clk_pins: i2s-ao-clk-out { 352 + mux { 353 + groups = "i2s_ao_clk_out_ao"; 354 + function = "i2s_ao"; 355 + bias-disable; 356 + }; 357 + }; 358 + 359 + i2s_out_lr_clk_pins: i2s-lr-clk-out { 360 + mux { 361 + groups = "i2s_lr_clk_out_ao"; 362 + function = "i2s_ao"; 363 + bias-disable; 364 + }; 365 + }; 366 + 367 + i2s_out_ch01_ao_pins: i2s-out-ch01 { 368 + mux { 369 + groups = "i2s_out_ch01_ao"; 370 + function = "i2s_ao"; 371 + bias-disable; 372 + }; 364 373 }; 365 374 366 375 uart_ao_a_pins: uart_ao_a { ··· 512 457 "sdxc_clk_b", "sdxc_cmd_b"; 513 458 function = "sdxc_b"; 514 459 bias-pull-up; 460 + }; 461 + }; 462 + 463 + spdif_out_pins: spdif-out { 464 + mux { 465 + groups = "spdif_out"; 466 + function = "spdif"; 467 + bias-disable; 515 468 }; 516 469 }; 517 470
+63
arch/arm/boot/dts/meson8b.dtsi
··· 279 279 }; 280 280 }; /* end of / */ 281 281 282 + &aiu { 283 + compatible = "amlogic,aiu-meson8b", "amlogic,aiu"; 284 + clocks = <&clkc CLKID_AIU_GLUE>, 285 + <&clkc CLKID_I2S_OUT>, 286 + <&clkc CLKID_AOCLK_GATE>, 287 + <&clkc CLKID_CTS_AMCLK>, 288 + <&clkc CLKID_MIXER_IFACE>, 289 + <&clkc CLKID_IEC958>, 290 + <&clkc CLKID_IEC958_GATE>, 291 + <&clkc CLKID_CTS_MCLK_I958>, 292 + <&clkc CLKID_CTS_I958>; 293 + clock-names = "pclk", 294 + "i2s_pclk", 295 + "i2s_aoclk", 296 + "i2s_mclk", 297 + "i2s_mixer", 298 + "spdif_pclk", 299 + "spdif_aoclk", 300 + "spdif_mclk", 301 + "spdif_mclk_sel"; 302 + resets = <&reset RESET_AIU>; 303 + }; 304 + 282 305 &aobus { 283 306 pmu: pmu@e0 { 284 307 compatible = "amlogic,meson8b-pmu", "syscon"; ··· 323 300 gpio-controller; 324 301 #gpio-cells = <2>; 325 302 gpio-ranges = <&pinctrl_aobus 0 0 16>; 303 + }; 304 + 305 + i2s_am_clk_pins: i2s-am-clk-out { 306 + mux { 307 + groups = "i2s_am_clk_out"; 308 + function = "i2s"; 309 + bias-disable; 310 + }; 311 + }; 312 + 313 + i2s_out_ao_clk_pins: i2s-ao-clk-out { 314 + mux { 315 + groups = "i2s_ao_clk_out"; 316 + function = "i2s"; 317 + bias-disable; 318 + }; 319 + }; 320 + 321 + i2s_out_lr_clk_pins: i2s-lr-clk-out { 322 + mux { 323 + groups = "i2s_lr_clk_out"; 324 + function = "i2s"; 325 + bias-disable; 326 + }; 327 + }; 328 + 329 + i2s_out_ch01_ao_pins: i2s-out-ch01 { 330 + mux { 331 + groups = "i2s_out_01"; 332 + function = "i2s"; 333 + bias-disable; 334 + }; 335 + }; 336 + 337 + spdif_out_1_pins: spdif-out-1 { 338 + mux { 339 + groups = "spdif_out_1"; 340 + function = "spdif_1"; 341 + bias-disable; 342 + }; 326 343 }; 327 344 328 345 uart_ao_a_pins: uart_ao_a {