|
@@ -259,25 +259,20 @@ static int sun8i_codec_hw_params(struct snd_pcm_substream *substream,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static const struct snd_kcontrol_new sun8i_output_left_mixer_controls[] = {
|
|
|
- SOC_DAPM_SINGLE("LSlot 0", SUN8I_DAC_MXR_SRC,
|
|
|
- SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_AIF1DA0L, 1, 0),
|
|
|
- SOC_DAPM_SINGLE("LSlot 1", SUN8I_DAC_MXR_SRC,
|
|
|
- SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_AIF1DA1L, 1, 0),
|
|
|
- SOC_DAPM_SINGLE("DACL", SUN8I_DAC_MXR_SRC,
|
|
|
- SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_AIF2DACL, 1, 0),
|
|
|
- SOC_DAPM_SINGLE("ADCL", SUN8I_DAC_MXR_SRC,
|
|
|
- SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_ADCL, 1, 0),
|
|
|
-};
|
|
|
-
|
|
|
-static const struct snd_kcontrol_new sun8i_output_right_mixer_controls[] = {
|
|
|
- SOC_DAPM_SINGLE("RSlot 0", SUN8I_DAC_MXR_SRC,
|
|
|
+static const struct snd_kcontrol_new sun8i_dac_mixer_controls[] = {
|
|
|
+ SOC_DAPM_DOUBLE("AIF1 Slot 0 Digital DAC Playback Switch",
|
|
|
+ SUN8I_DAC_MXR_SRC,
|
|
|
+ SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_AIF1DA0L,
|
|
|
SUN8I_DAC_MXR_SRC_DACR_MXR_SRC_AIF1DA0R, 1, 0),
|
|
|
- SOC_DAPM_SINGLE("RSlot 1", SUN8I_DAC_MXR_SRC,
|
|
|
+ SOC_DAPM_DOUBLE("AIF1 Slot 1 Digital DAC Playback Switch",
|
|
|
+ SUN8I_DAC_MXR_SRC,
|
|
|
+ SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_AIF1DA1L,
|
|
|
SUN8I_DAC_MXR_SRC_DACR_MXR_SRC_AIF1DA1R, 1, 0),
|
|
|
- SOC_DAPM_SINGLE("DACR", SUN8I_DAC_MXR_SRC,
|
|
|
+ SOC_DAPM_DOUBLE("AIF2 Digital DAC Playback Switch", SUN8I_DAC_MXR_SRC,
|
|
|
+ SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_AIF2DACL,
|
|
|
SUN8I_DAC_MXR_SRC_DACR_MXR_SRC_AIF2DACR, 1, 0),
|
|
|
- SOC_DAPM_SINGLE("ADCR", SUN8I_DAC_MXR_SRC,
|
|
|
+ SOC_DAPM_DOUBLE("ADC Digital DAC Playback Switch", SUN8I_DAC_MXR_SRC,
|
|
|
+ SUN8I_DAC_MXR_SRC_DACL_MXR_SRC_ADCL,
|
|
|
SUN8I_DAC_MXR_SRC_DACR_MXR_SRC_ADCR, 1, 0),
|
|
|
};
|
|
|
|
|
@@ -286,19 +281,21 @@ static const struct snd_soc_dapm_widget sun8i_codec_dapm_widgets[] = {
|
|
|
SND_SOC_DAPM_SUPPLY("DAC", SUN8I_DAC_DIG_CTRL, SUN8I_DAC_DIG_CTRL_ENDA,
|
|
|
0, NULL, 0),
|
|
|
|
|
|
- /* Analog DAC */
|
|
|
- SND_SOC_DAPM_DAC("Digital Left DAC", "Playback", SUN8I_AIF1_DACDAT_CTRL,
|
|
|
- SUN8I_AIF1_DACDAT_CTRL_AIF1_DA0L_ENA, 0),
|
|
|
- SND_SOC_DAPM_DAC("Digital Right DAC", "Playback", SUN8I_AIF1_DACDAT_CTRL,
|
|
|
- SUN8I_AIF1_DACDAT_CTRL_AIF1_DA0R_ENA, 0),
|
|
|
+ /* Analog DAC AIF */
|
|
|
+ SND_SOC_DAPM_AIF_IN("AIF1 Slot 0 Left", "Playback", 0,
|
|
|
+ SUN8I_AIF1_DACDAT_CTRL,
|
|
|
+ SUN8I_AIF1_DACDAT_CTRL_AIF1_DA0L_ENA, 0),
|
|
|
+ SND_SOC_DAPM_AIF_IN("AIF1 Slot 0 Right", "Playback", 0,
|
|
|
+ SUN8I_AIF1_DACDAT_CTRL,
|
|
|
+ SUN8I_AIF1_DACDAT_CTRL_AIF1_DA0R_ENA, 0),
|
|
|
|
|
|
/* DAC Mixers */
|
|
|
- SND_SOC_DAPM_MIXER("Left DAC Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
- sun8i_output_left_mixer_controls,
|
|
|
- ARRAY_SIZE(sun8i_output_left_mixer_controls)),
|
|
|
- SND_SOC_DAPM_MIXER("Right DAC Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
- sun8i_output_right_mixer_controls,
|
|
|
- ARRAY_SIZE(sun8i_output_right_mixer_controls)),
|
|
|
+ SND_SOC_DAPM_MIXER("Left Digital DAC Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
+ sun8i_dac_mixer_controls,
|
|
|
+ ARRAY_SIZE(sun8i_dac_mixer_controls)),
|
|
|
+ SND_SOC_DAPM_MIXER("Right Digital DAC Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
+ sun8i_dac_mixer_controls,
|
|
|
+ ARRAY_SIZE(sun8i_dac_mixer_controls)),
|
|
|
|
|
|
/* Clocks */
|
|
|
SND_SOC_DAPM_SUPPLY("MODCLK AFI1", SUN8I_MOD_CLK_ENA,
|
|
@@ -321,8 +318,6 @@ static const struct snd_soc_dapm_widget sun8i_codec_dapm_widgets[] = {
|
|
|
SUN8I_MOD_RST_CTL_AIF1, 0, NULL, 0),
|
|
|
SND_SOC_DAPM_SUPPLY("RST DAC", SUN8I_MOD_RST_CTL,
|
|
|
SUN8I_MOD_RST_CTL_DAC, 0, NULL, 0),
|
|
|
-
|
|
|
- SND_SOC_DAPM_OUTPUT("HP"),
|
|
|
};
|
|
|
|
|
|
static const struct snd_soc_dapm_route sun8i_codec_dapm_routes[] = {
|
|
@@ -338,16 +333,14 @@ static const struct snd_soc_dapm_route sun8i_codec_dapm_routes[] = {
|
|
|
{ "DAC", NULL, "MODCLK DAC" },
|
|
|
|
|
|
/* DAC Routes */
|
|
|
- { "Digital Left DAC", NULL, "DAC" },
|
|
|
- { "Digital Right DAC", NULL, "DAC" },
|
|
|
+ { "AIF1 Slot 0 Right", NULL, "DAC" },
|
|
|
+ { "AIF1 Slot 0 Left", NULL, "DAC" },
|
|
|
|
|
|
/* DAC Mixer Routes */
|
|
|
- { "Left DAC Mixer", "LSlot 0", "Digital Left DAC"},
|
|
|
- { "Right DAC Mixer", "RSlot 0", "Digital Right DAC"},
|
|
|
-
|
|
|
- /* End of route : HP out */
|
|
|
- { "HP", NULL, "Left DAC Mixer" },
|
|
|
- { "HP", NULL, "Right DAC Mixer" },
|
|
|
+ { "Left Digital DAC Mixer", "AIF1 Slot 0 Digital DAC Playback Switch",
|
|
|
+ "AIF1 Slot 0 Left"},
|
|
|
+ { "Right Digital DAC Mixer", "AIF1 Slot 0 Digital DAC Playback Switch",
|
|
|
+ "AIF1 Slot 0 Right"},
|
|
|
};
|
|
|
|
|
|
static struct snd_soc_dai_ops sun8i_codec_dai_ops = {
|