Commit ff826b2b authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
 "Just a few driver-specific fixes for ASoC and HD-audio."

* tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda - Fix no sound from ALC662 after Windows reboot
  ASoC: tlv320aic3x: Fix codec pll configure bug
  ASoC: wm2200: Add missing BCLK rate
parents 3492ee72 8663ff75
...@@ -6688,6 +6688,31 @@ static const struct alc_model_fixup alc662_fixup_models[] = { ...@@ -6688,6 +6688,31 @@ static const struct alc_model_fixup alc662_fixup_models[] = {
{} {}
}; };
static void alc662_fill_coef(struct hda_codec *codec)
{
int val, coef;
coef = alc_get_coef0(codec);
switch (codec->vendor_id) {
case 0x10ec0662:
if ((coef & 0x00f0) == 0x0030) {
val = alc_read_coef_idx(codec, 0x4); /* EAPD Ctrl */
alc_write_coef_idx(codec, 0x4, val & ~(1<<10));
}
break;
case 0x10ec0272:
case 0x10ec0273:
case 0x10ec0663:
case 0x10ec0665:
case 0x10ec0670:
case 0x10ec0671:
case 0x10ec0672:
val = alc_read_coef_idx(codec, 0xd); /* EAPD Ctrl */
alc_write_coef_idx(codec, 0xd, val | (1<<14));
break;
}
}
/* /*
*/ */
...@@ -6707,6 +6732,9 @@ static int patch_alc662(struct hda_codec *codec) ...@@ -6707,6 +6732,9 @@ static int patch_alc662(struct hda_codec *codec)
alc_fix_pll_init(codec, 0x20, 0x04, 15); alc_fix_pll_init(codec, 0x20, 0x04, 15);
spec->init_hook = alc662_fill_coef;
alc662_fill_coef(codec);
alc_pick_fixup(codec, alc662_fixup_models, alc_pick_fixup(codec, alc662_fixup_models,
alc662_fixup_tbl, alc662_fixups); alc662_fixup_tbl, alc662_fixups);
alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE);
......
...@@ -935,9 +935,7 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream, ...@@ -935,9 +935,7 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream,
} }
found: found:
data = snd_soc_read(codec, AIC3X_PLL_PROGA_REG); snd_soc_update_bits(codec, AIC3X_PLL_PROGA_REG, PLLP_MASK, pll_p);
snd_soc_write(codec, AIC3X_PLL_PROGA_REG,
data | (pll_p << PLLP_SHIFT));
snd_soc_write(codec, AIC3X_OVRF_STATUS_AND_PLLR_REG, snd_soc_write(codec, AIC3X_OVRF_STATUS_AND_PLLR_REG,
pll_r << PLLR_SHIFT); pll_r << PLLR_SHIFT);
snd_soc_write(codec, AIC3X_PLL_PROGB_REG, pll_j << PLLJ_SHIFT); snd_soc_write(codec, AIC3X_PLL_PROGB_REG, pll_j << PLLJ_SHIFT);
......
...@@ -166,6 +166,7 @@ ...@@ -166,6 +166,7 @@
/* PLL registers bitfields */ /* PLL registers bitfields */
#define PLLP_SHIFT 0 #define PLLP_SHIFT 0
#define PLLP_MASK 7
#define PLLQ_SHIFT 3 #define PLLQ_SHIFT 3
#define PLLR_SHIFT 0 #define PLLR_SHIFT 0
#define PLLJ_SHIFT 2 #define PLLJ_SHIFT 2
......
...@@ -1491,6 +1491,7 @@ static int wm2200_bclk_rates_dat[WM2200_NUM_BCLK_RATES] = { ...@@ -1491,6 +1491,7 @@ static int wm2200_bclk_rates_dat[WM2200_NUM_BCLK_RATES] = {
static int wm2200_bclk_rates_cd[WM2200_NUM_BCLK_RATES] = { static int wm2200_bclk_rates_cd[WM2200_NUM_BCLK_RATES] = {
5644800, 5644800,
3763200,
2882400, 2882400,
1881600, 1881600,
1411200, 1411200,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment