[alsa-devel] No audio output via built-in speaker on a MacMini while headphone jack is plugged in
Takashi Iwai
tiwai at suse.de
Tue Mar 15 16:24:55 CET 2016
On Mon, 14 Mar 2016 19:39:26 +0100,
moosotc at gmail.com wrote:
>
> Takashi Iwai <tiwai at suse.de> writes:
>
> > On Mon, 14 Mar 2016 18:16:11 +0100,
> > moosotc at gmail.com wrote:
> >>
> >> Takashi Iwai <tiwai at suse.de> writes:
> >>
> >> > On Mon, 14 Mar 2016 09:11:10 +0100,
> >> > moosotc at gmail.com wrote:
> >> >>
> >> >> [1 Output of alsa-info.sh <application/octet-stream (base64)>]
> >> >>
> >> >>
> >> >> `amixer set Speaker unmute' makes no difference
> >> >> physically unplugging the headphone jack from the socket does, i.e.
> >> >> `amixer set Speaker (un)mute' does the right thing.
> >> >
> >> > Could you give more details? The description is too concise and
> >> > vague.
> >> >
> >>
> >> I have a script to toggles sound emission by the built-in speaker:
> >>
> >> #!/bin/sh
> >> amixer get Speaker | grep -q "\[on\]" && onoff="mute" || onoff="unmute"
> >> amixer set Speaker $onoff
> >> echo "$onoff"
> >>
> >> As we speak:
> >>
> >> `--> atoggle
> >> Simple mixer control 'Speaker',0
> >> Capabilities: pvolume pswitch
> >> Playback channels: Front Left - Front Right
> >> Limits: Playback 0 - 127
> >> Mono:
> >> Front Left: Playback 127 [100%] [0.00dB] [on]
> >> Front Right: Playback 127 [100%] [0.00dB] [on]
> >> unmute
> >>
> >> This setting is ignored when (i.e. speaker is always silent) if the
> >> headphone jack is plugged in.
> >>
> >> This used to work in prior kernels, I believe I've shared my bisection
> >> results with you in one of the earlier (personal) e-mails, if there's a
> >> better way to achieve the desired result (i.e. control sound emission by
> >> the speaker regardless of the headphone jack plug-status) I'll happily
> >> use that instead.
> >
> > As mentioned, make sure that you disable auto-mute mode:
> > amixer set "Auto-Mute Mode" "Disabled"
> >
> > If you still have no speaker output even after that, give alsa-info.sh
> > output with non-working state, and also the alsa-info.sh output from
> > the working state on the earlier kernel.
> >
> >
> jack | speaker | auto-mute | spaker emits sound
> 000 unplugged | muted | disabled | no
> 001 unplugged | muted | enabled | no
> 010 unplugged | unmuted | disabled | yes
> 011 unplugged | unmuted | enabled | yes
> 100 plugged | muted | disabled | no
> 101 plugged | muted | enabled | no
> 110 plugged | unmuted | disabled | no
> 111 plugged | unmuted | enabled | no
>
> alsa-info outputs can be found in the attached archive
Thanks. This seems to be the missing GPIO setup when the auto-mute is
disabled. Could you give the patch below?
Takashi
---
diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c
index c1c855a6c0af..a47e8ae0eb30 100644
--- a/sound/pci/hda/patch_cirrus.c
+++ b/sound/pci/hda/patch_cirrus.c
@@ -174,8 +174,12 @@ static void cs_automute(struct hda_codec *codec)
snd_hda_gen_update_outputs(codec);
if (spec->gpio_eapd_hp || spec->gpio_eapd_speaker) {
- spec->gpio_data = spec->gen.hp_jack_present ?
- spec->gpio_eapd_hp : spec->gpio_eapd_speaker;
+ if (spec->gen.automute_speaker)
+ spec->gpio_data = spec->gen.hp_jack_present ?
+ spec->gpio_eapd_hp : spec->gpio_eapd_speaker;
+ else
+ spec->gpio_data =
+ spec->gpio_eapd_hp | spec->gpio_eapd_speaker;
snd_hda_codec_write(codec, 0x01, 0,
AC_VERB_SET_GPIO_DATA, spec->gpio_data);
}
More information about the Alsa-devel
mailing list