mirror of
https://github.com/torvalds/linux
synced 2024-09-06 18:01:05 +00:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ALSA: hda - Fix conflict of Mic Boot controls ALSA: HDA: Enable subwoofer on Asus G73Jw ALSA: HDA: Fix auto-mute on Lenovo Edge 14 ASoC: Fix bias power down of non-DAPM codec ASoC: WM8580: Fix R8 initial value ASoC: fix deemphasis control in wm8904/55/60 codecs
This commit is contained in:
commit
74280817e5
|
@ -10830,7 +10830,8 @@ static int alc_auto_add_mic_boost(struct hda_codec *codec)
|
|||
{
|
||||
struct alc_spec *spec = codec->spec;
|
||||
struct auto_pin_cfg *cfg = &spec->autocfg;
|
||||
int i, err;
|
||||
int i, err, type;
|
||||
int type_idx = 0;
|
||||
hda_nid_t nid;
|
||||
|
||||
for (i = 0; i < cfg->num_inputs; i++) {
|
||||
|
@ -10839,9 +10840,15 @@ static int alc_auto_add_mic_boost(struct hda_codec *codec)
|
|||
nid = cfg->inputs[i].pin;
|
||||
if (get_wcaps(codec, nid) & AC_WCAP_IN_AMP) {
|
||||
char label[32];
|
||||
type = cfg->inputs[i].type;
|
||||
if (i > 0 && type == cfg->inputs[i - 1].type)
|
||||
type_idx++;
|
||||
else
|
||||
type_idx = 0;
|
||||
snprintf(label, sizeof(label), "%s Boost",
|
||||
hda_get_autocfg_input_label(codec, cfg, i));
|
||||
err = add_control(spec, ALC_CTL_WIDGET_VOL, label, 0,
|
||||
err = add_control(spec, ALC_CTL_WIDGET_VOL, label,
|
||||
type_idx,
|
||||
HDA_COMPOSE_AMP_VAL(nid, 3, 0, HDA_INPUT));
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
@ -14800,6 +14807,8 @@ static int alc269_resume(struct hda_codec *codec)
|
|||
enum {
|
||||
ALC269_FIXUP_SONY_VAIO,
|
||||
ALC269_FIXUP_DELL_M101Z,
|
||||
ALC269_FIXUP_LENOVO_EDGE14,
|
||||
ALC269_FIXUP_ASUS_G73JW,
|
||||
};
|
||||
|
||||
static const struct alc_fixup alc269_fixups[] = {
|
||||
|
@ -14817,11 +14826,22 @@ static const struct alc_fixup alc269_fixups[] = {
|
|||
{}
|
||||
}
|
||||
},
|
||||
[ALC269_FIXUP_LENOVO_EDGE14] = {
|
||||
.sku = ALC_FIXUP_SKU_IGNORE,
|
||||
},
|
||||
[ALC269_FIXUP_ASUS_G73JW] = {
|
||||
.pins = (const struct alc_pincfg[]) {
|
||||
{ 0x17, 0x99130111 }, /* subwoofer */
|
||||
{ }
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
static struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
|
||||
SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
|
||||
SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_LENOVO_EDGE14),
|
||||
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@
|
|||
static const u16 wm8580_reg[] = {
|
||||
0x0121, 0x017e, 0x007d, 0x0014, /*R3*/
|
||||
0x0121, 0x017e, 0x007d, 0x0194, /*R7*/
|
||||
0x001c, 0x0002, 0x0002, 0x00c2, /*R11*/
|
||||
0x0010, 0x0002, 0x0002, 0x00c2, /*R11*/
|
||||
0x0182, 0x0082, 0x000a, 0x0024, /*R15*/
|
||||
0x0009, 0x0000, 0x00ff, 0x0000, /*R19*/
|
||||
0x00ff, 0x00ff, 0x00ff, 0x00ff, /*R23*/
|
||||
|
|
|
@ -818,7 +818,8 @@ static int wm8904_get_deemph(struct snd_kcontrol *kcontrol,
|
|||
struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
|
||||
struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
return wm8904->deemph;
|
||||
ucontrol->value.enumerated.item[0] = wm8904->deemph;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int wm8904_put_deemph(struct snd_kcontrol *kcontrol,
|
||||
|
|
|
@ -380,7 +380,8 @@ static int wm8955_get_deemph(struct snd_kcontrol *kcontrol,
|
|||
struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
|
||||
struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
return wm8955->deemph;
|
||||
ucontrol->value.enumerated.item[0] = wm8955->deemph;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int wm8955_put_deemph(struct snd_kcontrol *kcontrol,
|
||||
|
|
|
@ -138,7 +138,8 @@ static int wm8960_get_deemph(struct snd_kcontrol *kcontrol,
|
|||
struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
|
||||
struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
return wm8960->deemph;
|
||||
ucontrol->value.enumerated.item[0] = wm8960->deemph;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int wm8960_put_deemph(struct snd_kcontrol *kcontrol,
|
||||
|
|
|
@ -944,6 +944,9 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
|
|||
case SND_SOC_DAPM_STREAM_RESUME:
|
||||
sys_power = 1;
|
||||
break;
|
||||
case SND_SOC_DAPM_STREAM_STOP:
|
||||
sys_power = !!codec->active;
|
||||
break;
|
||||
case SND_SOC_DAPM_STREAM_SUSPEND:
|
||||
sys_power = 0;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue