[alsa-devel] Fwd: Front speakers doesn't work in multichannel output, regression in ALC888
Raymond Yau
superquad.vortex2 at gmail.com
Sat Jul 11 03:18:30 CEST 2015
> >
> >
http://www.alsa-project.org/db/?f=30b3f0087374b914a20dbe20a618fb892a5d6fd5
> >
> > > > Are there any offical specificaion ?
> > > >
> > > > So far most review only mention stereo speakers and subwoofer, the
> >
> > service
> >
> > > > guide only show how to replace two internal speakers
> > >
> > > Service manual mentions
> > >
> > > "Dolby®-certified surround sound system with two built-in stereo
> >
> > speakers and
> >
> > > one subwoofer supporting low-frequency effects"
> > >
> > > so all additional channels what I'm hearing in Windows is emulated. I
hope
> > > that it is clear now that my laptop has two internal speakers and one
> > > subwoofer.
> >
> >
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pc
> > i/hda?id=8e38395360844806041ea69ab9690f5f174bc40c
> >
> > You need to define your 2.1 chmap if the subwoofer only use left channel
> >
> > Compiling and running PulseAudio from git
> >
> > http://colin.guthr.ie/2010/09/compiling-and-running-pulseaudio-from-git/
>
> In Fedora 22 workaround with setting "Line out (front)" for 0x15 pin
doesn't
> work.
>
> Sound on my system is totally fucked up.
http://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/src/modules/alsa/mixer/paths/analog-output-lineout.conf
Are you sure that it is alsa driver bug since pulseaudio seem not using
line out jack to mute internal speakers ?
by adding new hint alt_config , you can use alt_config to select different
set of pin config
diff --git a/sound/pci/hda/hda_auto_parser.c
b/sound/pci/hda/hda_auto_parser.c
index 03b7399..683a0ab 100644
--- a/sound/pci/hda/hda_auto_parser.c
+++ b/sound/pci/hda/hda_auto_parser.c
@@ -952,6 +952,7 @@ void snd_hda_pick_fixup(struct hda_codec *codec,
const struct snd_pci_quirk *q;
int id = HDA_FIXUP_ID_NOT_SET;
const char *name = NULL;
+ int i;
if (codec->fixup_id != HDA_FIXUP_ID_NOT_SET)
return;
@@ -966,6 +967,9 @@ void snd_hda_pick_fixup(struct hda_codec *codec,
return;
}
+ if (!snd_hda_get_int_hint(codec, "alt_config", &i))
+ codec->alt_config = i;
+
if (codec->modelname && models) {
while (models->name) {
if (!strcmp(codec->modelname, models->name)) {
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 8e02cdf..f406835 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1914,6 +1914,31 @@ static void alc889_fixup_mba21_vref(struct hda_codec
*codec,
alc889_fixup_mac_pins(codec, nids, ARRAY_SIZE(nids));
}
+static void alc888_fixup_acer_aspire_4930g(struct hda_codec *codec,
+ const struct hda_fixup *fix, int action)
+{
+ struct hda_pintbl subwoofer_config[] = {
+ { 0x16, 0x90170111 }, /* internal subwoofer */
+ {}
+ };
+ struct hda_pintbl alt_config[] = {
+ { 0x15, 0x02014010},
+ { 0x1a, 0x02014011},
+ { 0x18, 0x02014012},
+ {}
+ };
+ snd_hda_apply_pincfgs(codec, subwoofer_config);
+ switch(codec->alt_config){
+ case 1:
+ codec_info(codec, "5.1 External Speaker\n");
+ snd_hda_apply_pincfgs(codec, alt_config);
+ break;
+ default:
+ codec_info(codec, "use [Hint]\nalt_config=1 for 5.1 External
Speaker\n");
+ break;
+ }
+}
+
/* Don't take HP output as primary
* Strangely, the speaker output doesn't work on Vaio Z and some Vaio
* all-in-one desktop PCs (for example VGC-LN51JGB) through DAC 0x05
@@ -2048,12 +2073,8 @@ static const struct hda_fixup alc882_fixups[] = {
.v.func = alc889_fixup_coef,
},
[ALC882_FIXUP_ACER_ASPIRE_4930G] = {
- .type = HDA_FIXUP_PINS,
- .v.pins = (const struct hda_pintbl[]) {
- { 0x16, 0x99130111 }, /* CLFE speaker */
- { 0x17, 0x99130112 }, /* surround speaker */
- { }
- },
+ .type = HDA_FIXUP_FUNC,
+ .v.func = alc888_fixup_acer_aspire_4930g,
.chained = true,
.chain_id = ALC882_FIXUP_GPIO1,
},
More information about the Alsa-devel
mailing list