.name = "UL_MONO_2", .id = MT6797_MEMIF_DAI, .capture = { .stream_name = "UL_MONO_2", .channels_min = 1, .channels_max = 1, .rates = MTK_PCM_DAI_RATES, .formats = MTK_PCM_FORMATS, }, .ops = &mtk_afe_fe_ops, }, }; /* dma widget & routes*/ static const struct snd_kcontrol_new memif_ul1_ch1_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN21, I_ADDA_UL_CH1, 1, 0), }; static const struct snd_kcontrol_new memif_ul1_ch2_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN22, I_ADDA_UL_CH2, 1, 0), }; static const struct snd_kcontrol_new memif_ul2_ch1_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN5, I_ADDA_UL_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN5, I_DL1_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH1", AFE_CONN5, I_DL2_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL3_CH1", AFE_CONN5,
SOC_ENUM("ADC Bias", adau1761_adc_bias_enum), SOC_ENUM("DAC Bias", adau1761_dac_bias_enum), SOC_ENUM("Capture Bias", adau1761_capture_bias_enum), SOC_ENUM("Playback Bias", adau1761_playback_bias_enum), SOC_ENUM("Headphone Bias", adau1761_hp_bias_enum), }; static const struct snd_kcontrol_new adau1761_mono_controls[] = { SOC_SINGLE_TLV("Mono Playback Volume", ADAU1761_PLAY_MONO_OUTPUT_VOL, 2, 0x3f, 0, adau1761_out_tlv), SOC_SINGLE("Mono Playback Switch", ADAU1761_PLAY_MONO_OUTPUT_VOL, 1, 1, 0), }; static const struct snd_kcontrol_new adau1761_left_mixer_controls[] = { SOC_DAPM_SINGLE_AUTODISABLE("Left DAC Switch", ADAU1761_PLAY_MIXER_LEFT0, 5, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("Right DAC Switch", ADAU1761_PLAY_MIXER_LEFT0, 6, 1, 0), SOC_DAPM_SINGLE_TLV("Aux Bypass Volume", ADAU1761_PLAY_MIXER_LEFT0, 1, 8, 0, adau1761_sidetone_tlv), SOC_DAPM_SINGLE_TLV("Right Bypass Volume", ADAU1761_PLAY_MIXER_LEFT1, 4, 8, 0, adau1761_sidetone_tlv), SOC_DAPM_SINGLE_TLV("Left Bypass Volume", ADAU1761_PLAY_MIXER_LEFT1, 0, 8, 0, adau1761_sidetone_tlv), }; static const struct snd_kcontrol_new adau1761_right_mixer_controls[] = { SOC_DAPM_SINGLE_AUTODISABLE("Left DAC Switch", ADAU1761_PLAY_MIXER_RIGHT0, 5, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("Right DAC Switch", ADAU1761_PLAY_MIXER_RIGHT0, 6, 1, 0),
.name = "HDMI", .id = MT8183_MEMIF_HDMI, .playback = { .stream_name = "HDMI", .channels_min = 2, .channels_max = 8, .rates = MTK_PCM_RATES, .formats = MTK_PCM_FORMATS, }, .ops = &mtk_afe_fe_ops, }, }; /* dma widget & routes*/ static const struct snd_kcontrol_new memif_ul1_ch1_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN21, I_ADDA_UL_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("I2S0_CH1", AFE_CONN21, I_I2S0_CH1, 1, 0), }; static const struct snd_kcontrol_new memif_ul1_ch2_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN22, I_ADDA_UL_CH2, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("I2S0_CH2", AFE_CONN21, I_I2S0_CH2, 1, 0), }; static const struct snd_kcontrol_new memif_ul2_ch1_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN5, I_ADDA_UL_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN5,
AUD_PCM_FMT_PCM_MODE_B = 3 }; enum AUD_BCLK_OUT_INV { AUD_BCLK_OUT_INV_NO_INVERSE = 0, AUD_BCLK_OUT_INV_INVERSE = 1 }; enum AUD_PCM_EN { AUD_PCM_EN_DISABLE = 0, AUD_PCM_EN_ENABLE = 1 }; /* dai component */ static const struct snd_kcontrol_new mtk_pcm_1_playback_ch1_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN7, I_ADDA_UL_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH1", AFE_CONN7, I_DL2_CH1, 1, 0), }; static const struct snd_kcontrol_new mtk_pcm_1_playback_ch2_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN8, I_ADDA_UL_CH2, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH2", AFE_CONN8, I_DL2_CH2, 1, 0), }; static const struct snd_kcontrol_new mtk_pcm_1_playback_ch4_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN27, I_DL1_CH1, 1, 0), };
SOC_ENUM_EXT(MTK_AFE_I2S0_KCONTROL_NAME, mt8183_i2s_enum[0], mt8183_i2s_hd_get, mt8183_i2s_hd_set), SOC_ENUM_EXT(MTK_AFE_I2S1_KCONTROL_NAME, mt8183_i2s_enum[0], mt8183_i2s_hd_get, mt8183_i2s_hd_set), SOC_ENUM_EXT(MTK_AFE_I2S2_KCONTROL_NAME, mt8183_i2s_enum[0], mt8183_i2s_hd_get, mt8183_i2s_hd_set), SOC_ENUM_EXT(MTK_AFE_I2S3_KCONTROL_NAME, mt8183_i2s_enum[0], mt8183_i2s_hd_get, mt8183_i2s_hd_set), SOC_ENUM_EXT(MTK_AFE_I2S5_KCONTROL_NAME, mt8183_i2s_enum[0], mt8183_i2s_hd_get, mt8183_i2s_hd_set), }; /* dai component */ /* interconnection */ static const struct snd_kcontrol_new mtk_i2s3_ch1_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN0, I_DL1_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH1", AFE_CONN0, I_DL2_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL3_CH1", AFE_CONN0, I_DL3_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN0, I_ADDA_UL_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("PCM_1_CAP_CH1", AFE_CONN0, I_PCM_1_CAP_CH1, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("PCM_2_CAP_CH1", AFE_CONN0, I_PCM_2_CAP_CH1, 1, 0), }; static const struct snd_kcontrol_new mtk_i2s3_ch2_mix[] = { SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH2", AFE_CONN1, I_DL1_CH2, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH2", AFE_CONN1, I_DL2_CH2, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("DL3_CH2", AFE_CONN1, I_DL3_CH2, 1, 0), SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN1,