Bug 75151
Summary: | Headphone jack does not works after suspend/resume | ||
---|---|---|---|
Product: | Drivers | Reporter: | Kyrylo Mikos (kiril.mik.os) |
Component: | Sound(ALSA) | Assignee: | Jaroslav Kysela (perex) |
Status: | NEEDINFO --- | ||
Severity: | normal | CC: | art.home, dave, dimitri.livitz, faulty.lee, filipenteixeira, iLubenets, jrim, kiril.mik.os, mail, matima20, mikegurin, pontillo, q, superquad.vortex2, tcmreastwood, tiwai, unrud |
Priority: | P1 | ||
Hardware: | x86-64 | ||
OS: | Linux | ||
URL: | https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1313904 | ||
Kernel Version: | 3.15.6 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
alsa info
lspci Case 1: after cold boot. Case 2: after suspend/resume. Case 3: after warm reboot |
Description
Kyrylo Mikos
2014-04-30 11:51:36 UTC
Created attachment 134441 [details]
lspci
The problem can be fixed with next alsa-patch: [codec] 0x11068446 0x15582300 0 [hint] indep_hp = no What do you mean "front headphone jack does not work"? How was it tested? Please give alsa-info.sh outputs of both working and non-working cases. driver shoud not assign same dac to device 0 and device 2 Node 0x08 [Audio Output] wcaps 0x41d: Stereo Amp-Out Control: name="Headphone Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Device: name="VT1802 Analog", type="Audio", device=0 Device: name="VT1802 Alt Analog", type="Audio", device=2 Amp-Out caps: ofs=0x2a, nsteps=0x2a, stepsize=0x05, mute=0 Amp-Out vals: [0x28 0x28] Converter: stream=0, channel=0 PCM: rates [0x5e0]: 44100 48000 88200 96000 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 ==> lo_type=2, wired=1, mio=1, badness=0x0 multi_outs = 25/0/0/0 : 8/0/0/0 (type HP) out path: depth=4 :08:35:15:25 spk_outs = 24/0/0/0 : 9/0/0/0 spk path: depth=4 :09:34:14:24 mix path: depth=4 :08:21:15:25 mix path: depth=4 :08:21:14:24 ==> Best config: lo_type=2, wired=1, mio=1 multi_outs = 25/0/0/0 : 8/0/0/0 (type HP) out path: depth=4 :08:35:15:25 spk_outs = 24/0/0/0 : 9/0/0/0 spk path: depth=4 :09:34:14:24 mix path: depth=4 :08:21:15:25 mix path: depth=4 :08:21:14:24 the evaluation path was not full tested when type HP return zero badness (type speaker) is not even tested the badness should not be zero since HP cannot be placed in multi outs to support independent headphone I made 3 testes with next results: 1. After cold boot I hear low-frequency noice before (and after) booting the kernel (probably EFI initialize codec properly) and headphone out works fine. 2. After sleep/resume there are not such noice and headphones out stops working. 3. After warm reboot there are also no such noice (EFI does not reinit codec?) and headphones out does not works. Attaching alsa-info outputs for all 3 cases. Created attachment 134521 [details]
Case 1: after cold boot.
Created attachment 134531 [details]
Case 2: after suspend/resume.
Created attachment 134541 [details]
Case 3: after warm reboot
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/?id=ef4da45828603df57e5e21b8aa21a66ce309f79b your vt1802 seem different from those in Asus g75v https://launchpadlibrarian.net/114798750/Card0.Codecs.codec.0.txt analog mixer 0x21 seem connect to audio output 0x08 Node 0x21 [Audio Mixer] wcaps 0x20050b: Stereo Amp-In Control: name="Mic Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Mic Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] Power states: D0 D1 D2 D3 Power: setting=D0, actual=D0 Connection: 3 0x2b 0x2a 0x29 In-driver Connection: 4 0x2b 0x2a 0x29 0x08 http://bugzillafiles.novell.org/attachment.cgi?id=470256 The connection was used as PCM loopback Playback Volume Node 0x21 [Audio Mixer] wcaps 0x20050b: Stereo Amp-In Control: name="PCM Loopback Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=3, ofs=0 Control: name="PCM Loopback Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=3, ofs=0 Control: name="Internal Mic Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=2, ofs=0 Control: name="Internal Mic Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=2, ofs=0 Control: name="Mic Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Mic Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] Power states: D0 D1 D2 D3 Power: setting=D3, actual=D3 Connection: 3 0x2b 0x2a 0x29 https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1244127/comments/15 any specific reason to hide node 0x3e sudo ./hda-verb /dev/snd/hwC0D0 0x3e 0xf00 0x9 00 0x9 nid = 0x3e, verb = 0xf00, param = 0x9 value = 0x200500 sudo ./hda-verb /dev/snd/hwC0D0 0x3e 0xf00 0xe nid = 0x3e, verb = 0xf00, param = 0xe value = 0x1 sudo ./hda-verb /dev/snd/hwC0D0 0x3e 0xf02 0x0 nid = 0x3e, verb = 0xf02, param = 0x0 value = 0x1c DAC 0x08 was assigned to speaker ,0x09 was assigned to the headphone when the laptop has one speaker in the past https://bugzilla.novell.com/show_bug.cgi?id=740118 Node 0x08 [Audio Output] wcaps 0x41d: Stereo Amp-Out Device: name="VT1802 Analog", type="Audio", device=0 Amp-Out caps: ofs=0x2a, nsteps=0x2a, stepsize=0x05, mute=0 Amp-Out vals: [0x2a 0x2a] Converter: stream=5, channel=0 PCM: rates [0x5e0]: 44100 48000 88200 96000 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x09 [Audio Output] wcaps 0x41d: Stereo Amp-Out Control: name="Headphone Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Device: name="VT1802 HP", type="Audio", device=2 Amp-Out caps: ofs=0x2a, nsteps=0x2a, stepsize=0x05, mute=0 Amp-Out vals: [0x18 0x18] Converter: stream=5, channel=0 PCM: rates [0x5e0]: 44100 48000 88200 96000 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Output for hda-verb is same: sudo hda-verb /dev/snd/hwC1D0 0x3e 0xf00 0x9 nid = 0x3e, verb = 0xf00, param = 0x9 value = 0x200500 sudo hda-verb /dev/snd/hwC1D0 0x3e 0xf00 0xe nid = 0x3e, verb = 0xf00, param = 0xe value = 0x1 sudo hda-verb /dev/snd/hwC1D0 0x3e 0xf02 0x0 nid = 0x3e, verb = 0xf02, param = 0x0 value = 0x1c So, I didn't familar with kernel sound module but I can test driver changes. Or can you point me to the right way? As far as I understand currently some pin/node/module is not powers up after suspend? are you using latest driver ? node 0x3e still exist another problem is the function which set/clear EAPD does not keep the R/L Swap and Balanced bits Pincap 0x00010050: OUT EAPD Balanced EAPD 0x3: BALANCED EAPD Node 0x24 [Pin Complex] wcaps 0x40050d: Stereo Amp-Out Control: name="Speaker Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Control: name="Speaker Phantom Jack", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x00010050: OUT EAPD Balanced EAPD 0x3: BALANCED EAPD Pin Default 0x901701f0: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x00: Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 2 0x14* 0x3e the fix should be at snd_hda_get_sub_nodes if the codec cannot provide the correct number of nodes in the codecs do your vt1802 return the correct count ? int snd_hda_get_sub_nodes(struct hda_codec *codec, hda_nid_t nid, hda_nid_t *start_id) { unsigned int parm; parm = snd_hda_param_read(codec, nid, AC_PAR_NODE_COUNT); if (parm == -1) return 0; *start_id = (parm >> 16) & 0x7fff; return (int)(parm & 0x7fff); } Added debugging: int snd_hda_get_sub_nodes(struct hda_codec *codec, hda_nid_t nid, hda_nid_t *start_id) { unsigned int parm; parm = snd_hda_param_read(codec, nid, AC_PAR_NODE_COUNT); printk("MIK: %d\n", codec->vendor_id); printk("MIK: parm = %d\n", parm); if (parm == -1) return 0; *start_id = (parm >> 16) & 0x7fff; printk("MIK: n = %d\n", (int)(parm & 0x7fff)); return (int)(parm & 0x7fff); } The outptut (VIA is 285639750 = 0x11068446): [ 4.296094] MIK: 285639750 [ 4.296096] MIK: parm = 65537 [ 4.296097] MIK: n = 1 [ 4.296181] MIK: 285639750 [ 4.296182] MIK: parm = 524341 [ 4.296183] MIK: n = 53 [ 4.298110] MIK: -2138691577 [ 4.298112] MIK: parm = 65537 [ 4.298113] MIK: n = 1 [ 4.298146] MIK: -2138691577 [ 4.298147] MIK: parm = 131074 [ 4.298148] MIK: n = 2 [ 4.305379] MIK: -2138691577 [ 4.305382] MIK: parm = 131079 [ 4.305383] MIK: n = 7 [ 4.305656] MIK: -2138691577 [ 4.305658] MIK: parm = 131079 [ 4.305659] MIK: n = 7 I am using ubuntu 14.04 kernel sources (3.13.9). what is the values of codec->num_nodes ? your output contain nodes 0x3c, but your output is 53 (0x35) static int read_widget_caps(struct hda_codec *codec, hda_nid_t fg_node) { int i; hda_nid_t nid; codec->num_nodes = snd_hda_get_sub_nodes(codec, fg_node, &codec->start_nid); codec->wcaps = kmalloc(codec->num_nodes * 4, GFP_KERNEL); if (!codec->wcaps) return -ENOMEM; nid = codec->start_nid; for (i = 0; i < codec->num_nodes; i++, nid++) codec->wcaps[i] = snd_hda_param_read(codec, nid, AC_PAR_AUDIO_WIDGET_CAP); return 0; } Node 0x3e [Audio Mixer] wcaps 0x200500: Mono Power states: D0 D1 D2 D3 Power: setting=D0, actual=D0 Connection: 1 0x1c does node 0x3d return any values when you use hda-verb to query widget type , connection list ,... node 0x33 is a mono pin complex which need to connect through a downmix widget to accept the stereo signal from stereo audio output https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/?id=d5266125fb439a5dfa4edd548d888fda47414ac5 Output for 0x3d: sudo hda-verb /dev/snd/hwC1D0 0x3d 0xf00 0x9 nid = 0x3d, verb = 0xf00, param = 0x9 value = 0xf00000 sudo hda-verb /dev/snd/hwC1D0 0x3d 0xf00 0xe nid = 0x3d, verb = 0xf00, param = 0xe value = 0x0 sudo hda-verb /dev/snd/hwC1D0 0x3d 0xf02 0x0 nid = 0x3d, verb = 0xf02, param = 0x0 value = 0x0 Output for 0x3c: sudo hda-verb /dev/snd/hwC1D0 0x3c 0xf00 0x9 nid = 0x3c, verb = 0xf00, param = 0x9 value = 0x300501 sudo hda-verb /dev/snd/hwC1D0 0x3c 0xf00 0xe nid = 0x3c, verb = 0xf00, param = 0xe value = 0x2 sudo hda-verb /dev/snd/hwC1D0 0x3c 0xf02 0x0 nid = 0x3c, verb = 0xf02, param = 0x0 value = 0x908 Output for 0x35: sudo hda-verb /dev/snd/hwC1D0 0x35 0xf00 0x9 nid = 0x35, verb = 0xf00, param = 0x9 value = 0x300501 sudo hda-verb /dev/snd/hwC1D0 0x35 0xf00 0xe nid = 0x35, verb = 0xf00, param = 0xe value = 0x2 sudo hda-verb /dev/snd/hwC1D0 0x35 0xf02 0x0 nid = 0x35, verb = 0xf02, param = 0x0 value = 0x908 Added debug code: static int read_widget_caps(struct hda_codec *codec, hda_nid_t fg_node) { int i; hda_nid_t nid; codec->num_nodes = snd_hda_get_sub_nodes(codec, fg_node, &codec->start_nid); printk("MIK: codec->vendor_id = %d, codec->num_nodes = %d\n", codec->vendor_id, codec->num_nodes); codec->wcaps = kmalloc(codec->num_nodes * 4, GFP_KERNEL); if (!codec->wcaps) return -ENOMEM; nid = codec->start_nid; for (i = 0; i < codec->num_nodes; i++, nid++) codec->wcaps[i] = snd_hda_param_read(codec, nid, AC_PAR_AUDIO_WIDGET_CAP); return 0; } Output from kernel module: [ 4.313834] MIK: codec->vendor_id = 285639750, codec->num_nodes = 53 [ 4.318001] MIK: codec->vendor_id = -2138691577, codec->num_nodes = 2 [ 4.332846] MIK: codec->vendor_id = -2138691577, codec->num_nodes = 7 the independent headphone allows headphone and multi out path can play different audio streams this mean that headphone cannot be put at the multi out path also low power mode power down any widgets on the unused audio path function indep_hp_possible in hda_generic.c should return false if (cfg->line_out_type == AUTO_PIN_HEADPHONE) return false; if the driver really want to support independent headphones on notebook speaker need to put in multi out path instead of headphone ==> lo_type=2, wired=1, mio=1, badness=0x0 multi_outs = 25/0/0/0 : 8/0/0/0 (type HP) out path: depth=4 :08:35:15:25 spk_outs = 24/0/0/0 : 9/0/0/0 spk path: depth=4 :09:34:14:24 mix path: depth=4 :08:21:15:25 mix path: depth=4 :08:21:14:24 ==> Best config: lo_type=2, wired=1, mio=1 multi_outs = 25/0/0/0 : 8/0/0/0 (type HP) out path: depth=4 :08:35:15:25 spk_outs = 24/0/0/0 : 9/0/0/0 spk path: depth=4 :09:34:14:24 mix path: depth=4 :08:21:15:25 mix path: depth=4 :08:21:14:24 https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda/hda_proc.c?id=e3303235209c0496b490e10ab131e72a9568c153 Node 0x08 [Audio Output] wcaps 0x41d: Stereo Amp-Out Control: name="Headphone Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Device: name="VT1802 Analog", type="Audio", device=0 Device: name="VT1802 Alt Analog", type="Audio", device=2 it is strange to have two devices using same nid Marco and Unrud at launchpad have found solution for Windows: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1313904/comments/18 In the latest drivers clevo added InitHeadphone.exe executable which call InitHeadphone from hp.dll. After it headphone jack starts working. Here is hp.dll: https://www.dropbox.com/s/orwxeca445id5o5/hp.dll https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda/patch_via.c?id=11890956e948e6ed1b3e4acc11b6879db6ace01b it seem bug in set_widgets_power_state_vt2002P Node 0x26 [Vendor Defined Widget] wcaps 0xf00000: Mono and not all notebook use the mono pin node 0x33 the logic seem power down subwoofer path when headphone is plugged /* Mono Out */ present = snd_hda_jack_detect(codec, 0x26); parm = present ? AC_PWRST_D3 : AC_PWRST_D0; - /* PW15 (31h), MW8(17h), MUX8(3bh) */ - snd_hda_codec_write(codec, 0x31, 0, - AC_VERB_SET_POWER_STATE, parm); - snd_hda_codec_write(codec, 0x17, 0, - AC_VERB_SET_POWER_STATE, parm); - snd_hda_codec_write(codec, 0x3b, 0, - AC_VERB_SET_POWER_STATE, parm); - + if (spec->codec_type == VT1802) { + /* PW15 (33h), MW8(1ch), MUX8(3ch) */ + snd_hda_codec_write(codec, 0x33, 0, + AC_VERB_SET_POWER_STATE, parm); + snd_hda_codec_write(codec, 0x1c, 0, + AC_VERB_SET_POWER_STATE, parm); + snd_hda_codec_write(codec, 0x3c, 0, + AC_VERB_SET_POWER_STATE, parm); + } else { + 7.3.3.16 EAPD/BTL Enable BTL controls the output configuration of a Pin Widget which has indicated support for balanced I/O (bit 6, Pin Capabilities Parameter). When this bit is 0, the output drivers are configured in normal, single-ended mode; when this bit is 1, they are configured in balanced mode. Note that in balanced mode, the Pin Widget has twice as many pins as it does in normal mode; i.e., a stereo Pin Widget in balanced mode has four signal pins (in addition to Vref pins). However, in both modes it must appear to software as a single Pin Widget. The additional pins must be reserved to this purpose; thus, in a configuration supporting BTL outputs the additional pins may not be enumerated as a separate Pin Widget. Pincap 0x00010050: OUT EAPD Balanced EAPD 0x3: BALANCED EAPD seem in balanced mode BUT the driver always clear this bit https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/pci/hda/hda_proc.c if (caps & AC_PINCAP_EAPD) { val = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_EAPD_BTLENABLE, 0); snd_iprintf(buffer, " EAPD 0x%x:", val); if (val & AC_EAPDBTL_BALANCED) snd_iprintf(buffer, " BALANCED"); if (val & AC_EAPDBTL_EAPD) snd_iprintf(buffer, " EAPD"); if (val & AC_EAPDBTL_LR_SWAP) snd_iprintf(buffer, " R/L"); snd_iprintf(buffer, "\n"); } static void set_pin_eapd(struct hda_codec *codec, hda_nid_t pin, bool enable) { struct hda_gen_spec *spec = codec->spec; if (spec->own_eapd_ctl || !(snd_hda_query_pin_caps(codec, pin) & AC_PINCAP_EAPD)) return; if (spec->keep_eapd_on && !enable) return; if (codec->inv_eapd) enable = !enable; snd_hda_codec_update_cache(codec, pin, 0, AC_VERB_SET_EAPD_BTLENABLE, enable ? 0x02 : 0x00); } (In reply to Raymond from comment #25) > https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/ > pci/hda/patch_via.c?id=11890956e948e6ed1b3e4acc11b6879db6ace01b > > it seem bug in set_widgets_power_state_vt2002P It's irrelevant. The whole set_widgets_power_state*() are disabled in the recent code. See set_widgets_power_state() function. (In reply to Raymond from comment #16) > are you using latest driver ? node 0x3e still exist It's a known issue of some VIA codecs. They hide such an analog loopback mixer widget by some reason (maybe to be compliant with Microsoft driver). There is a workaround in patch_via.c to avoid confusion. One known problem is that the power of 0x3e isn't controlled properly. But this path isn't used actually, so it shouldn't be any serious problem. (In reply to Raymond from comment #23) > https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/ > pci/hda/hda_proc.c?id=e3303235209c0496b490e10ab131e72a9568c153 > > Node 0x08 [Audio Output] wcaps 0x41d: Stereo Amp-Out > Control: name="Headphone Playback Volume", index=0, device=0 > ControlAmp: chs=3, dir=Out, idx=0, ofs=0 > Device: name="VT1802 Analog", type="Audio", device=0 > Device: name="VT1802 Alt Analog", type="Audio", device=2 > > it is strange to have two devices using same nid This is normal. The first one is the primary multi-channel PCM, and the headphone pin is included when "Independent HP" control is off. Meanwhile, the latter one is the headphone-only PCM stream, and of course, it's also assigned to the headphone pin. Is the old workaround, indep_hp = false hint, still effective with the recent kernel? If so, it's the hint to take a look at. Actually that workaround was just a fake. I didn't knew whole reproduction route when tried workaround. And it does nothing in both cases no sound in headphones. I tried it with latest kernel (3.15.6, commented line spec->gen.indep_hp = 1; in patch_via.c). The correct bug description: No sound in headphones jack after suspend/resume and even after soft reoboot. Headphones jack works cirrectly only after cold boot. The was was also reproducable in Windows (see https://bugzilla.kernel.org/show_bug.cgi?id=75151#c24). I tried to make some changes in the kernel (changes was suggested by Raymond), you can read results at the launchpad: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1313904 (#22, #27-#44). But we did not reach any success. OK, it relieved me; I've wondered why indep_hp had any influence on it. As it hits on Windows, too, the problem is likely in the firmware, i.e. there can be some undocumented init sequences. I'll try to ping VIA people who might have a better clue. have you try + if (cfg->line_out_type == AUTO_PIN_HP_OUT) + return false; this does not disable indep hp but just force driver put speaker in multiout and device 0 in speaker 's audio output and device 2 in headphone 's audio output actually notebook don't need independent hp Yes, I do. Probably I forgot to reply about this. Currently running kernel with this change, same result after suspend/resume. (In reply to Kyrylo Mikos from comment #2) > The problem can be fixed with next alsa-patch: > [codec] > 0x11068446 0x15582300 0 > > [hint] > indep_hp = no Sorry for asking a newbie question, any pointers on how to do this "alsa-patch"? I've having the same hardware and problem while running the latest Arch. I can't seems google anything relevant on performing "alsa-patch" :) Or do you have ~/.pulse/* ? It's the old config directory. Sorry, a wrong bug. About HD-audio early patching, read Documentation/sound/alsa/HD-Audio.txt. in function snd_hda_multi_out_analog_prepare, /* front */ snd_hda_codec_setup_stream(codec, nids[HDA_FRONT], stream_tag, 0, format); if (!mout->no_share_stream && mout->hp_nid && mout->hp_nid != nids[HDA_FRONT]) /* headphone out will just decode front left/right (stereo) */ snd_hda_codec_setup_stream(codec, mout->hp_nid, stream_tag, 0, format); when independent HP switch is on , driver only setup stream for hda_front DAC and those surround DAC s HP 's DAC is used by alt analog device exclusively a normal independent headphone which allow multistreaming using front panel HP and rear panel line out won't share dac and volume control it is a bug to allow independent headphone when HP and speaker share DAC and volume control when the subwoofer is using the remain DAC and volume control for Asus G75 http://git.kernel.org/cgit/linux/kernel/git/tiwai/hda-emu.git/tree/codecs/vt1802-asus-g75?id=HEAD I'm having a nearly identical issue on a Clevo P170SM-A laptop, though the (primary) sound card is a Realtek ALC892. Once the computer has gone into a suspended state, the machine must be powered off - either via a full shutdown or a hibernate - to reactivate sound to the headphone jack. It does continue to correctly detect that headphones have been plugged into the jack. I'm having this issue on the Fedora kernel-3.16.1-300.fc21.x86_64 - though it has been present at least as far back as 3.13.x. Is there any further information I could give that might help debug this issue? Would additional alsa-info outputs be helpful? I can confirm all of the above issues on my Clevo W230SS, and using the VIA codec. I am running arch linux with kernel version 3.16.3-1 I've had this issue since I got this laptop earlier this summer. To echo the reply above me, is there any additional information that I could provide, or anything I could test that would be helpful? I have the Clevo W230SS and have the same issues as described using the VIA codec. Would it be possible to do some investigation of this InitHeadphone to see how it re-enables it? https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda/patch_via.c?id=94c142a160d63edac0e1fca7848960dcf75dd2a9 if pinctl of hp changed to 0 in via_suspend, did the driver restore pin ctl after resume? I already tried this one. I reverted the patch and the results was: pop noise appears but there are still no sound in headphones. Here's another me-too using Xubuntu 14.04 on a Sager NP8268-S (Clevo P150SM-A) with a Realtek ALC892, with the same behavior noted above in comment #39, looking for a solution. https://bugzilla.kernel.org/show_bug.cgi?id=87771 you may need to check whether all nodes and vendor coef are as same as before and after suspend I tried the instructions on that bug thread, but I didn't get the coef dumped. Is the coef dumping code specific to Realtek hardware? it is quite clear the indepenent HP does not work as expected using hda-emu when indepenent hp is on PCM 1 p 44100 2 16 use audio output node 0x08 but PCM 0 p 44100 2 16 although the driver use node 0x09 but it also set channel stream id of node 0x08 to zero which is incorrect if headphone can be play indepenently Same here with Santech T55 ( Clevo W230SS ) on 3.18.2-2-ARCH, when suspended (or soft rebooted after suspend) headphones stop functioning. Same here with HP 15-r151nr notebook with Intel N3540 integrated HDA controller. Sometimes after suspend the jack stops working. Just want to bump this. Takashi Iwai, have you contacted with VIA guys? Any info about this bug. It is very annoting :( Yes, they wrote that this is basically a BIOS firmware problem, i.e. outside the sound driver. One could do something, but it's not about the HD-audio chip itself. Aha, thanks. Also as I wrote above (https://bugzilla.kernel.org/show_bug.cgi?id=75151#c24), latest audio drivers for this laptop includes an executable which reenable headphones jack. I wonder if someone can create at least same hack for linux... Any news? I also have the same problem on a Clevo w230ss, and can supply any requested information I made a tool to enable the amplifier: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1313904/+attachment/4361090/+files/init-headphone_0.2.0_all.deb It's a deb file for Ubuntu but you can extract the file /usr/sbin/init-headphone and use it on other distributions. (In reply to Unrud from comment #54) > I made a tool to enable the amplifier: > https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1313904/ > +attachment/4361090/+files/init-headphone_0.2.0_all.deb > It's a deb file for Ubuntu but you can extract the file > /usr/sbin/init-headphone and use it on other distributions. I can confirm that this works under ArchLinux for the W230SS. Thank you so much! I can't believe it finally works. I had to modify the system name in the script, since my laptop is the same model but does not report W230SS as the name (Mythlogic Chaos 1313-A is reported instead). (In reply to Dimitri Livitz from comment #55) > (In reply to Unrud from comment #54) > > I made a tool to enable the amplifier: > > https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1313904/ > > +attachment/4361090/+files/init-headphone_0.2.0_all.deb > > It's a deb file for Ubuntu but you can extract the file > > /usr/sbin/init-headphone and use it on other distributions. > > I can confirm that this works under ArchLinux for the W230SS. > > Thank you so much! I can't believe it finally works. > > I had to modify the system name in the script, since my laptop is the same > model but does not report W230SS as the name (Mythlogic Chaos 1313-A is > reported instead). Amazing! I've done a PKGBUILD and a systemd unit for Arch Linux, now the script starts automatically at sleep resume! https://github.com/ektor5/init-headphone/ Feel free to send pull request to improve it! :) Hey, I installed the fedora package (https://github.com/letitz/init-headphone) but my problem isn't fixed. If I try to run init-headphone manually I get this output: http://ur1.ca/k9wdk Also, my /etc/default/grub looks like: GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax nouveau.modeset=0 rd.driver.blacklist=nouveau rhgb quiet" (plus some other lines, of course) What can I do? (In reply to filipenteixeira from comment #57) > Hey, I installed the fedora package > (https://github.com/letitz/init-headphone) but my problem isn't fixed. If I > try to run init-headphone manually I get this output: http://ur1.ca/k9wdk > > Also, my /etc/default/grub looks like: > GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax nouveau.modeset=0 > rd.driver.blacklist=nouveau rhgb quiet" > > (plus some other lines, of course) > > What can I do? Sorry, I forgot, but running cat /proc/cmdline I get: ~ > cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.19.5-200.fc21.x86_64 root=UUID=fad5cf6e-ff73-4ca3-8313-b508ba18dec3 ro rhgb quiet LANG=en_GB.UTF-8 nouveau.modeset=0 rd.driver.blacklist=nouveau Which does not include the acpi_enforce_resources=lax. What can be causing this? (In reply to filipenteixeira from comment #58) > Which does not include the acpi_enforce_resources=lax. What can be causing > this? Have you updated your grub.cfg? $ grub2-mkconfig -o /boot/grub2/grub.cfg I have the same issue with my Eurocom Sky MX5. And init-headphone helped me. But as suggested below, I fixed a bit init-headphone script to support my laptop (here is my merge request: https://github.com/letitz/init-headphone/pull/1) Let me know if you need any details about my hardware to help to resolve this. (In reply to cono from comment #60) > I have the same issue with my Eurocom Sky MX5. > > And init-headphone helped me. But as suggested below, I fixed a bit > init-headphone script to support my laptop (here is my merge request: > https://github.com/letitz/init-headphone/pull/1) > > Let me know if you need any details about my hardware to help to resolve > this. Hi, this is already fixed: https://github.com/Unrud/init-headphone The Fedora package is not up to date. |