From 856ad33f9cdf942bda6be9df2c8b35635f6ae373 Mon Sep 17 00:00:00 2001 From: Shuai Li Date: Wed, 13 Mar 2019 13:56:26 +0800 Subject: [PATCH] audio: add spdif/HDMI mute ctrl [1/1] PD#TV-3016 Problem: HDMI SPDIF mute interface has no effect. Solution: Add these interfaces for auge platform. Verify: Tested locally. Change-Id: I168c0940e0f2b3d94091d43c6b8190f6f833c0f1 Signed-off-by: Shuai Li Conflicts: arch/arm64/boot/dts/amlogic/tm2_t962e2_ab311.dts sound/soc/amlogic/auge/spdif.c --- arch/arm/boot/dts/amlogic/g12a_s905d2_skt.dts | 11 +++- .../dts/amlogic/g12a_s905d2_skt_buildroot.dts | 11 +++- .../arm/boot/dts/amlogic/g12a_s905d2_u200.dts | 11 +++- .../boot/dts/amlogic/g12a_s905d2_u200_1g.dts | 11 +++- .../amlogic/g12a_s905d2_u200_buildroot.dts | 11 +++- .../g12a_s905d2_u200_buildroot_vccktest.dts | 11 +++- .../g12a_s905d2_u200_drm_buildroot.dts | 11 +++- .../arm/boot/dts/amlogic/g12a_s905x2_u211.dts | 11 +++- .../boot/dts/amlogic/g12a_s905x2_u211_1g.dts | 11 +++- .../dts/amlogic/g12a_s905x2_u211_512m.dts | 11 +++- .../amlogic/g12a_s905x2_u211_buildroot.dts | 11 +++- .../arm/boot/dts/amlogic/g12a_s905x2_u212.dts | 11 +++- .../boot/dts/amlogic/g12a_s905x2_u212_1g.dts | 11 +++- .../amlogic/g12a_s905x2_u212_buildroot.dts | 11 +++- .../g12a_s905x2_u212_drm_buildroot.dts | 11 +++- .../arm/boot/dts/amlogic/g12a_s905y2_u220.dts | 11 +++- .../arm/boot/dts/amlogic/g12a_s905y2_u221.dts | 11 +++- arch/arm/boot/dts/amlogic/g12b_a311d_skt.dts | 11 +++- .../arm/boot/dts/amlogic/g12b_a311d_skt_a.dts | 11 +++- arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts | 11 +++- .../boot/dts/amlogic/g12b_a311d_w400_a.dts | 11 +++- .../dts/amlogic/g12b_a311d_w400_buildroot.dts | 11 +++- .../amlogic/g12b_a311d_w400_buildroot_a.dts | 11 +++- .../g12b_a311d_w400_buildroot_vccktest.dts | 11 +++- .../g12b_a311d_w400_buildroot_vccktest_a.dts | 11 +++- .../amlogic/g12b_a311d_w400_drm_buildroot.dts | 11 +++- arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts | 12 +++- arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts | 12 +++- arch/arm/boot/dts/amlogic/tl1_t962x2_x301.dts | 11 +++- .../boot/dts/amlogic/g12a_s905d2_skt.dts | 11 +++- .../dts/amlogic/g12a_s905d2_skt_buildroot.dts | 11 +++- .../boot/dts/amlogic/g12a_s905d2_u200.dts | 11 +++- .../boot/dts/amlogic/g12a_s905d2_u200_1g.dts | 11 +++- .../amlogic/g12a_s905d2_u200_buildroot.dts | 11 +++- .../g12a_s905d2_u200_buildroot_vccktest.dts | 11 +++- .../g12a_s905d2_u200_drm_buildroot.dts | 11 +++- .../boot/dts/amlogic/g12a_s905x2_u211.dts | 11 +++- .../boot/dts/amlogic/g12a_s905x2_u211_1g.dts | 11 +++- .../dts/amlogic/g12a_s905x2_u211_512m.dts | 11 +++- .../amlogic/g12a_s905x2_u211_buildroot.dts | 11 +++- .../boot/dts/amlogic/g12a_s905x2_u212.dts | 11 +++- .../boot/dts/amlogic/g12a_s905x2_u212_1g.dts | 11 +++- .../amlogic/g12a_s905x2_u212_buildroot.dts | 11 +++- .../g12a_s905x2_u212_drm_buildroot.dts | 11 +++- .../boot/dts/amlogic/g12a_s905y2_u220.dts | 11 +++- .../boot/dts/amlogic/g12a_s905y2_u221.dts | 11 +++- .../arm64/boot/dts/amlogic/g12b_a311d_skt.dts | 11 +++- .../boot/dts/amlogic/g12b_a311d_skt_a.dts | 11 +++- .../boot/dts/amlogic/g12b_a311d_w400.dts | 11 +++- .../boot/dts/amlogic/g12b_a311d_w400_a.dts | 11 +++- .../dts/amlogic/g12b_a311d_w400_buildroot.dts | 11 +++- .../amlogic/g12b_a311d_w400_buildroot_a.dts | 11 +++- .../g12b_a311d_w400_buildroot_vccktest.dts | 11 +++- .../g12b_a311d_w400_buildroot_vccktest_a.dts | 11 +++- .../amlogic/g12b_a311d_w400_drm_buildroot.dts | 11 +++- .../linux/amlogic/media/sound/spdif_info.h | 6 ++ sound/soc/amlogic/auge/spdif.c | 64 ++++++++++++++++--- sound/soc/amlogic/common/spdif_info.c | 29 +++++++++ sound/soc/amlogic/meson/spdif_codec.c | 23 ------- 59 files changed, 641 insertions(+), 88 deletions(-) diff --git a/arch/arm/boot/dts/amlogic/g12a_s905d2_skt.dts b/arch/arm/boot/dts/amlogic/g12a_s905d2_skt.dts index 03985ccee214..8ddaec0d9b1d 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905d2_skt.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905d2_skt.dts @@ -855,8 +855,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1078,6 +1080,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts b/arch/arm/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts index 597aafb225dd..f789b19df155 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts @@ -799,8 +799,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1022,6 +1024,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200.dts b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200.dts index d1da710d8c33..fb33cba8ad63 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200.dts @@ -986,8 +986,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1236,6 +1238,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_1g.dts b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_1g.dts index fe31144f92ab..429b61242a47 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_1g.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_1g.dts @@ -990,8 +990,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1240,6 +1242,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts index 0a850a2a0ce2..bb7264df0ff0 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts @@ -943,8 +943,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1167,6 +1169,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts index 3f1022173ab2..fd84e7155f3f 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts @@ -947,8 +947,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1171,6 +1173,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts index 3d88e88807bf..cf4942189021 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts @@ -957,8 +957,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1181,6 +1183,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211.dts index a807d35f8fc3..71e37476bb39 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211.dts @@ -916,8 +916,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1110,6 +1112,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_1g.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_1g.dts index 680cf3aaec01..dd99fd41ab3a 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_1g.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_1g.dts @@ -907,8 +907,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1101,6 +1103,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_512m.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_512m.dts index 872bbd3e2bab..c31fe1f97d92 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_512m.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_512m.dts @@ -903,8 +903,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1097,6 +1099,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts index 3834590cbf6e..d2909abb4e3a 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts @@ -945,8 +945,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1139,6 +1141,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212.dts index 8e2b01a2518e..4e52524afaba 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212.dts @@ -960,8 +960,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1154,6 +1156,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_1g.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_1g.dts index c712375ba08c..7705079df6d7 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_1g.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_1g.dts @@ -956,8 +956,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1150,6 +1152,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts index 0c5958bc0ca0..0baccdddc62e 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts @@ -944,8 +944,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1138,6 +1140,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts index 5e882d13c814..730acc80d9fa 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts @@ -929,8 +929,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1123,6 +1125,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm/boot/dts/amlogic/g12a_s905y2_u220.dts b/arch/arm/boot/dts/amlogic/g12a_s905y2_u220.dts index 5a31a2f8b6bc..d852f40ca987 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905y2_u220.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905y2_u220.dts @@ -899,8 +899,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1115,6 +1117,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12a_s905y2_u221.dts b/arch/arm/boot/dts/amlogic/g12a_s905y2_u221.dts index c6e89ae0e2de..25ee4273bec6 100644 --- a/arch/arm/boot/dts/amlogic/g12a_s905y2_u221.dts +++ b/arch/arm/boot/dts/amlogic/g12a_s905y2_u221.dts @@ -862,8 +862,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1078,6 +1080,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_skt.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_skt.dts index 7a74dcada5ab..c710f37f5030 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_skt.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_skt.dts @@ -975,8 +975,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1207,6 +1209,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_skt_a.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_skt_a.dts index 6706641a7e86..786992f41771 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_skt_a.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_skt_a.dts @@ -955,8 +955,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1187,6 +1189,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts index 0017840ad7f7..ad5d807e0ee1 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts @@ -942,8 +942,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1166,6 +1168,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_a.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_a.dts index 275163b7a838..6e7a9aa864bc 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_a.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_a.dts @@ -922,8 +922,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1146,6 +1148,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts index edcc88096646..252887971940 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts @@ -1047,8 +1047,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1279,6 +1281,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts index 25f73afe483b..e1f7cb2cc31b 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts @@ -1014,8 +1014,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1246,6 +1248,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts index e83c8b1850af..b3c03210a50a 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts @@ -939,8 +939,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1163,6 +1165,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts index fd62cd9b8d82..a96636e368b3 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts @@ -926,8 +926,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1150,6 +1152,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts index 8f786b06455d..11fedbaee669 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts @@ -1006,8 +1006,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1238,6 +1240,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts b/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts index afed6b01ea14..8bd55cb5c1da 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts @@ -1015,8 +1015,11 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; + pinctrl-0 = <&spdifout_a &spdifin_a>; + pinctrl-1 = <&spdifout_a_mute>; /* * whether do asrc for pcm and resample a or b @@ -1259,6 +1262,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIODV_4 */ + groups = "GPIODV_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* GPIOZ_7, GPIOZ_8, pdm_din2_z4 */ groups = "pdm_dclk_z", diff --git a/arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts b/arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts index e44f3575ed6d..e83462b62db2 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts @@ -1320,8 +1320,11 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout_a>; + pinctrl-1 = <&spdifout_a_mute>; + /* * whether do asrc for pcm and resample a or b @@ -1517,6 +1520,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIODV_4 */ + groups = "GPIODV_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* GPIOZ_7, GPIOZ_8, pdm_din2_z4 */ groups = "pdm_dclk_z", diff --git a/arch/arm/boot/dts/amlogic/tl1_t962x2_x301.dts b/arch/arm/boot/dts/amlogic/tl1_t962x2_x301.dts index 47041842189f..d699f9e32df9 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_x301.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_x301.dts @@ -1036,8 +1036,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout_a>; + pinctrl-1 = <&spdifout_a_mute>; /* * whether do asrc for pcm and resample a or b @@ -1268,6 +1270,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIODV_4 */ + groups = "GPIODV_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* GPIOZ_7, GPIOZ_8, pdm_din2_z4 */ groups = "pdm_dclk_z", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt.dts b/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt.dts index 370a0388e534..984718e3b7bf 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt.dts @@ -855,8 +855,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1078,6 +1080,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts index 6aba708b2e58..6453b5621d22 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905d2_skt_buildroot.dts @@ -799,8 +799,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1022,6 +1024,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200.dts b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200.dts index 26d98f4d3175..af2d35ce9e99 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200.dts @@ -987,8 +987,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1237,6 +1239,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_1g.dts b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_1g.dts index 7d3e2ba52707..0b97338aa931 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_1g.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_1g.dts @@ -984,8 +984,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1234,6 +1236,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts index 8ec7270616ef..4285b7af25b5 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts @@ -943,8 +943,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1167,6 +1169,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts index c3896ca3ba42..d4197f203db4 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts @@ -946,8 +946,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1170,6 +1172,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts index b7c4962d72ea..f39d7b6f2a9e 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts @@ -957,8 +957,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1181,6 +1183,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211.dts index 1e6d000a33c4..9b5b4d356673 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211.dts @@ -916,8 +916,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1110,6 +1112,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_1g.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_1g.dts index 7021173c9ec8..dceafa0b02e4 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_1g.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_1g.dts @@ -907,8 +907,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1101,6 +1103,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_512m.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_512m.dts index bd1c514de9f0..7b6d627a5c49 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_512m.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_512m.dts @@ -903,8 +903,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1097,6 +1099,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts index d8c12d6d454d..981f39508346 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts @@ -945,8 +945,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1139,6 +1141,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212.dts index fc4eae786f8e..ae215a6fdb2c 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212.dts @@ -960,8 +960,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1154,6 +1156,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_1g.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_1g.dts index ec3d2110ff70..81c1ecd44173 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_1g.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_1g.dts @@ -952,8 +952,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1146,6 +1148,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts index 023cf8a23706..fa91c3874e63 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts @@ -944,8 +944,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1138,6 +1140,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts index 9e106b9e500d..dd00ad385edc 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_drm_buildroot.dts @@ -942,8 +942,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1136,6 +1138,13 @@ }; }; + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + }; + }; + pdmin: pdmin { mux { /* gpioa_5, gpioa_6, gpioa_7, gpioa_8, gpioa_9*/ groups = "pdm_din0_a", diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905y2_u220.dts b/arch/arm64/boot/dts/amlogic/g12a_s905y2_u220.dts index ed09a41658c7..1a179759a626 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905y2_u220.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905y2_u220.dts @@ -899,8 +899,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1115,6 +1117,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12a_s905y2_u221.dts b/arch/arm64/boot/dts/amlogic/g12a_s905y2_u221.dts index 6e343249e391..bfbb8f98038d 100644 --- a/arch/arm64/boot/dts/amlogic/g12a_s905y2_u221.dts +++ b/arch/arm64/boot/dts/amlogic/g12a_s905y2_u221.dts @@ -860,8 +860,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1076,6 +1078,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &audio_data { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_skt.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_skt.dts index def509d6ecc2..4e76414130db 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_skt.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_skt.dts @@ -975,8 +975,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1207,6 +1209,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_skt_a.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_skt_a.dts index ab332404e20a..b8b0b536adff 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_skt_a.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_skt_a.dts @@ -955,8 +955,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1187,6 +1189,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts index fe53c59ace64..06a75498e35a 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts @@ -941,8 +941,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1165,6 +1167,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_a.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_a.dts index 95a13fdcd15c..adec33b6e3cc 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_a.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_a.dts @@ -921,8 +921,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1145,6 +1147,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts index f2dba13b152c..99dec00b3a7e 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts @@ -1046,8 +1046,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1278,6 +1280,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts index 8c23660c31de..5c494b6360ca 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts @@ -1013,8 +1013,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1245,6 +1247,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts index 483cf26d612a..49489f5983eb 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts @@ -939,8 +939,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1163,6 +1165,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts index 8a6d0f729a12..8f138fdfa03b 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts @@ -926,8 +926,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1150,6 +1152,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts index 05c6f78a380f..cea39599b967 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400_drm_buildroot.dts @@ -1029,8 +1029,10 @@ ; interrupt-names = "irq_spdifin"; - pinctrl-names = "spdif_pins"; + pinctrl-names = "spdif_pins", + "spdif_pins_mute"; pinctrl-0 = <&spdifout &spdifin>; + pinctrl-1 = <&spdifout_a_mute>; status = "okay"; }; aml_spdif_b: spdif_b { @@ -1261,6 +1263,13 @@ function = "spdif_out_ao"; }; }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* gpiao_10 */ + groups = "GPIOAO_10"; + function = "gpio_periphs"; + }; + }; }; /* end of pinctrl_aobus */ &irblaster { diff --git a/include/linux/amlogic/media/sound/spdif_info.h b/include/linux/amlogic/media/sound/spdif_info.h index e9fec1776202..36df67a80f96 100644 --- a/include/linux/amlogic/media/sound/spdif_info.h +++ b/include/linux/amlogic/media/sound/spdif_info.h @@ -45,4 +45,10 @@ extern int spdif_format_get_enum( extern int spdif_format_set_enum( struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); +#ifdef CONFIG_AMLOGIC_HDMITX +int aml_get_hdmi_out_audio(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol); +int aml_set_hdmi_out_audio(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol); +#endif #endif diff --git a/sound/soc/amlogic/auge/spdif.c b/sound/soc/amlogic/auge/spdif.c index 4ad78596e0f0..708d068b366f 100644 --- a/sound/soc/amlogic/auge/spdif.c +++ b/sound/soc/amlogic/auge/spdif.c @@ -74,6 +74,13 @@ struct spdif_chipinfo { bool same_src_spdif_reen; }; +enum SPDIF_SRC { + SPDIFIN_PAD = 0, + SPDIFOUT, + NOAP, + HDMIRX +}; + struct aml_spdif { struct pinctrl *pin_ctl; struct aml_audio_controller *actrl; @@ -125,7 +132,10 @@ struct aml_spdif { /* last value for pc, pd */ int pc_last; int pd_last; - bool on; + + /* mixer control vals */ + bool mute; + enum SPDIF_SRC spdifin_src; }; static const struct snd_pcm_hardware aml_spdif_hardware = { @@ -268,21 +278,44 @@ static int spdifin_audio_type_get_enum( return 0; } -/* For fake */ -static bool is_mute; -static int spdifin_src; static int aml_audio_set_spdif_mute(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - is_mute = - ucontrol->value.integer.value[0]; + struct snd_soc_dai *dai = snd_kcontrol_chip(kcontrol); + struct aml_spdif *p_spdif = snd_soc_dai_get_drvdata(dai); + struct pinctrl_state *state = NULL; + bool mute = !!ucontrol->value.integer.value[0]; + + if (IS_ERR_OR_NULL(p_spdif->pin_ctl)) { + pr_err("%s(), no pinctrl", __func__); + return 0; + } + if (mute) { + state = pinctrl_lookup_state + (p_spdif->pin_ctl, "spdif_pins_mute"); + + if (!IS_ERR_OR_NULL(state)) + pinctrl_select_state(p_spdif->pin_ctl, state); + } else { + state = pinctrl_lookup_state + (p_spdif->pin_ctl, "spdif_pins"); + + if (!IS_ERR_OR_NULL(state)) + pinctrl_select_state(p_spdif->pin_ctl, state); + } + + p_spdif->mute = mute; + return 0; } static int aml_audio_get_spdif_mute(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ucontrol->value.integer.value[0] = is_mute; + struct snd_soc_dai *dai = snd_kcontrol_chip(kcontrol); + struct aml_spdif *p_spdif = snd_soc_dai_get_drvdata(dai); + + ucontrol->value.integer.value[0] = p_spdif->mute; return 0; } @@ -298,7 +331,11 @@ int spdifin_source_get_enum( struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ucontrol->value.enumerated.item[0] = spdifin_src; + struct snd_soc_dai *dai = snd_kcontrol_chip(kcontrol); + struct aml_spdif *p_spdif = snd_soc_dai_get_drvdata(dai); + + ucontrol->value.enumerated.item[0] = p_spdif->spdifin_src; + return 0; } @@ -306,6 +343,8 @@ int spdifin_source_set_enum( struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + struct snd_soc_dai *dai = snd_kcontrol_chip(kcontrol); + struct aml_spdif *p_spdif = snd_soc_dai_get_drvdata(dai); int src = ucontrol->value.enumerated.item[0]; if (src > 3) { @@ -313,7 +352,8 @@ int spdifin_source_set_enum( return -1; } spdifin_set_src(src); - spdifin_src = src; + p_spdif->spdifin_src = src; + return 0; } @@ -340,7 +380,11 @@ static const struct snd_kcontrol_new snd_spdif_controls[] = { spdifin_src_enum, spdifin_source_get_enum, spdifin_source_set_enum), - +#ifdef CONFIG_AMLOGIC_HDMITX + SOC_SINGLE_BOOL_EXT("Audio hdmi-out mute", + 0, aml_get_hdmi_out_audio, + aml_set_hdmi_out_audio), +#endif }; static bool spdifin_check_audiotype_by_sw(struct aml_spdif *p_spdif) diff --git a/sound/soc/amlogic/common/spdif_info.c b/sound/soc/amlogic/common/spdif_info.c index 85bd5e2bb092..87d8619d6fd4 100644 --- a/sound/soc/amlogic/common/spdif_info.c +++ b/sound/soc/amlogic/common/spdif_info.c @@ -20,6 +20,9 @@ #include #include +#ifdef CONFIG_AMLOGIC_HDMITX +#include +#endif /* * 0 -- other formats except(DD,DD+,DTS) @@ -191,3 +194,29 @@ int spdif_format_set_enum( IEC958_mode_codec = index; return 0; } + +#ifdef CONFIG_AMLOGIC_HDMITX +unsigned int aml_audio_hdmiout_mute_flag; +/* call HDMITX API to enable/disable internal audio out */ +int aml_get_hdmi_out_audio(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = !hdmitx_ext_get_audio_status(); + + aml_audio_hdmiout_mute_flag = + ucontrol->value.integer.value[0]; + return 0; +} + +int aml_set_hdmi_out_audio(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + bool mute = ucontrol->value.integer.value[0]; + + if (aml_audio_hdmiout_mute_flag != mute) { + hdmitx_ext_set_audio_output(!mute); + aml_audio_hdmiout_mute_flag = mute; + } + return 0; +} +#endif diff --git a/sound/soc/amlogic/meson/spdif_codec.c b/sound/soc/amlogic/meson/spdif_codec.c index 299c46c43a02..fc48405a92a3 100644 --- a/sound/soc/amlogic/meson/spdif_codec.c +++ b/sound/soc/amlogic/meson/spdif_codec.c @@ -166,29 +166,6 @@ static int aml_audio_get_spdif_mute(struct snd_kcontrol *kcontrol, } #ifdef CONFIG_AMLOGIC_HDMITX -/* call HDMITX API to enable/disable internal audio out */ -static int aml_get_hdmi_out_audio(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) -{ - ucontrol->value.integer.value[0] = !hdmitx_ext_get_audio_status(); - - v_spdif_codec.aml_audio_hdmiout_mute_flag = - ucontrol->value.integer.value[0]; - return 0; -} - -static int aml_set_hdmi_out_audio(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) -{ - bool mute = ucontrol->value.integer.value[0]; - - if (v_spdif_codec.aml_audio_hdmiout_mute_flag != mute) { - hdmitx_ext_set_audio_output(!mute); - v_spdif_codec.aml_audio_hdmiout_mute_flag = mute; - } - return 0; -} - static const char * const hdmi_out_channel_mask_texts[] = { "SPDIF", "2CH_I2S_0/1",