On Mon, 14 Mar 2016 19:39:26 +0100, moosotc@gmail.com wrote:
Takashi Iwai tiwai@suse.de writes:
On Mon, 14 Mar 2016 18:16:11 +0100, moosotc@gmail.com wrote:
Takashi Iwai tiwai@suse.de writes:
On Mon, 14 Mar 2016 09:11:10 +0100, moosotc@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); }