diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 23 | ||||
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 4 | ||||
-rw-r--r-- | sound/pci/hda/patch_via.c | 3 | ||||
-rw-r--r-- | sound/pci/intel8x0.c | 6 | ||||
-rw-r--r-- | sound/soc/sh/fsi.c | 6 |
5 files changed, 35 insertions, 7 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 9350f3c3bdf8..1358987c49d8 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -4374,6 +4374,7 @@ enum { | |||
4374 | ALC882_FIXUP_ACER_ASPIRE_8930G, | 4374 | ALC882_FIXUP_ACER_ASPIRE_8930G, |
4375 | ALC882_FIXUP_ASPIRE_8930G_VERBS, | 4375 | ALC882_FIXUP_ASPIRE_8930G_VERBS, |
4376 | ALC885_FIXUP_MACPRO_GPIO, | 4376 | ALC885_FIXUP_MACPRO_GPIO, |
4377 | ALC889_FIXUP_DAC_ROUTE, | ||
4377 | }; | 4378 | }; |
4378 | 4379 | ||
4379 | static void alc889_fixup_coef(struct hda_codec *codec, | 4380 | static void alc889_fixup_coef(struct hda_codec *codec, |
@@ -4427,6 +4428,23 @@ static void alc885_fixup_macpro_gpio(struct hda_codec *codec, | |||
4427 | alc882_gpio_mute(codec, 1, 0); | 4428 | alc882_gpio_mute(codec, 1, 0); |
4428 | } | 4429 | } |
4429 | 4430 | ||
4431 | /* Fix the connection of some pins for ALC889: | ||
4432 | * At least, Acer Aspire 5935 shows the connections to DAC3/4 don't | ||
4433 | * work correctly (bko#42740) | ||
4434 | */ | ||
4435 | static void alc889_fixup_dac_route(struct hda_codec *codec, | ||
4436 | const struct alc_fixup *fix, int action) | ||
4437 | { | ||
4438 | if (action == ALC_FIXUP_ACT_PRE_PROBE) { | ||
4439 | hda_nid_t conn1[2] = { 0x0c, 0x0d }; | ||
4440 | hda_nid_t conn2[2] = { 0x0e, 0x0f }; | ||
4441 | snd_hda_override_conn_list(codec, 0x14, 2, conn1); | ||
4442 | snd_hda_override_conn_list(codec, 0x15, 2, conn1); | ||
4443 | snd_hda_override_conn_list(codec, 0x18, 2, conn2); | ||
4444 | snd_hda_override_conn_list(codec, 0x1a, 2, conn2); | ||
4445 | } | ||
4446 | } | ||
4447 | |||
4430 | static const struct alc_fixup alc882_fixups[] = { | 4448 | static const struct alc_fixup alc882_fixups[] = { |
4431 | [ALC882_FIXUP_ABIT_AW9D_MAX] = { | 4449 | [ALC882_FIXUP_ABIT_AW9D_MAX] = { |
4432 | .type = ALC_FIXUP_PINS, | 4450 | .type = ALC_FIXUP_PINS, |
@@ -4574,6 +4592,10 @@ static const struct alc_fixup alc882_fixups[] = { | |||
4574 | .type = ALC_FIXUP_FUNC, | 4592 | .type = ALC_FIXUP_FUNC, |
4575 | .v.func = alc885_fixup_macpro_gpio, | 4593 | .v.func = alc885_fixup_macpro_gpio, |
4576 | }, | 4594 | }, |
4595 | [ALC889_FIXUP_DAC_ROUTE] = { | ||
4596 | .type = ALC_FIXUP_FUNC, | ||
4597 | .v.func = alc889_fixup_dac_route, | ||
4598 | }, | ||
4577 | }; | 4599 | }; |
4578 | 4600 | ||
4579 | static const struct snd_pci_quirk alc882_fixup_tbl[] = { | 4601 | static const struct snd_pci_quirk alc882_fixup_tbl[] = { |
@@ -4598,6 +4620,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { | |||
4598 | SND_PCI_QUIRK(0x1025, 0x0142, "Acer Aspire 7730G", | 4620 | SND_PCI_QUIRK(0x1025, 0x0142, "Acer Aspire 7730G", |
4599 | ALC882_FIXUP_ACER_ASPIRE_4930G), | 4621 | ALC882_FIXUP_ACER_ASPIRE_4930G), |
4600 | SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", ALC882_FIXUP_PB_M5210), | 4622 | SND_PCI_QUIRK(0x1025, 0x0155, "Packard-Bell M5120", ALC882_FIXUP_PB_M5210), |
4623 | SND_PCI_QUIRK(0x1025, 0x0259, "Acer Aspire 5935", ALC889_FIXUP_DAC_ROUTE), | ||
4601 | SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", ALC882_FIXUP_ACER_ASPIRE_7736), | 4624 | SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", ALC882_FIXUP_ACER_ASPIRE_7736), |
4602 | SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD), | 4625 | SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD), |
4603 | SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V), | 4626 | SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V), |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 948f0be2f4f3..6345df131a00 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -5078,9 +5078,9 @@ static int stac92xx_update_led_status(struct hda_codec *codec) | |||
5078 | spec->gpio_dir, spec->gpio_data); | 5078 | spec->gpio_dir, spec->gpio_data); |
5079 | } else { | 5079 | } else { |
5080 | notmtd_lvl = spec->gpio_led_polarity ? | 5080 | notmtd_lvl = spec->gpio_led_polarity ? |
5081 | AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_GRD; | 5081 | AC_PINCTL_VREF_50 : AC_PINCTL_VREF_GRD; |
5082 | muted_lvl = spec->gpio_led_polarity ? | 5082 | muted_lvl = spec->gpio_led_polarity ? |
5083 | AC_PINCTL_VREF_GRD : AC_PINCTL_VREF_HIZ; | 5083 | AC_PINCTL_VREF_GRD : AC_PINCTL_VREF_50; |
5084 | spec->vref_led = muted ? muted_lvl : notmtd_lvl; | 5084 | spec->vref_led = muted ? muted_lvl : notmtd_lvl; |
5085 | stac_vrefout_set(codec, spec->vref_mute_led_nid, | 5085 | stac_vrefout_set(codec, spec->vref_mute_led_nid, |
5086 | spec->vref_led); | 5086 | spec->vref_led); |
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 284e311040fe..dff9a00ee8fb 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c | |||
@@ -666,6 +666,9 @@ static void via_auto_init_analog_input(struct hda_codec *codec) | |||
666 | /* init input-src */ | 666 | /* init input-src */ |
667 | for (i = 0; i < spec->num_adc_nids; i++) { | 667 | for (i = 0; i < spec->num_adc_nids; i++) { |
668 | int adc_idx = spec->inputs[spec->cur_mux[i]].adc_idx; | 668 | int adc_idx = spec->inputs[spec->cur_mux[i]].adc_idx; |
669 | /* secondary ADCs must have the unique MUX */ | ||
670 | if (i > 0 && !spec->mux_nids[i]) | ||
671 | break; | ||
669 | if (spec->mux_nids[adc_idx]) { | 672 | if (spec->mux_nids[adc_idx]) { |
670 | int mux_idx = spec->inputs[spec->cur_mux[i]].mux_idx; | 673 | int mux_idx = spec->inputs[spec->cur_mux[i]].mux_idx; |
671 | snd_hda_codec_write(codec, spec->mux_nids[adc_idx], 0, | 674 | snd_hda_codec_write(codec, spec->mux_nids[adc_idx], 0, |
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 9f3b01bb72c8..e0a4263baa20 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c | |||
@@ -2102,6 +2102,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = { | |||
2102 | }, | 2102 | }, |
2103 | { | 2103 | { |
2104 | .subvendor = 0x161f, | 2104 | .subvendor = 0x161f, |
2105 | .subdevice = 0x202f, | ||
2106 | .name = "Gateway M520", | ||
2107 | .type = AC97_TUNE_INV_EAPD | ||
2108 | }, | ||
2109 | { | ||
2110 | .subvendor = 0x161f, | ||
2105 | .subdevice = 0x203a, | 2111 | .subdevice = 0x203a, |
2106 | .name = "Gateway 4525GZ", /* AD1981B */ | 2112 | .name = "Gateway 4525GZ", /* AD1981B */ |
2107 | .type = AC97_TUNE_INV_EAPD | 2113 | .type = AC97_TUNE_INV_EAPD |
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c index db6c89a28bda..ea4a82d01160 100644 --- a/sound/soc/sh/fsi.c +++ b/sound/soc/sh/fsi.c | |||
@@ -1152,12 +1152,8 @@ static snd_pcm_uframes_t fsi_pointer(struct snd_pcm_substream *substream) | |||
1152 | { | 1152 | { |
1153 | struct fsi_priv *fsi = fsi_get_priv(substream); | 1153 | struct fsi_priv *fsi = fsi_get_priv(substream); |
1154 | struct fsi_stream *io = fsi_get_stream(fsi, fsi_is_play(substream)); | 1154 | struct fsi_stream *io = fsi_get_stream(fsi, fsi_is_play(substream)); |
1155 | int samples_pos = io->buff_sample_pos - 1; | ||
1156 | 1155 | ||
1157 | if (samples_pos < 0) | 1156 | return fsi_sample2frame(fsi, io->buff_sample_pos); |
1158 | samples_pos = 0; | ||
1159 | |||
1160 | return fsi_sample2frame(fsi, samples_pos); | ||
1161 | } | 1157 | } |
1162 | 1158 | ||
1163 | static struct snd_pcm_ops fsi_pcm_ops = { | 1159 | static struct snd_pcm_ops fsi_pcm_ops = { |