History

Merge tag 'asoc-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

The only particularly remarkable change here is the one for handling of the Android suspend ignore code for idle_bias_off CODECs. That one is actually a regression fix as some of the new power savings that have been introduced confused the suspend ignore code, making devices that are active for non-audio reasons look like they are idle causing them to be suspended instead of being kept active.

Takashi Iwai committed 14 years ago

Commit cfd0d112 parents eedec3d 43b6cec5 files · +19 −13Browse files

Unified · Split

5 files
  1. sound/soc/codecs/cs42l73.c +1 −1
  2. sound/soc/codecs/wm8962.c +3 −3
  3. sound/soc/codecs/wm8994.c +0 −5
  4. sound/soc/codecs/wm_hubs.c +4 −4
  5. sound/soc/soc-core.c +11 −0
sound/soc/codecs/cs42l73.c+1−1
@@ -1113,7 +1113,7 @@ static int cs42l73_pcm_hw_params(struct snd_pcm_substream *substream, · 1112 unmodified lines
1113 priv->config[id].mmcc &= 0xC0;1113 priv->config[id].mmcc &= 0xC0;
1114 priv->config[id].mmcc |= cs42l73_mclk_coeffs[mclk_coeff].mmcc;1114 priv->config[id].mmcc |= cs42l73_mclk_coeffs[mclk_coeff].mmcc;
1115 priv->config[id].spc &= 0xFC;1115 priv->config[id].spc &= 0xFC;
1116 priv->config[id].spc &= MCK_SCLK_64FS;1116 priv->config[id].spc |= MCK_SCLK_MCLK;
1117 } else {1117 } else {
1118 /* CS42L73 Slave */1118 /* CS42L73 Slave */
1119 priv->config[id].spc &= 0xFC;1119 priv->config[id].spc &= 0xFC;
sound/soc/codecs/wm8962.c+3−3
@@ -3159,13 +3159,13 @@ static int wm8962_hw_params(struct snd_pcm_substream *substream, · 3158 unmodified lines
3159 case SNDRV_PCM_FORMAT_S16_LE:3159 case SNDRV_PCM_FORMAT_S16_LE:
3160 break;3160 break;
3161 case SNDRV_PCM_FORMAT_S20_3LE:3161 case SNDRV_PCM_FORMAT_S20_3LE:
3162 aif0 |= 0x40;3162 aif0 |= 0x4;
3163 break;3163 break;
3164 case SNDRV_PCM_FORMAT_S24_LE:3164 case SNDRV_PCM_FORMAT_S24_LE:
3165 aif0 |= 0x80;3165 aif0 |= 0x8;
3166 break;3166 break;
3167 case SNDRV_PCM_FORMAT_S32_LE:3167 case SNDRV_PCM_FORMAT_S32_LE:
3168 aif0 |= 0xc0;3168 aif0 |= 0xc;
3169 break;3169 break;
3170 default:3170 default:
3171 return -EINVAL;3171 return -EINVAL;
sound/soc/codecs/wm8994.c+0−5
@@ -2753,11 +2753,6 @@ static int wm8994_resume(struct snd_soc_codec *codec) · 2752 unmodified lines
2753 codec->cache_only = 0;2753 codec->cache_only = 0;
2754 }2754 }
2755 2755
2756 /* Restore the registers */
2757 ret = snd_soc_cache_sync(codec);
2758 if (ret != 0)
2759 dev_err(codec->dev, "Failed to sync cache: %d\n", ret);
2760
2761 wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);2756 wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
2762 2757
2763 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {2758 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {
sound/soc/codecs/wm_hubs.c+4−4
@@ -586,8 +586,8 @@ SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER1, 0, 1, 0), · 585 unmodified lines
586};586};
587 587
588static const struct snd_kcontrol_new line2_mix[] = {588static const struct snd_kcontrol_new line2_mix[] = {
589SOC_DAPM_SINGLE("IN2R Switch", WM8993_LINE_MIXER2, 2, 1, 0),589SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 2, 1, 0),
590SOC_DAPM_SINGLE("IN2L Switch", WM8993_LINE_MIXER2, 1, 1, 0),590SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 1, 1, 0),
591SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),591SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),
592};592};
593 593
@@ -848,8 +848,8 @@ static const struct snd_soc_dapm_route lineout1_se_routes[] = { · 254 unmodified lines
848};848};
849 849
850static const struct snd_soc_dapm_route lineout2_diff_routes[] = {850static const struct snd_soc_dapm_route lineout2_diff_routes[] = {
851 { "LINEOUT2 Mixer", "IN2L Switch", "IN2L PGA" },851 { "LINEOUT2 Mixer", "IN1L Switch", "IN1L PGA" },
852 { "LINEOUT2 Mixer", "IN2R Switch", "IN2R PGA" },852 { "LINEOUT2 Mixer", "IN1R Switch", "IN1R PGA" },
853 { "LINEOUT2 Mixer", "Output Switch", "Right Output PGA" },853 { "LINEOUT2 Mixer", "Output Switch", "Right Output PGA" },
854 854
855 { "LINEOUT2N Driver", NULL, "LINEOUT2 Mixer" },855 { "LINEOUT2N Driver", NULL, "LINEOUT2 Mixer" },
sound/soc/soc-core.c+11−0
@@ -567,6 +567,17 @@ int snd_soc_suspend(struct device *dev) · 566 unmodified lines
567 if (!codec->suspended && codec->driver->suspend) {567 if (!codec->suspended && codec->driver->suspend) {
568 switch (codec->dapm.bias_level) {568 switch (codec->dapm.bias_level) {
569 case SND_SOC_BIAS_STANDBY:569 case SND_SOC_BIAS_STANDBY:
570 /*
571 * If the CODEC is capable of idle
572 * bias off then being in STANDBY
573 * means it's doing something,
574 * otherwise fall through.
575 */
576 if (codec->dapm.idle_bias_off) {
577 dev_dbg(codec->dev,
578 "idle_bias_off CODEC on over suspend\n");
579 break;
580 }
570 case SND_SOC_BIAS_OFF:581 case SND_SOC_BIAS_OFF:
571 codec->driver->suspend(codec);582 codec->driver->suspend(codec);
572 codec->suspended = 1;583 codec->suspended = 1;