sound fixes for 3.3-rc4
Basically all small fixes suited as rc4: a few HD-audio regression fixes, a stable fix for an old Dell laptop with intel8x0, and a simple fix for ASoC fsi. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iQIcBAABAgAGBQJPOjNOAAoJEGwxgFQ9KSmkVq4P/j3wXouR03as78Y97WtvO3xw S6dFyiR12oNVhEFcSZ/nZxVt7NwxeorhTkuM4UsvmrWYZVMRGYbYCKiIBMwzovnF ln2toFEf19uy2vZ66qOdz3GyCbjNCq2kXEOFgD9z+9ICQzn35nDh833NMJ4thDKQ QemDy+pU0EChm//O32kuA0OZ0ZR8EDIQhwmPIBEmWzxD0jq95ozbKzxFtXUpnNhJ N4iubolY2i2c40YlyPWu9m7gyuAC4oxEFa4/GXrBUm1Yxt5odYaVllYru0OZe+vh 1bdobG7SQg8Vs/D8oRwY2gbZV10s6kU98Rgl1q2GVbHEtOC5dI2jA2a6Vx+Utdof 0uwvk7P+FhyW0VFOkQDwMbs1K3bEoQfrtA+pU/IzvLtWoL1PuzLdEfPuN2G7llpV sxJcnrl2/10A3YkmOTGiIr0aR1C/HcJ4NWK/lbnr3c5hPRxoqmRR7BhWrWFkiMlu yf2KOVZ3T7MZCHCmFZmSTDvUx/KEI+VDYLLIg1/Edw4v8Wp14glPFziSpMrgz1mE qLVpvP4uDG2DtFaTMhYjjQLPyWca317fJ4ILxLs6g6Kn7nuM3EXZo4FNNwJ3m6Rd HQxspsnD8YeE1muUpBKGhgcrx+6e9t3aY3CkWOfqweYP70Clf5yDrkGabaDFmXCT wqfiGvrrKTWejCAHoyaw =Dtrw -----END PGP SIGNATURE----- Merge tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound sound fixes for 3.3-rc4 Basically all small fixes suited as rc4: a few HD-audio regression fixes, a stable fix for an old Dell laptop with intel8x0, and a simple fix for ASoC fsi. * tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: intel8x0: Fix default inaudible sound on Gateway M520 ALSA: hda - Fix silent speaker output on Acer Aspire 6935 ALSA: hda - Fix initialization of secondary capture source on VT1705 ASoC: fsi: fixup fsi_pointer() calculation method ALSA: hda - Fix mute-LED VREF value for new HP laptops
This commit is contained in:
commit
13d261932b
5 changed files with 35 additions and 7 deletions
|
@ -4374,6 +4374,7 @@ enum {
|
||||||
ALC882_FIXUP_ACER_ASPIRE_8930G,
|
ALC882_FIXUP_ACER_ASPIRE_8930G,
|
||||||
ALC882_FIXUP_ASPIRE_8930G_VERBS,
|
ALC882_FIXUP_ASPIRE_8930G_VERBS,
|
||||||
ALC885_FIXUP_MACPRO_GPIO,
|
ALC885_FIXUP_MACPRO_GPIO,
|
||||||
|
ALC889_FIXUP_DAC_ROUTE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void alc889_fixup_coef(struct hda_codec *codec,
|
static void alc889_fixup_coef(struct hda_codec *codec,
|
||||||
|
@ -4427,6 +4428,23 @@ static void alc885_fixup_macpro_gpio(struct hda_codec *codec,
|
||||||
alc882_gpio_mute(codec, 1, 0);
|
alc882_gpio_mute(codec, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fix the connection of some pins for ALC889:
|
||||||
|
* At least, Acer Aspire 5935 shows the connections to DAC3/4 don't
|
||||||
|
* work correctly (bko#42740)
|
||||||
|
*/
|
||||||
|
static void alc889_fixup_dac_route(struct hda_codec *codec,
|
||||||
|
const struct alc_fixup *fix, int action)
|
||||||
|
{
|
||||||
|
if (action == ALC_FIXUP_ACT_PRE_PROBE) {
|
||||||
|
hda_nid_t conn1[2] = { 0x0c, 0x0d };
|
||||||
|
hda_nid_t conn2[2] = { 0x0e, 0x0f };
|
||||||
|
snd_hda_override_conn_list(codec, 0x14, 2, conn1);
|
||||||
|
snd_hda_override_conn_list(codec, 0x15, 2, conn1);
|
||||||
|
snd_hda_override_conn_list(codec, 0x18, 2, conn2);
|
||||||
|
snd_hda_override_conn_list(codec, 0x1a, 2, conn2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const struct alc_fixup alc882_fixups[] = {
|
static const struct alc_fixup alc882_fixups[] = {
|
||||||
[ALC882_FIXUP_ABIT_AW9D_MAX] = {
|
[ALC882_FIXUP_ABIT_AW9D_MAX] = {
|
||||||
.type = ALC_FIXUP_PINS,
|
.type = ALC_FIXUP_PINS,
|
||||||
|
@ -4574,6 +4592,10 @@ static const struct alc_fixup alc882_fixups[] = {
|
||||||
.type = ALC_FIXUP_FUNC,
|
.type = ALC_FIXUP_FUNC,
|
||||||
.v.func = alc885_fixup_macpro_gpio,
|
.v.func = alc885_fixup_macpro_gpio,
|
||||||
},
|
},
|
||||||
|
[ALC889_FIXUP_DAC_ROUTE] = {
|
||||||
|
.type = ALC_FIXUP_FUNC,
|
||||||
|
.v.func = alc889_fixup_dac_route,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
||||||
|
@ -4598,6 +4620,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
||||||
SND_PCI_QUIRK(0x1025, 0x0142, "Acer Aspire 7730G",
|
SND_PCI_QUIRK(0x1025, 0x0142, "Acer Aspire 7730G",
|
||||||
ALC882_FIXUP_ACER_ASPIRE_4930G),
|
ALC882_FIXUP_ACER_ASPIRE_4930G),
|
||||||
SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", ALC882_FIXUP_PB_M5210),
|
SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", ALC882_FIXUP_PB_M5210),
|
||||||
|
SND_PCI_QUIRK(0x1025, 0x0259, "Acer Aspire 5935", ALC889_FIXUP_DAC_ROUTE),
|
||||||
SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", ALC882_FIXUP_ACER_ASPIRE_7736),
|
SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", ALC882_FIXUP_ACER_ASPIRE_7736),
|
||||||
SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD),
|
SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD),
|
||||||
SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V),
|
SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V),
|
||||||
|
|
|
@ -5078,9 +5078,9 @@ static int stac92xx_update_led_status(struct hda_codec *codec)
|
||||||
spec->gpio_dir, spec->gpio_data);
|
spec->gpio_dir, spec->gpio_data);
|
||||||
} else {
|
} else {
|
||||||
notmtd_lvl = spec->gpio_led_polarity ?
|
notmtd_lvl = spec->gpio_led_polarity ?
|
||||||
AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_GRD;
|
AC_PINCTL_VREF_50 : AC_PINCTL_VREF_GRD;
|
||||||
muted_lvl = spec->gpio_led_polarity ?
|
muted_lvl = spec->gpio_led_polarity ?
|
||||||
AC_PINCTL_VREF_GRD : AC_PINCTL_VREF_HIZ;
|
AC_PINCTL_VREF_GRD : AC_PINCTL_VREF_50;
|
||||||
spec->vref_led = muted ? muted_lvl : notmtd_lvl;
|
spec->vref_led = muted ? muted_lvl : notmtd_lvl;
|
||||||
stac_vrefout_set(codec, spec->vref_mute_led_nid,
|
stac_vrefout_set(codec, spec->vref_mute_led_nid,
|
||||||
spec->vref_led);
|
spec->vref_led);
|
||||||
|
|
|
@ -666,6 +666,9 @@ static void via_auto_init_analog_input(struct hda_codec *codec)
|
||||||
/* init input-src */
|
/* init input-src */
|
||||||
for (i = 0; i < spec->num_adc_nids; i++) {
|
for (i = 0; i < spec->num_adc_nids; i++) {
|
||||||
int adc_idx = spec->inputs[spec->cur_mux[i]].adc_idx;
|
int adc_idx = spec->inputs[spec->cur_mux[i]].adc_idx;
|
||||||
|
/* secondary ADCs must have the unique MUX */
|
||||||
|
if (i > 0 && !spec->mux_nids[i])
|
||||||
|
break;
|
||||||
if (spec->mux_nids[adc_idx]) {
|
if (spec->mux_nids[adc_idx]) {
|
||||||
int mux_idx = spec->inputs[spec->cur_mux[i]].mux_idx;
|
int mux_idx = spec->inputs[spec->cur_mux[i]].mux_idx;
|
||||||
snd_hda_codec_write(codec, spec->mux_nids[adc_idx], 0,
|
snd_hda_codec_write(codec, spec->mux_nids[adc_idx], 0,
|
||||||
|
|
|
@ -2100,6 +2100,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
|
||||||
.name = "MSI P4 ATX 645 Ultra",
|
.name = "MSI P4 ATX 645 Ultra",
|
||||||
.type = AC97_TUNE_HP_ONLY
|
.type = AC97_TUNE_HP_ONLY
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.subvendor = 0x161f,
|
||||||
|
.subdevice = 0x202f,
|
||||||
|
.name = "Gateway M520",
|
||||||
|
.type = AC97_TUNE_INV_EAPD
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.subvendor = 0x161f,
|
.subvendor = 0x161f,
|
||||||
.subdevice = 0x203a,
|
.subdevice = 0x203a,
|
||||||
|
|
|
@ -1152,12 +1152,8 @@ static snd_pcm_uframes_t fsi_pointer(struct snd_pcm_substream *substream)
|
||||||
{
|
{
|
||||||
struct fsi_priv *fsi = fsi_get_priv(substream);
|
struct fsi_priv *fsi = fsi_get_priv(substream);
|
||||||
struct fsi_stream *io = fsi_get_stream(fsi, fsi_is_play(substream));
|
struct fsi_stream *io = fsi_get_stream(fsi, fsi_is_play(substream));
|
||||||
int samples_pos = io->buff_sample_pos - 1;
|
|
||||||
|
|
||||||
if (samples_pos < 0)
|
return fsi_sample2frame(fsi, io->buff_sample_pos);
|
||||||
samples_pos = 0;
|
|
||||||
|
|
||||||
return fsi_sample2frame(fsi, samples_pos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct snd_pcm_ops fsi_pcm_ops = {
|
static struct snd_pcm_ops fsi_pcm_ops = {
|
||||||
|
|
Loading…
Add table
Reference in a new issue