ASoC: dapm: Allow regulators to bypass as well as disable when idle
[linux-2.6-block.git] / sound / soc / codecs / twl6040.c
index c084c549942ecef39ffa52788524125b2c8ef1b6..e8f97af75928ea3548c0d389f9e70d7f676ba2c3 100644 (file)
@@ -727,10 +727,8 @@ static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = {
                        TWL6040_REG_MICRCTL, 1, 0, NULL, 0),
 
        /* ADCs */
-       SND_SOC_DAPM_ADC("ADC Left", "Left Front Capture",
-                       TWL6040_REG_MICLCTL, 2, 0),
-       SND_SOC_DAPM_ADC("ADC Right", "Right Front Capture",
-                       TWL6040_REG_MICRCTL, 2, 0),
+       SND_SOC_DAPM_ADC("ADC Left", NULL, TWL6040_REG_MICLCTL, 2, 0),
+       SND_SOC_DAPM_ADC("ADC Right", NULL, TWL6040_REG_MICRCTL, 2, 0),
 
        /* Microphone bias */
        SND_SOC_DAPM_SUPPLY("Headset Mic Bias",
@@ -743,15 +741,12 @@ static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = {
                            TWL6040_REG_DMICBCTL, 4, 0, NULL, 0),
 
        /* DACs */
-       SND_SOC_DAPM_DAC("HSDAC Left", "Headset Playback", SND_SOC_NOPM, 0, 0),
-       SND_SOC_DAPM_DAC("HSDAC Right", "Headset Playback", SND_SOC_NOPM, 0, 0),
-       SND_SOC_DAPM_DAC("HFDAC Left", "Handsfree Playback",
-                        TWL6040_REG_HFLCTL, 0, 0),
-       SND_SOC_DAPM_DAC("HFDAC Right", "Handsfree Playback",
-                        TWL6040_REG_HFRCTL, 0, 0),
+       SND_SOC_DAPM_DAC("HSDAC Left", NULL, SND_SOC_NOPM, 0, 0),
+       SND_SOC_DAPM_DAC("HSDAC Right", NULL, SND_SOC_NOPM, 0, 0),
+       SND_SOC_DAPM_DAC("HFDAC Left", NULL, TWL6040_REG_HFLCTL, 0, 0),
+       SND_SOC_DAPM_DAC("HFDAC Right", NULL, TWL6040_REG_HFRCTL, 0, 0),
        /* Virtual DAC for vibra path (DL4 channel) */
-       SND_SOC_DAPM_DAC("VIBRA DAC", "Vibra Playback",
-                       SND_SOC_NOPM, 0, 0),
+       SND_SOC_DAPM_DAC("VIBRA DAC", NULL, SND_SOC_NOPM, 0, 0),
 
        SND_SOC_DAPM_MUX("Handsfree Left Playback",
                        SND_SOC_NOPM, 0, 0, &hfl_mux_controls),
@@ -810,6 +805,26 @@ static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = {
 };
 
 static const struct snd_soc_dapm_route intercon[] = {
+       /* Stream -> DAC mapping */
+       {"HSDAC Left", NULL, "Legacy Playback"},
+       {"HSDAC Left", NULL, "Headset Playback"},
+       {"HSDAC Right", NULL, "Legacy Playback"},
+       {"HSDAC Right", NULL, "Headset Playback"},
+
+       {"HFDAC Left", NULL, "Legacy Playback"},
+       {"HFDAC Left", NULL, "Handsfree Playback"},
+       {"HFDAC Right", NULL, "Legacy Playback"},
+       {"HFDAC Right", NULL, "Handsfree Playback"},
+
+       {"VIBRA DAC", NULL, "Legacy Playback"},
+       {"VIBRA DAC", NULL, "Vibra Playback"},
+
+       /* ADC -> Stream mapping */
+       {"ADC Left", NULL, "Legacy Capture"},
+       {"ADC Left", NULL, "Capture"},
+       {"ADC Right", NULL, "Legacy Capture"},
+       {"ADC Right", NULL, "Capture"},
+
        /* Capture path */
        {"Analog Left Capture Route", "Headset Mic", "HSMIC"},
        {"Analog Left Capture Route", "Main Mic", "MAINMIC"},
@@ -1028,14 +1043,14 @@ static struct snd_soc_dai_driver twl6040_dai[] = {
 {
        .name = "twl6040-legacy",
        .playback = {
-               .stream_name = "Playback",
+               .stream_name = "Legacy Playback",
                .channels_min = 1,
                .channels_max = 5,
                .rates = TWL6040_RATES,
                .formats = TWL6040_FORMATS,
        },
        .capture = {
-               .stream_name = "Capture",
+               .stream_name = "Legacy Capture",
                .channels_min = 1,
                .channels_max = 2,
                .rates = TWL6040_RATES,