<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
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 {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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 {
function = "spdif_out_ao";
};
};
+
+ spdifout_a_mute: spdifout_a_mute {
+ mux { /* gpiao_10 */
+ groups = "GPIOAO_10";
+ function = "gpio_periphs";
+ };
+ };
}; /* end of pinctrl_aobus */
&irblaster {
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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
};
};
+ 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",
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
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
};
};
+ 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",
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
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;
/* last value for pc, pd */
int pc_last;
int pd_last;
+
+ /* mixer control vals */
+ bool mute;
+ enum SPDIF_SRC spdifin_src;
};
static const struct snd_pcm_hardware aml_spdif_hardware = {
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;
}
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;
}
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) {
return -1;
}
spdifin_set_src(src);
- spdifin_src = src;
+ p_spdif->spdifin_src = src;
+
return 0;
}
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)
#include <linux/amlogic/media/sound/aout_notify.h>
#include <linux/amlogic/media/sound/spdif_info.h>
+#ifdef CONFIG_AMLOGIC_HDMITX
+#include <linux/amlogic/media/vout/hdmi_tx/hdmi_tx_ext.h>
+#endif
/*
* 0 -- other formats except(DD,DD+,DTS)
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
}
#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",