ACK: [SRU][OEM-B][PATCH 1/1] UBUNTU: SAUCE: ALSA: hda - let hs_mic be picked ahead of hp_mic

Stefan Bader stefan.bader at canonical.com
Fri Jul 3 07:24:57 UTC 2020


On 03.07.20 04:21, Hui Wang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1882248
> 
> We have a Dell AIO, there is neither internal speaker nor internal
> mic, only a multi-function audio jack on it.
> 
> Users reported that after freshly installing the OS and plug
> a headset to the audio jack, the headset can't output sound. I
> reproduced this bug, at that moment, the Input Source is as below:
> Simple mixer control 'Input Source',0
>   Capabilities: cenum
>   Items: 'Headphone Mic' 'Headset Mic'
>   Item0: 'Headphone Mic'
> 
> That is because the patch_realtek will set this audio jack as mic_in
> mode if Input Source's value is hp_mic.
> 
> If it is not fresh installing, this issue will not happen since the
> systemd will run alsactl restore -f /var/lib/alsa/asound.state, this
> will set the 'Input Source' according to history value.
> 
> If there is internal speaker or internal mic, this issue will not
> happen since there is valid sink/source in the pulseaudio, the PA will
> set the 'Input Source' according to active_port.
> 
> To fix this issue, change the parser function to let the hs_mic be
> stored ahead of hp_mic.
> 
> Cc: stable at vger.kernel.org
> Signed-off-by: Hui Wang <hui.wang at canonical.com>
> Link: https://lore.kernel.org/r/20200625083833.11264-1-hui.wang@canonical.com
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> (cherry picked from commit 6a6ca7881b1ab1c13fe0d70bae29211a65dd90de
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git)
> Signed-off-by: Hui Wang <hui.wang at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> ---
>  sound/pci/hda/hda_auto_parser.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/sound/pci/hda/hda_auto_parser.c b/sound/pci/hda/hda_auto_parser.c
> index 7402f9c39612..21bf11e75bee 100644
> --- a/sound/pci/hda/hda_auto_parser.c
> +++ b/sound/pci/hda/hda_auto_parser.c
> @@ -76,6 +76,12 @@ static int compare_input_type(const void *ap, const void *bp)
>  	if (a->type != b->type)
>  		return (int)(a->type - b->type);
>  
> +	/* If has both hs_mic and hp_mic, pick the hs_mic ahead of hp_mic. */
> +	if (a->is_headset_mic && b->is_headphone_mic)
> +		return -1; /* don't swap */
> +	else if (a->is_headphone_mic && b->is_headset_mic)
> +		return 1; /* swap */
> +
>  	/* In case one has boost and the other one has not,
>  	   pick the one with boost first. */
>  	return (int)(b->has_boost_on_pin - a->has_boost_on_pin);
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20200703/fbd0ffa8/attachment.sig>


More information about the kernel-team mailing list