At Thu, 10 Oct 2013 09:01:25 +0200,
David Henningsson wrote:
> 
> In the case where we have both line out and more than stereo speakers,
> the speaker DACs will end up in extra_out_nid.
> In fact, AFAIU, speakers are the only ones that can end up in extra_out_nid,
> and if we have several of those, they should be surround outputs
> rather than copy front.
> 
> BugLink: https://bugs.launchpad.net/bugs/1236965
> Signed-off-by: David Henningsson <david.hennings...@canonical.com>
> ---
>  sound/pci/hda/hda_codec.c |   19 ++++++++++++++-----
>  1 file changed, 14 insertions(+), 5 deletions(-)
> 
> Notes:
>  * Thanks to Raymond Yau for the pointer
>  * Not tested (yet), except in hda-emu
>  * Not sure if this should be sent to stable or not, given that it is a 
> change of behaviour
>  * Alsainfo available here:
>    
> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1236965/+attachment/3867946/+files/alsaInfoWhenAudioPlaybackFailing.txt

Thanks, I applied this to for-next branch, as this is the behavior
fix.  The copy of front channels are intentional in the current code,
so the patch isn't a "fix" but rather an enhancement, IMO.


Takashi

> 
> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
> index 5b6c4e3..68801ba 100644
> --- a/sound/pci/hda/hda_codec.c
> +++ b/sound/pci/hda/hda_codec.c
> @@ -5395,11 +5395,6 @@ int snd_hda_multi_out_analog_prepare(struct hda_codec 
> *codec,
>                       snd_hda_codec_setup_stream(codec,
>                                                  mout->hp_out_nid[i],
>                                                  stream_tag, 0, format);
> -     for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++)
> -             if (!mout->no_share_stream && mout->extra_out_nid[i])
> -                     snd_hda_codec_setup_stream(codec,
> -                                                mout->extra_out_nid[i],
> -                                                stream_tag, 0, format);
>  
>       /* surrounds */
>       for (i = 1; i < mout->num_dacs; i++) {
> @@ -5410,6 +5405,20 @@ int snd_hda_multi_out_analog_prepare(struct hda_codec 
> *codec,
>                       snd_hda_codec_setup_stream(codec, nids[i], stream_tag,
>                                                  0, format);
>       }
> +
> +     /* extra surrounds */
> +     for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++) {
> +             int ch = 0;
> +             if (!mout->extra_out_nid[i])
> +                     break;
> +             if (chs >= (i + 1) * 2)
> +                     ch = i * 2;
> +             else if (!mout->no_share_stream)
> +                     break;
> +             snd_hda_codec_setup_stream(codec, mout->extra_out_nid[i],
> +                                        stream_tag, ch, format);
> +     }
> +
>       return 0;
>  }
>  EXPORT_SYMBOL_HDA(snd_hda_multi_out_analog_prepare);
> -- 
> 1.7.9.5
>

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1236965

Title:
  pulseaudio does not recognize internal speakers [P180HMx, Realtek
  ALC892, Speaker, Internal] volume slider problem

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1236965/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to