Message ID | s5hfv8rdfx3.wl-tiwai@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 03/26/2015 09:52 PM, Takashi Iwai wrote: > At Thu, 26 Mar 2015 14:10:17 +0100, > Takashi Iwai wrote: >> At Thu, 26 Mar 2015 20:24:43 +0800, >> Hui Wang wrote: >>> On 03/21/2015 02:38 PM, Hui Wang wrote: >>>> On 03/21/2015 12:20 AM, David Henningsson wrote: >>>>> On 2015-03-18 09:50, Takashi Iwai wrote: >>>>>> Hi, >>>>>> >>>>>> here is a patchset for supporting more aggressive PM for HD-audio. >>>>>> This allows to change the power state of each widget more dynamically >>>>>> with jack and stream states. It's activated only when the codec >>>>>> driver (or via sysfs or f/w patch) sets codec->power_mgmt flag. >>>>>> >>>>>> In theory, this should work for the recent Realtek codecs, but >>>>>> currently I have no machine for test. >>>>>> >>>>>> David, could you or your team check whether this works for ALC282 or >>>>>> such? Just add like: >>>>>> >>>>>> --- a/sound/pci/hda/patch_realtek.c >>>>>> +++ b/sound/pci/hda/patch_realtek.c >>>>>> @@ -5415,6 +5415,7 @@ static int patch_alc269(struct hda_codec *codec) >>>>>> >>>>>> spec = codec->spec; >>>>>> spec->gen.shared_mic_vref_pin = 0x18; >>>>>> + codec->power_mgmt = 1; >>>>>> >>>>>> snd_hda_pick_fixup(codec, alc269_fixup_models, >>>>>> alc269_fixup_tbl, alc269_fixups); >>>>>> >>>>>> >>>>>> The patchset is for for-next branch of sound git tree, but they might >>>>>> be applicable to 4.0-rc (or even older), too. The current patches are >>>>>> found in topic/hda-power branch. >>>>> So I hoped to be able to look at this today, but it turns out the >>>>> machine I was thinking of using for testing has an ALC262 codec, >>>>> which hardly counts as "new". >>>>> >>>>> Hui, is this something you feel like taking on? Otherwise I'll try to >>>>> talk to someone in Taipei. >>>>> >>>> OK? I will look for the machine to do the test next week. >>>> >>>> Regards, >>>> Hui. >>>> >>> Sorry for late response, today is my first day in the office back from >>> vacation, I checked all machines in the Beijing office, none of them has >>> the ALC282 codec, I will continue to look for the machine from other office. >>> >>> And I did the test on the machines with the alc283, alc255, alc292 and >>> alc269, the testing result were same, there were no sound output from >>> internal speaker or headphone, and the internal mic or external mic >>> can't record any sound. The test steps as below: >>> >>> 1. power_save_node = 0 >>> checkout the hda-power branch, build the kernel based on this branch. >>> Install the kernel to the above machines and boot into the desktop >>> test internal speaker and internal mic, works very well, plug a headset, >>> test headphone and external mic, works very well. >>> run pm_suspend, wait 5 seconds, wakeup the system, redo the above test, >>> everything works very well. >> OK, this is expected. The patch shouldn't touch this case. >> >>> 2. power_save_node = 1 >>> enable the power_save_node as below: >>> @@ -5426,6 +5426,8 @@ static int patch_alc269(struct hda_codec *codec) >>> >>> alc_auto_parse_customize_define(codec); >>> >>> + codec->power_save_node = 1; >>> + >>> if (has_cdefine_beep(codec)) >>> spec->gen.beep_nid = 0x01; >>> rebuild the kernel, install the kernel to the above machines and boot >>> into the desktop >>> test internal speaker and internal mic, we can play sound to internal >>> speaker without any errors, but I can't hear any sound from the speaker; >>> I can use the internal mic to record without errors, but recorded file >>> did not include any sound pcm (maybe all 0x00 or 0xff) >>> I plug a headset into the headset jack, the detection works very well, >>> but I can't hear sound from headphone when play a sound, and I can't use >>> headset mic to record any sound as well. >>> >>> >>> And I attached 2 alsa-info.txt, one is the power_save_node=0, the other >>> is the power_save_node=1 >> Thanks. The alsa-info.sh outputs show no difference but the power >> state, so the widget attributes seem kept with the power state change, >> as it seems. >> >> Could you give alsa-info.sh output *during* playing with >> power_save_node=1? > Also, try to pull topic/hda-regmap branch in addition, and apply the > patch below. This implements the partial sync for the widget path. > Note that the patch is totally untested. Got it, I will do the test next Monday, since I can't access those machines until next Monday. Regards, Hui. > > thanks, > > Takashi > > diff --git a/include/sound/hda_regmap.h b/include/sound/hda_regmap.h > index 76648ccfbbf8..727a5801e298 100644 > --- a/include/sound/hda_regmap.h > +++ b/include/sound/hda_regmap.h > @@ -202,4 +202,16 @@ snd_hdac_regmap_update_amp_stereo(struct hdac_device *codec, hda_nid_t nid, > return snd_hdac_regmap_update_raw(codec, cmd, mask, val); > } > > +/** > + * snd_hdac_regmap_sync_node - sync the widget node attributes > + * @codec: HD-audio codec > + * @nid: NID to sync > + */ > +static inline void > +snd_hdac_regmap_sync_node(struct hdac_device *codec, hda_nid_t nid) > +{ > + regcache_mark_dirty(codec->regmap); > + regcache_sync_region(codec->regmap, nid << 20, ((nid + 1) << 20) -1); > +} > + > #endif /* __SOUND_HDA_REGMAP_H */ > diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c > index f7ccef5559de..1f2ca7be1468 100644 > --- a/sound/pci/hda/hda_generic.c > +++ b/sound/pci/hda/hda_generic.c > @@ -842,10 +842,8 @@ static hda_nid_t path_power_update(struct hda_codec *codec, > snd_hda_codec_write(codec, nid, 0, > AC_VERB_SET_POWER_STATE, state); > changed = nid; > - /* here we assume that widget attributes (e.g. amp, > - * pinctl connection) don't change with local power > - * state change. If not, need to sync the cache. > - */ > + if (state == AC_PWRST_D0) > + snd_hdac_regmap_sync_node(&codec->core, nid); > } > } > return changed; >
On 2015?03?27? 08:11, Hui Wang wrote: > On 03/26/2015 09:52 PM, Takashi Iwai wrote: >> At Thu, 26 Mar 2015 14:10:17 +0100, >> Takashi Iwai wrote: >>> At Thu, 26 Mar 2015 20:24:43 +0800, >>> Hui Wang wrote: >>>> On 03/21/2015 02:38 PM, Hui Wang wrote: >>>>> On 03/21/2015 12:20 AM, David Henningsson wrote: >>>>>> On 2015-03-18 09:50, Takashi Iwai wrote: >>>>>>> Hi, >>>>>>> >>>>>>> here is a patchset for supporting more aggressive PM for HD-audio. >>>>>>> This allows to change the power state of each widget more >>>>>>> dynamically >>>>>>> with jack and stream states. It's activated only when the codec >>>>>>> driver (or via sysfs or f/w patch) sets codec->power_mgmt flag. >>>>>>> >>>>>>> In theory, this should work for the recent Realtek codecs, but >>>>>>> currently I have no machine for test. >>>>>>> >>>>>>> David, could you or your team check whether this works for >>>>>>> ALC282 or >>>>>>> such? Just add like: >>>>>>> >>>>>>> --- a/sound/pci/hda/patch_realtek.c >>>>>>> +++ b/sound/pci/hda/patch_realtek.c >>>>>>> @@ -5415,6 +5415,7 @@ static int patch_alc269(struct hda_codec >>>>>>> *codec) >>>>>>> >>>>>>> spec = codec->spec; >>>>>>> spec->gen.shared_mic_vref_pin = 0x18; >>>>>>> + codec->power_mgmt = 1; >>>>>>> >>>>>>> snd_hda_pick_fixup(codec, alc269_fixup_models, >>>>>>> alc269_fixup_tbl, alc269_fixups); >>>>>>> >>>>>>> >>>>>>> The patchset is for for-next branch of sound git tree, but they >>>>>>> might >>>>>>> be applicable to 4.0-rc (or even older), too. The current >>>>>>> patches are >>>>>>> found in topic/hda-power branch. >>>>>> So I hoped to be able to look at this today, but it turns out the >>>>>> machine I was thinking of using for testing has an ALC262 codec, >>>>>> which hardly counts as "new". >>>>>> >>>>>> Hui, is this something you feel like taking on? Otherwise I'll >>>>>> try to >>>>>> talk to someone in Taipei. >>>>>> >>>>> OK? I will look for the machine to do the test next week. >>>>> >>>>> Regards, >>>>> Hui. >>>>> >>>> Sorry for late response, today is my first day in the office back from >>>> vacation, I checked all machines in the Beijing office, none of >>>> them has >>>> the ALC282 codec, I will continue to look for the machine from >>>> other office. >>>> >>>> And I did the test on the machines with the alc283, alc255, alc292 and >>>> alc269, the testing result were same, there were no sound output from >>>> internal speaker or headphone, and the internal mic or external mic >>>> can't record any sound. The test steps as below: >>>> >>>> 1. power_save_node = 0 >>>> checkout the hda-power branch, build the kernel based on this branch. >>>> Install the kernel to the above machines and boot into the desktop >>>> test internal speaker and internal mic, works very well, plug a >>>> headset, >>>> test headphone and external mic, works very well. >>>> run pm_suspend, wait 5 seconds, wakeup the system, redo the above >>>> test, >>>> everything works very well. >>> OK, this is expected. The patch shouldn't touch this case. >>> >>>> 2. power_save_node = 1 >>>> enable the power_save_node as below: >>>> @@ -5426,6 +5426,8 @@ static int patch_alc269(struct hda_codec *codec) >>>> >>>> alc_auto_parse_customize_define(codec); >>>> >>>> + codec->power_save_node = 1; >>>> + >>>> if (has_cdefine_beep(codec)) >>>> spec->gen.beep_nid = 0x01; >>>> rebuild the kernel, install the kernel to the above machines and boot >>>> into the desktop >>>> test internal speaker and internal mic, we can play sound to internal >>>> speaker without any errors, but I can't hear any sound from the >>>> speaker; >>>> I can use the internal mic to record without errors, but recorded file >>>> did not include any sound pcm (maybe all 0x00 or 0xff) >>>> I plug a headset into the headset jack, the detection works very well, >>>> but I can't hear sound from headphone when play a sound, and I >>>> can't use >>>> headset mic to record any sound as well. >>>> >>>> >>>> And I attached 2 alsa-info.txt, one is the power_save_node=0, the >>>> other >>>> is the power_save_node=1 >>> Thanks. The alsa-info.sh outputs show no difference but the power >>> state, so the widget attributes seem kept with the power state change, >>> as it seems. >>> >>> Could you give alsa-info.sh output *during* playing with >>> power_save_node=1? >> Also, try to pull topic/hda-regmap branch in addition, and apply the >> patch below. This implements the partial sync for the widget path. >> Note that the patch is totally untested. > Got it, I will do the test next Monday, since I can't access those > machines until next Monday. > > Regards, > Hui. The attached alsa-info.txt was generated when the aplay was playing a song, it seems the widget power state did not change even the output device was working. And I also checkout the hda-regmap branch and applied the patch below, rebuilt the kernel and used the kernel to do the test of playing and recording, both internal devices and external devices worked very well, I didn't see any obvious problems when using hda-regmap branch doing the test. Regards, Hui. >> >> thanks, >> >> Takashi >> >> diff --git a/include/sound/hda_regmap.h b/include/sound/hda_regmap.h >> index 76648ccfbbf8..727a5801e298 100644 >> --- a/include/sound/hda_regmap.h >> +++ b/include/sound/hda_regmap.h >> @@ -202,4 +202,16 @@ snd_hdac_regmap_update_amp_stereo(struct >> hdac_device *codec, hda_nid_t nid, >> return snd_hdac_regmap_update_raw(codec, cmd, mask, val); >> } >> +/** >> + * snd_hdac_regmap_sync_node - sync the widget node attributes >> + * @codec: HD-audio codec >> + * @nid: NID to sync >> + */ >> +static inline void >> +snd_hdac_regmap_sync_node(struct hdac_device *codec, hda_nid_t nid) >> +{ >> + regcache_mark_dirty(codec->regmap); >> + regcache_sync_region(codec->regmap, nid << 20, ((nid + 1) << 20) >> -1); >> +} >> + >> #endif /* __SOUND_HDA_REGMAP_H */ >> diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c >> index f7ccef5559de..1f2ca7be1468 100644 >> --- a/sound/pci/hda/hda_generic.c >> +++ b/sound/pci/hda/hda_generic.c >> @@ -842,10 +842,8 @@ static hda_nid_t path_power_update(struct >> hda_codec *codec, >> snd_hda_codec_write(codec, nid, 0, >> AC_VERB_SET_POWER_STATE, state); >> changed = nid; >> - /* here we assume that widget attributes (e.g. amp, >> - * pinctl connection) don't change with local power >> - * state change. If not, need to sync the cache. >> - */ >> + if (state == AC_PWRST_D0) >> + snd_hdac_regmap_sync_node(&codec->core, nid); >> } >> } >> return changed; >> > upload=true&script=true&cardinfo= !!################################ !!ALSA Information Script v 0.4.64 !!################################ !!Script ran on: Mon Mar 30 04:19:13 UTC 2015 !!Linux Distribution !!------------------ Ubuntu Vivid Vervet (development branch) \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu Vivid Vervet (development branch)" NAME="Ubuntu" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu Vivid Vervet (development branch)" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" !!DMI Information !!--------------- Manufacturer: Dell Inc. Product Name: Inspiron 7447 Product Version: Not Specified Firmware Version: X18 !!Kernel Information !!------------------ Kernel release: 4.0.0-rc4+ Operating System: GNU/Linux Architecture: x86_64 Processor: x86_64 SMP Enabled: Yes !!ALSA Version !!------------ Driver version: k4.0.0-rc4+ Library version: 1.0.28 Utilities version: 1.0.28 !!Loaded ALSA modules !!------------------- !!Sound Servers on this system !!---------------------------- Pulseaudio: Installed - Yes (/usr/bin/pulseaudio) Running - Yes !!Soundcards recognised by ALSA !!----------------------------- 0 [HDMI ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI at 0xf7a1c000 irq 32 1 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xf7a18000 irq 31 !!PCI Soundcards installed in the system !!-------------------------------------- 00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06) 00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05) !!Advanced information - PCI Vendor/Device/Subsystem ID's !!------------------------------------------------------- 00:03.0 0403: 8086:0c0c (rev 06) Subsystem: 1028:0680 -- 00:1b.0 0403: 8086:8c20 (rev 05) Subsystem: 1028:0680 !!Modprobe options (Sound related) !!-------------------------------- snd_atiixp_modem: index=-2 snd_intel8x0m: index=-2 snd_via82xx_modem: index=-2 snd_usb_audio: index=-2 snd_usb_caiaq: index=-2 snd_usb_ua101: index=-2 snd_usb_us122l: index=-2 snd_usb_usx2y: index=-2 snd_cmipci: mpu_port=0x330 fm_port=0x388 snd_pcsp: index=-2 snd_usb_audio: index=-2 !!Loaded sound module options !!--------------------------- !!HDA-Intel Codec information !!--------------------------- --startcollapse-- Codec: Intel Haswell HDMI Address: 0 AFG Function Id: 0x1 (unsol 0) Vendor Id: 0x80862807 Subsystem Id: 0x80860101 Revision Id: 0x100000 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A State of AFG node 0x01: Power states: D0 D3 CLKSTOP EPSS Power: setting=D0, actual=D0, Clock-stop-OK GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x02 [Audio Output] wcaps 0x6611: 8-Channels Digital Converter: stream=1, channel=0 Digital: Enabled KAE Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0x1e]: 16 20 24 32 formats [0x5]: PCM AC3 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Node 0x03 [Audio Output] wcaps 0x6611: 8-Channels Digital Converter: stream=0, channel=0 Digital: Enabled KAE Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0x1e]: 16 20 24 32 formats [0x5]: PCM AC3 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Node 0x04 [Audio Output] wcaps 0x6611: 8-Channels Digital Converter: stream=0, channel=0 Digital: Enabled KAE Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0x1e]: 16 20 24 32 formats [0x5]: PCM AC3 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Node 0x05 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP Control: name="HDMI/DP,pcm=3 Jack", index=0, device=0 Control: name="IEC958 Playback Con Mask", index=0, device=0 Control: name="IEC958 Playback Pro Mask", index=0, device=0 Control: name="IEC958 Playback Default", index=0, device=0 Control: name="IEC958 Playback Switch", index=0, device=0 Control: name="ELD", index=0, device=3 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0b000094: OUT Detect HBR HDMI DP Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=01, enabled=1 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Devices: 0 Connection: 0 In-driver Connection: 3 0x02 0x03 0x04 Node 0x06 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP Control: name="HDMI/DP,pcm=7 Jack", index=0, device=0 Control: name="IEC958 Playback Con Mask", index=1, device=0 Control: name="IEC958 Playback Pro Mask", index=1, device=0 Control: name="IEC958 Playback Default", index=1, device=0 Control: name="IEC958 Playback Switch", index=1, device=0 Control: name="ELD", index=0, device=7 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0b000094: OUT Detect HBR HDMI DP Pin Default 0x18560020: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x2, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=02, enabled=1 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Devices: 0 Connection: 0 In-driver Connection: 3 0x02 0x03 0x04 Node 0x07 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP Control: name="HDMI/DP,pcm=8 Jack", index=0, device=0 Control: name="IEC958 Playback Con Mask", index=2, device=0 Control: name="IEC958 Playback Pro Mask", index=2, device=0 Control: name="IEC958 Playback Default", index=2, device=0 Control: name="IEC958 Playback Switch", index=2, device=0 Control: name="ELD", index=0, device=8 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0b000094: OUT Detect HBR HDMI DP Pin Default 0x18560030: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x3, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=03, enabled=1 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Devices: 0 Connection: 0 In-driver Connection: 3 0x02 0x03 0x04 Node 0x08 [Vendor Defined Widget] wcaps 0xf00000: Mono Codec: Realtek ALC3234 Address: 0 AFG Function Id: 0x1 (unsol 1) Vendor Id: 0x10ec0255 Subsystem Id: 0x10280680 Revision Id: 0x100002 No Modem Function Group found Default PCM: rates [0x560]: 44100 48000 96000 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Default Amp-In caps: N/A Default Amp-Out caps: N/A State of AFG node 0x01: Power states: D0 D1 D2 D3 D3cold CLKSTOP EPSS Power: setting=D0, actual=D0 GPIO: io=3, o=0, i=0, unsolicited=1, wake=0 IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0 IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0 IO[2]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0 Node 0x02 [Audio Output] wcaps 0x41d: Stereo Amp-Out Control: name="Front Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Device: name="ALC3234 Analog", type="Audio", device=0 Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0 Amp-Out vals: [0x46 0x46] Converter: stream=8, channel=0 PCM: rates [0x60]: 44100 48000 bits [0xe]: 16 20 24 formats [0x1]: PCM Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Node 0x03 [Audio Output] wcaps 0x41d: Stereo Amp-Out Control: name="Bass Speaker Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0 Amp-Out vals: [0x46 0x46] Converter: stream=8, channel=2 PCM: rates [0x60]: 44100 48000 bits [0xe]: 16 20 24 formats [0x1]: PCM Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Node 0x04 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x05 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x06 [Audio Output] wcaps 0x611: Stereo Digital Converter: stream=0, channel=0 Digital: Digital category: 0x0 IEC Coding Type: 0x0 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=D3, actual=D3 Node 0x07 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x08 [Audio Input] wcaps 0x10051b: Stereo Amp-In Control: name="Capture Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Capture Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Device: name="ALC3234 Analog", type="Audio", device=0 Amp-In caps: ofs=0x17, nsteps=0x3f, stepsize=0x02, mute=1 Amp-In vals: [0x26 0x26] Converter: stream=4, channel=0 SDI-Select: 0 PCM: rates [0x560]: 44100 48000 96000 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Connection: 1 0x23 Node 0x09 [Audio Input] wcaps 0x10051b: Stereo Amp-In Amp-In caps: ofs=0x17, nsteps=0x3f, stepsize=0x02, mute=1 Amp-In vals: [0x97 0x97] Converter: stream=0, channel=0 SDI-Select: 0 PCM: rates [0x560]: 44100 48000 96000 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Connection: 1 0x22 Node 0x0a [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x0b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In Control: name="Headset Mic Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=1, ofs=0 Control: name="Headset Mic Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=1, ofs=0 Control: name="Headphone Mic Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=2, ofs=0 Control: name="Headphone Mic Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=2, ofs=0 Control: name="Beep Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=4, ofs=0 Control: name="Beep Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=4, ofs=0 Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] Connection: 5 0x18 0x19 0x1a 0x1b 0x1d Node 0x0c [Audio Mixer] wcaps 0x20010b: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Connection: 2 0x02 0x0b Node 0x0d [Audio Mixer] wcaps 0x20010b: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Connection: 2 0x03 0x0b Node 0x0e [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x0f [Audio Mixer] wcaps 0x20010a: Mono Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] Connection: 1 0x0d Node 0x10 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x11 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x12 [Pin Complex] wcaps 0x40040b: Stereo Amp-In Control: name="Internal Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Internal Mic Phantom Jack", index=0, device=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] Pincap 0x00000020: IN Pin Default 0x90a60160: [Fixed] Mic at Int N/A Conn = Digital, Color = Unknown DefAssociation = 0x6, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x20: IN Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Node 0x13 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x14 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Control: name="Speaker Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Control: name="Speaker Front Phantom Jack", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x00010014: OUT EAPD Detect EAPD 0x2: EAPD Pin Default 0x90170120: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x2, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Connection: 1 0x0c Node 0x15 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x16 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x17 [Pin Complex] wcaps 0x40050c: Mono Amp-Out Control: name="Bass Speaker Playback Switch", index=0, device=0 ControlAmp: chs=1, dir=Out, idx=0, ofs=0 Control: name="Speaker Surround Phantom Jack", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00] Pincap 0x00000010: OUT Pin Default 0x90170140: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x4, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Connection: 1 0x0f Node 0x18 [Pin Complex] wcaps 0x40048b: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] Pincap 0x00003724: IN Detect Vref caps: HIZ 50 GRD 80 100 Pin Default 0x40000000: [N/A] Line Out at Ext N/A Conn = Unknown, Color = Unknown DefAssociation = 0x0, Sequence = 0x0 Pin-ctls: 0x20: IN VREF_HIZ Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In Control: name="Headset Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Headset Mic Phantom Jack", index=0, device=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] Pincap 0x00003724: IN Detect Vref caps: HIZ 50 GRD 80 100 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x24: IN VREF_80 Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x1a [Pin Complex] wcaps 0x40048b: Stereo Amp-In Control: name="Headphone Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] Pincap 0x00003724: IN Detect Vref caps: HIZ 50 GRD 80 100 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x20: IN VREF_HIZ Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x1b [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0001373c: IN OUT HP EAPD Detect Vref caps: HIZ 50 GRD 80 100 EAPD 0x2: EAPD Pin Default 0x411111f0: [N/A] Speaker at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x20: IN VREF_HIZ Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Connection: 2 0x0c* 0x0d Node 0x1c [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x1d [Pin Complex] wcaps 0x400400: Mono Pincap 0x00000020: IN Pin Default 0x41163b05: [N/A] Speaker at Ext Rear Conn = Digital, Color = Blue DefAssociation = 0x0, Sequence = 0x5 Misc = NO_PRESENCE Pin-ctls: 0x20: IN Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Node 0x1e [Pin Complex] wcaps 0x400781: Stereo Digital Pincap 0x00000014: OUT Detect Pin Default 0x411111f0: [N/A] Speaker at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Connection: 1 0x06 Node 0x1f [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono Processing caps: benign=0, ncoeff=76 Node 0x21 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Control: name="Headphone Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Control: name="Headphone Mic Jack", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0001001c: OUT HP EAPD Detect EAPD 0x2: EAPD Pin Default 0x0321102f: [Jack] HP Out at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x2, Sequence = 0xf Pin-ctls: 0xc0: OUT HP Unsolicited: tag=01, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D3, actual=D3 Connection: 2 0x0c* 0x0d Node 0x22 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] Connection: 6 0x18 0x19 0x1a 0x1b 0x1d 0x0b Node 0x23 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x00 0x00] Connection: 7 0x18 0x19 0x1a 0x1b 0x1d 0x0b 0x12 --endcollapse-- !!ALSA Device nodes !!----------------- crw-rw----+ 1 root audio 116, 2 Mar 30 12:17 /dev/snd/controlC0 crw-rw----+ 1 root audio 116, 7 Mar 30 12:17 /dev/snd/controlC1 crw-rw----+ 1 root audio 116, 6 Mar 30 12:17 /dev/snd/hwC0D0 crw-rw----+ 1 root audio 116, 10 Mar 30 12:17 /dev/snd/hwC1D0 crw-rw----+ 1 root audio 116, 3 Mar 30 12:17 /dev/snd/pcmC0D3p crw-rw----+ 1 root audio 116, 4 Mar 30 12:17 /dev/snd/pcmC0D7p crw-rw----+ 1 root audio 116, 5 Mar 30 12:17 /dev/snd/pcmC0D8p crw-rw----+ 1 root audio 116, 9 Mar 30 12:17 /dev/snd/pcmC1D0c crw-rw----+ 1 root audio 116, 8 Mar 30 12:19 /dev/snd/pcmC1D0p crw-rw----+ 1 root audio 116, 33 Mar 30 12:17 /dev/snd/timer /dev/snd/by-path: total 0 drwxr-xr-x 2 root root 80 Mar 30 12:17 . drwxr-xr-x 3 root root 260 Mar 30 12:17 .. lrwxrwxrwx 1 root root 12 Mar 30 12:17 pci-0000:00:03.0 -> ../controlC0 lrwxrwxrwx 1 root root 12 Mar 30 12:17 pci-0000:00:1b.0 -> ../controlC1 !!Aplay/Arecord output !!-------------------- APLAY **** List of PLAYBACK Hardware Devices **** card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 0: ALC3234 Analog [ALC3234 Analog] Subdevices: 0/1 Subdevice #0: subdevice #0 ARECORD **** List of CAPTURE Hardware Devices **** card 1: PCH [HDA Intel PCH], device 0: ALC3234 Analog [ALC3234 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 !!Amixer output !!------------- !!-------Mixer controls for card 0 [HDMI] Card hw:0 'HDMI'/'HDA Intel HDMI at 0xf7a1c000 irq 32' Mixer name : 'Intel Haswell HDMI' Components : 'HDA:80862807,80860101,00100000' Controls : 21 Simple ctrls : 3 Simple mixer control 'IEC958',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'IEC958',1 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'IEC958',2 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] !!-------Mixer controls for card 1 [PCH] Card hw:1 'PCH'/'HDA Intel PCH at 0xf7a18000 irq 31' Mixer name : 'Realtek ALC3234' Components : 'HDA:10ec0255,10280680,00100002' Controls : 28 Simple ctrls : 15 Simple mixer control 'Master',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 87 Mono: Playback 70 [80%] [-12.75dB] [on] Simple mixer control 'Headphone',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [off] Front Right: Playback [off] Simple mixer control 'Headphone Mic',0 Capabilities: pvolume pswitch cswitch cswitch-joined cswitch-exclusive Capture exclusive group: 0 Playback channels: Front Left - Front Right Capture channels: Mono Limits: Playback 0 - 31 Mono: Capture [off] Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'Headphone Mic Boost',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 3 Front Left: 0 [0%] [0.00dB] Front Right: 0 [0%] [0.00dB] Simple mixer control 'Speaker',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [on] Front Right: Playback [on] Simple mixer control 'Bass Speaker',0 Capabilities: pvolume pswitch pswitch-joined Playback channels: Front Left - Front Right Limits: Playback 0 - 87 Mono: Front Left: Playback 87 [100%] [0.00dB] [on] Front Right: Playback 87 [100%] [0.00dB] [on] Simple mixer control 'PCM',0 Capabilities: pvolume Playback channels: Front Left - Front Right Limits: Playback 0 - 255 Mono: Front Left: Playback 254 [100%] [-0.20dB] Front Right: Playback 254 [100%] [-0.20dB] Simple mixer control 'Front',0 Capabilities: pvolume Playback channels: Front Left - Front Right Limits: Playback 0 - 87 Mono: Front Left: Playback 87 [100%] [0.00dB] Front Right: Playback 87 [100%] [0.00dB] Simple mixer control 'Beep',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'Capture',0 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 63 Front Left: Capture 38 [60%] [11.25dB] [on] Front Right: Capture 38 [60%] [11.25dB] [on] Simple mixer control 'Auto-Mute Mode',0 Capabilities: enum Items: 'Disabled' 'Enabled' Item0: 'Disabled' Simple mixer control 'Headset Mic',0 Capabilities: pvolume pswitch cswitch cswitch-joined cswitch-exclusive Capture exclusive group: 0 Playback channels: Front Left - Front Right Capture channels: Mono Limits: Playback 0 - 31 Mono: Capture [off] Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'Headset Mic Boost',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 3 Front Left: 0 [0%] [0.00dB] Front Right: 0 [0%] [0.00dB] Simple mixer control 'Internal Mic',0 Capabilities: cswitch cswitch-joined cswitch-exclusive Capture exclusive group: 0 Capture channels: Mono Mono: Capture [on] Simple mixer control 'Internal Mic Boost',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 3 Front Left: 0 [0%] [0.00dB] Front Right: 0 [0%] [0.00dB] !!Alsactl output !!-------------- --startcollapse-- state.HDMI { control.1 { iface CARD name 'HDMI/DP,pcm=3 Jack' value false comment { access read type BOOLEAN count 1 } } control.2 { iface MIXER name 'IEC958 Playback Con Mask' value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.3 { iface MIXER name 'IEC958 Playback Pro Mask' value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.4 { iface MIXER name 'IEC958 Playback Default' value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write' type IEC958 count 1 } } control.5 { iface MIXER name 'IEC958 Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.6 { iface PCM device 3 name ELD value '' comment { access 'read volatile' type BYTES count 0 } } control.7 { iface CARD name 'HDMI/DP,pcm=7 Jack' value false comment { access read type BOOLEAN count 1 } } control.8 { iface MIXER name 'IEC958 Playback Con Mask' index 1 value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.9 { iface MIXER name 'IEC958 Playback Pro Mask' index 1 value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.10 { iface MIXER name 'IEC958 Playback Default' index 1 value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write' type IEC958 count 1 } } control.11 { iface MIXER name 'IEC958 Playback Switch' index 1 value true comment { access 'read write' type BOOLEAN count 1 } } control.12 { iface PCM device 7 name ELD value '' comment { access 'read volatile' type BYTES count 0 } } control.13 { iface CARD name 'HDMI/DP,pcm=8 Jack' value false comment { access read type BOOLEAN count 1 } } control.14 { iface MIXER name 'IEC958 Playback Con Mask' index 2 value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.15 { iface MIXER name 'IEC958 Playback Pro Mask' index 2 value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.16 { iface MIXER name 'IEC958 Playback Default' index 2 value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write' type IEC958 count 1 } } control.17 { iface MIXER name 'IEC958 Playback Switch' index 2 value true comment { access 'read write' type BOOLEAN count 1 } } control.18 { iface PCM device 8 name ELD value '' comment { access 'read volatile' type BYTES count 0 } } control.19 { iface PCM device 3 name 'Playback Channel Map' value.0 0 value.1 0 value.2 0 value.3 0 value.4 0 value.5 0 value.6 0 value.7 0 comment { access 'read write' type INTEGER count 8 range '0 - 36' } } control.20 { iface PCM device 7 name 'Playback Channel Map' value.0 0 value.1 0 value.2 0 value.3 0 value.4 0 value.5 0 value.6 0 value.7 0 comment { access 'read write' type INTEGER count 8 range '0 - 36' } } control.21 { iface PCM device 8 name 'Playback Channel Map' value.0 0 value.1 0 value.2 0 value.3 0 value.4 0 value.5 0 value.6 0 value.7 0 comment { access 'read write' type INTEGER count 8 range '0 - 36' } } } state.PCH { control.1 { iface MIXER name 'Front Playback Volume' value.0 87 value.1 87 comment { access 'read write' type INTEGER count 2 range '0 - 87' dbmin -6525 dbmax 0 dbvalue.0 0 dbvalue.1 0 } } control.2 { iface MIXER name 'Speaker Playback Switch' value.0 true value.1 true comment { access 'read write' type BOOLEAN count 2 } } control.3 { iface MIXER name 'Bass Speaker Playback Volume' value.0 87 value.1 87 comment { access 'read write' type INTEGER count 2 range '0 - 87' dbmin -6525 dbmax 0 dbvalue.0 0 dbvalue.1 0 } } control.4 { iface MIXER name 'Bass Speaker Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.5 { iface MIXER name 'Headphone Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.6 { iface MIXER name 'Headset Mic Playback Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 31' dbmin -3450 dbmax 1200 dbvalue.0 -3450 dbvalue.1 -3450 } } control.7 { iface MIXER name 'Headset Mic Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.8 { iface MIXER name 'Headphone Mic Playback Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 31' dbmin -3450 dbmax 1200 dbvalue.0 -3450 dbvalue.1 -3450 } } control.9 { iface MIXER name 'Headphone Mic Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.10 { iface MIXER name 'Auto-Mute Mode' value Disabled comment { access 'read write' type ENUMERATED count 1 item.0 Disabled item.1 Enabled } } control.11 { iface MIXER name 'Capture Source' value 'Internal Mic' comment { access 'read write' type ENUMERATED count 1 item.0 'Headset Mic' item.1 'Headphone Mic' item.2 'Internal Mic' } } control.12 { iface MIXER name 'Capture Volume' value.0 38 value.1 38 comment { access 'read write' type INTEGER count 2 range '0 - 63' dbmin -1725 dbmax 3000 dbvalue.0 1125 dbvalue.1 1125 } } control.13 { iface MIXER name 'Capture Switch' value.0 true value.1 true comment { access 'read write' type BOOLEAN count 2 } } control.14 { iface MIXER name 'Headset Mic Boost Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 3' dbmin 0 dbmax 3000 dbvalue.0 0 dbvalue.1 0 } } control.15 { iface MIXER name 'Headphone Mic Boost Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 3' dbmin 0 dbmax 3000 dbvalue.0 0 dbvalue.1 0 } } control.16 { iface MIXER name 'Internal Mic Boost Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 3' dbmin 0 dbmax 3000 dbvalue.0 0 dbvalue.1 0 } } control.17 { iface MIXER name 'Master Playback Volume' value 70 comment { access 'read write' type INTEGER count 1 range '0 - 87' dbmin -6525 dbmax 0 dbvalue.0 -1275 } } control.18 { iface MIXER name 'Master Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.19 { iface CARD name 'Headset Mic Phantom Jack' value true comment { access read type BOOLEAN count 1 } } control.20 { iface CARD name 'Headphone Mic Jack' value false comment { access read type BOOLEAN count 1 } } control.21 { iface CARD name 'Internal Mic Phantom Jack' value true comment { access read type BOOLEAN count 1 } } control.22 { iface CARD name 'Speaker Front Phantom Jack' value true comment { access read type BOOLEAN count 1 } } control.23 { iface CARD name 'Speaker Surround Phantom Jack' value true comment { access read type BOOLEAN count 1 } } control.24 { iface MIXER name 'Beep Playback Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 31' dbmin -3450 dbmax 1200 dbvalue.0 -3450 dbvalue.1 -3450 } } control.25 { iface MIXER name 'Beep Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.26 { iface PCM name 'Playback Channel Map' value.0 3 value.1 4 value.2 8 value.3 8 comment { access read type INTEGER count 4 range '0 - 36' } } control.27 { iface PCM name 'Capture Channel Map' value.0 0 value.1 0 comment { access read type INTEGER count 2 range '0 - 36' } } control.28 { iface MIXER name 'PCM Playback Volume' value.0 254 value.1 254 comment { access 'read write user' type INTEGER count 2 range '0 - 255' tlv '0000000100000008ffffec1400000014' dbmin -5100 dbmax 0 dbvalue.0 -20 dbvalue.1 -20 } } } --endcollapse-- !!All Loaded Modules !!------------------ Module !!Sysfs Files !!----------- /sys/class/sound/hwC0D0/init_pin_configs: 0x05 0x18560010 0x06 0x18560020 0x07 0x18560030 /sys/class/sound/hwC0D0/driver_pin_configs: /sys/class/sound/hwC0D0/user_pin_configs: /sys/class/sound/hwC0D0/init_verbs: /sys/class/sound/hwC0D0/hints: /sys/class/sound/hwC1D0/init_pin_configs: 0x12 0x90a60160 0x14 0x90170120 0x17 0x90170140 0x18 0x40000000 0x19 0x411111f0 0x1a 0x411111f0 0x1b 0x411111f0 0x1d 0x41163b05 0x1e 0x411111f0 0x21 0x0321102f /sys/class/sound/hwC1D0/driver_pin_configs: 0x19 0x01a1913c 0x1a 0x01a1913d /sys/class/sound/hwC1D0/user_pin_configs: /sys/class/sound/hwC1D0/init_verbs: /sys/class/sound/hwC1D0/hints: !!ALSA/HDA dmesg !!-------------- [ 0.892364] usbhid: USB HID core driver [ 0.892529] snd_hda_intel 0000:00:03.0: enabling device (0000 -> 0002) [ 0.892605] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops) [ 0.892618] snd_hda_intel 0000:00:1b.0: enabling device (0000 -> 0002) [ 0.892818] TCP: cubic registered -- [ 0.898597] PM: Hibernation image not present or could not be loaded. [ 0.898604] ALSA device list: [ 0.898605] No soundcards found. [ 0.903878] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input9 [ 0.903942] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input10 [ 0.904002] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input11 [ 0.906403] [drm] GMBUS [i915 gmbus vga] timed out, falling back to bit banging on pin 2 [ 0.923152] fbcon: inteldrmfb (fb0) is primary device [ 0.938905] snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC3234: line_outs=2 (0x14/0x17/0x0/0x0/0x0) type:speaker [ 0.938907] snd_hda_codec_realtek hdaudioC1D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) [ 0.938908] snd_hda_codec_realtek hdaudioC1D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0) [ 0.938908] snd_hda_codec_realtek hdaudioC1D0: mono: mono_out=0x0 [ 0.938909] snd_hda_codec_realtek hdaudioC1D0: inputs: [ 0.938910] snd_hda_codec_realtek hdaudioC1D0: Headset Mic=0x19 [ 0.938911] snd_hda_codec_realtek hdaudioC1D0: Headphone Mic=0x1a [ 0.938912] snd_hda_codec_realtek hdaudioC1D0: Internal Mic=0x12 [ 0.943084] snd_hda_codec_realtek hdaudioC1D0: Failed to find dell wmi symbol dell_app_wmi_led_set [ 0.949620] input: HDA Intel PCH Headphone Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input12 [ 1.162780] usb 1-5: new high-speed USB device number 2 using xhci_hcd
Hi, sorry for the late reply, now I'm back from vacation. At Mon, 30 Mar 2015 14:53:37 +0800, hwang4 wrote: > > > > On 2015?03?27? 08:11, Hui Wang wrote: > > On 03/26/2015 09:52 PM, Takashi Iwai wrote: > >> At Thu, 26 Mar 2015 14:10:17 +0100, > >> Takashi Iwai wrote: > >>> At Thu, 26 Mar 2015 20:24:43 +0800, > >>> Hui Wang wrote: > >>>> On 03/21/2015 02:38 PM, Hui Wang wrote: > >>>>> On 03/21/2015 12:20 AM, David Henningsson wrote: > >>>>>> On 2015-03-18 09:50, Takashi Iwai wrote: > >>>>>>> Hi, > >>>>>>> > >>>>>>> here is a patchset for supporting more aggressive PM for HD-audio. > >>>>>>> This allows to change the power state of each widget more > >>>>>>> dynamically > >>>>>>> with jack and stream states. It's activated only when the codec > >>>>>>> driver (or via sysfs or f/w patch) sets codec->power_mgmt flag. > >>>>>>> > >>>>>>> In theory, this should work for the recent Realtek codecs, but > >>>>>>> currently I have no machine for test. > >>>>>>> > >>>>>>> David, could you or your team check whether this works for > >>>>>>> ALC282 or > >>>>>>> such? Just add like: > >>>>>>> > >>>>>>> --- a/sound/pci/hda/patch_realtek.c > >>>>>>> +++ b/sound/pci/hda/patch_realtek.c > >>>>>>> @@ -5415,6 +5415,7 @@ static int patch_alc269(struct hda_codec > >>>>>>> *codec) > >>>>>>> > >>>>>>> spec = codec->spec; > >>>>>>> spec->gen.shared_mic_vref_pin = 0x18; > >>>>>>> + codec->power_mgmt = 1; > >>>>>>> > >>>>>>> snd_hda_pick_fixup(codec, alc269_fixup_models, > >>>>>>> alc269_fixup_tbl, alc269_fixups); > >>>>>>> > >>>>>>> > >>>>>>> The patchset is for for-next branch of sound git tree, but they > >>>>>>> might > >>>>>>> be applicable to 4.0-rc (or even older), too. The current > >>>>>>> patches are > >>>>>>> found in topic/hda-power branch. > >>>>>> So I hoped to be able to look at this today, but it turns out the > >>>>>> machine I was thinking of using for testing has an ALC262 codec, > >>>>>> which hardly counts as "new". > >>>>>> > >>>>>> Hui, is this something you feel like taking on? Otherwise I'll > >>>>>> try to > >>>>>> talk to someone in Taipei. > >>>>>> > >>>>> OK? I will look for the machine to do the test next week. > >>>>> > >>>>> Regards, > >>>>> Hui. > >>>>> > >>>> Sorry for late response, today is my first day in the office back from > >>>> vacation, I checked all machines in the Beijing office, none of > >>>> them has > >>>> the ALC282 codec, I will continue to look for the machine from > >>>> other office. > >>>> > >>>> And I did the test on the machines with the alc283, alc255, alc292 and > >>>> alc269, the testing result were same, there were no sound output from > >>>> internal speaker or headphone, and the internal mic or external mic > >>>> can't record any sound. The test steps as below: > >>>> > >>>> 1. power_save_node = 0 > >>>> checkout the hda-power branch, build the kernel based on this branch. > >>>> Install the kernel to the above machines and boot into the desktop > >>>> test internal speaker and internal mic, works very well, plug a > >>>> headset, > >>>> test headphone and external mic, works very well. > >>>> run pm_suspend, wait 5 seconds, wakeup the system, redo the above > >>>> test, > >>>> everything works very well. > >>> OK, this is expected. The patch shouldn't touch this case. > >>> > >>>> 2. power_save_node = 1 > >>>> enable the power_save_node as below: > >>>> @@ -5426,6 +5426,8 @@ static int patch_alc269(struct hda_codec *codec) > >>>> > >>>> alc_auto_parse_customize_define(codec); > >>>> > >>>> + codec->power_save_node = 1; > >>>> + > >>>> if (has_cdefine_beep(codec)) > >>>> spec->gen.beep_nid = 0x01; > >>>> rebuild the kernel, install the kernel to the above machines and boot > >>>> into the desktop > >>>> test internal speaker and internal mic, we can play sound to internal > >>>> speaker without any errors, but I can't hear any sound from the > >>>> speaker; > >>>> I can use the internal mic to record without errors, but recorded file > >>>> did not include any sound pcm (maybe all 0x00 or 0xff) > >>>> I plug a headset into the headset jack, the detection works very well, > >>>> but I can't hear sound from headphone when play a sound, and I > >>>> can't use > >>>> headset mic to record any sound as well. > >>>> > >>>> > >>>> And I attached 2 alsa-info.txt, one is the power_save_node=0, the > >>>> other > >>>> is the power_save_node=1 > >>> Thanks. The alsa-info.sh outputs show no difference but the power > >>> state, so the widget attributes seem kept with the power state change, > >>> as it seems. > >>> > >>> Could you give alsa-info.sh output *during* playing with > >>> power_save_node=1? > >> Also, try to pull topic/hda-regmap branch in addition, and apply the > >> patch below. This implements the partial sync for the widget path. > >> Note that the patch is totally untested. > > Got it, I will do the test next Monday, since I can't access those > > machines until next Monday. > > > > Regards, > > Hui. > > The attached alsa-info.txt was generated when the aplay was playing a > song, it seems the widget power state did not change even the output > device was working. > > > And I also checkout the hda-regmap branch and applied the patch below, > rebuilt the kernel and used the kernel to do the test of playing and > recording, both internal devices and external devices worked very well, > I didn't see any obvious problems when using hda-regmap branch doing the > test. Great! I merged the branch now and enabled the widget power saving for Realtek codecs. Takashi
On 2015?03?30? 14:53, hwang4 wrote: > > > On 2015?03?27? 08:11, Hui Wang wrote: >> On 03/26/2015 09:52 PM, Takashi Iwai wrote: >>> At Thu, 26 Mar 2015 14:10:17 +0100, >>> Takashi Iwai wrote: >>>> At Thu, 26 Mar 2015 20:24:43 +0800, >>>> Hui Wang wrote: >>>>> On 03/21/2015 02:38 PM, Hui Wang wrote: >>>>>> On 03/21/2015 12:20 AM, David Henningsson wrote: >>>>>>> On 2015-03-18 09:50, Takashi Iwai wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> here is a patchset for supporting more aggressive PM for HD-audio. >>>>>>>> This allows to change the power state of each widget more >>>>>>>> dynamically >>>>>>>> with jack and stream states. It's activated only when the codec >>>>>>>> driver (or via sysfs or f/w patch) sets codec->power_mgmt flag. >>>>>>>> >>>>>>>> In theory, this should work for the recent Realtek codecs, but >>>>>>>> currently I have no machine for test. >>>>>>>> >>>>>>>> David, could you or your team check whether this works for >>>>>>>> ALC282 or >>>>>>>> such? Just add like: >>>>>>>> >>>>>>>> --- a/sound/pci/hda/patch_realtek.c >>>>>>>> +++ b/sound/pci/hda/patch_realtek.c >>>>>>>> @@ -5415,6 +5415,7 @@ static int patch_alc269(struct hda_codec >>>>>>>> *codec) >>>>>>>> >>>>>>>> spec = codec->spec; >>>>>>>> spec->gen.shared_mic_vref_pin = 0x18; >>>>>>>> + codec->power_mgmt = 1; >>>>>>>> >>>>>>>> snd_hda_pick_fixup(codec, alc269_fixup_models, >>>>>>>> alc269_fixup_tbl, alc269_fixups); >>>>>>>> >>>>>>>> >>>>>>>> The patchset is for for-next branch of sound git tree, but they >>>>>>>> might >>>>>>>> be applicable to 4.0-rc (or even older), too. The current >>>>>>>> patches are >>>>>>>> found in topic/hda-power branch. >>>>>>> So I hoped to be able to look at this today, but it turns out the >>>>>>> machine I was thinking of using for testing has an ALC262 codec, >>>>>>> which hardly counts as "new". >>>>>>> >>>>>>> Hui, is this something you feel like taking on? Otherwise I'll >>>>>>> try to >>>>>>> talk to someone in Taipei. >>>>>>> >>>>>> OK? I will look for the machine to do the test next week. >>>>>> >>>>>> Regards, >>>>>> Hui. >>>>>> >>>>> Sorry for late response, today is my first day in the office back >>>>> from >>>>> vacation, I checked all machines in the Beijing office, none of >>>>> them has >>>>> the ALC282 codec, I will continue to look for the machine from >>>>> other office. >>>>> >>>>> And I did the test on the machines with the alc283, alc255, alc292 >>>>> and >>>>> alc269, the testing result were same, there were no sound output from >>>>> internal speaker or headphone, and the internal mic or external mic >>>>> can't record any sound. The test steps as below: >>>>> >>>>> 1. power_save_node = 0 >>>>> checkout the hda-power branch, build the kernel based on this branch. >>>>> Install the kernel to the above machines and boot into the desktop >>>>> test internal speaker and internal mic, works very well, plug a >>>>> headset, >>>>> test headphone and external mic, works very well. >>>>> run pm_suspend, wait 5 seconds, wakeup the system, redo the above >>>>> test, >>>>> everything works very well. >>>> OK, this is expected. The patch shouldn't touch this case. >>>> >>>>> 2. power_save_node = 1 >>>>> enable the power_save_node as below: >>>>> @@ -5426,6 +5426,8 @@ static int patch_alc269(struct hda_codec >>>>> *codec) >>>>> >>>>> alc_auto_parse_customize_define(codec); >>>>> >>>>> + codec->power_save_node = 1; >>>>> + >>>>> if (has_cdefine_beep(codec)) >>>>> spec->gen.beep_nid = 0x01; >>>>> rebuild the kernel, install the kernel to the above machines and boot >>>>> into the desktop >>>>> test internal speaker and internal mic, we can play sound to internal >>>>> speaker without any errors, but I can't hear any sound from the >>>>> speaker; >>>>> I can use the internal mic to record without errors, but recorded >>>>> file >>>>> did not include any sound pcm (maybe all 0x00 or 0xff) >>>>> I plug a headset into the headset jack, the detection works very >>>>> well, >>>>> but I can't hear sound from headphone when play a sound, and I >>>>> can't use >>>>> headset mic to record any sound as well. >>>>> >>>>> >>>>> And I attached 2 alsa-info.txt, one is the power_save_node=0, the >>>>> other >>>>> is the power_save_node=1 >>>> Thanks. The alsa-info.sh outputs show no difference but the power >>>> state, so the widget attributes seem kept with the power state change, >>>> as it seems. >>>> >>>> Could you give alsa-info.sh output *during* playing with >>>> power_save_node=1? >>> Also, try to pull topic/hda-regmap branch in addition, and apply the >>> patch below. This implements the partial sync for the widget path. >>> Note that the patch is totally untested. >> Got it, I will do the test next Monday, since I can't access those >> machines until next Monday. >> >> Regards, >> Hui. > > The attached alsa-info.txt was generated when the aplay was playing a > song, it seems the widget power state did not change even the output > device was working. > > > And I also checkout the hda-regmap branch and applied the patch below, > rebuilt the kernel and used the kernel to do the test of playing and > recording, both internal devices and external devices worked very > well, I didn't see any obvious problems when using hda-regmap branch > doing the test. > > Regards, > Hui. > Hi Takashi, Probably I didn't express correctly, sorry to make you mis-understand. I wanted to express that I tested hda-power and hda-regmap two branches respectively, the hda-regmap branch with your patch worked very well, but the hda-power branch didn't work on the machines with realtek codec, the nodes kept in the D3 power state no matter playing or not. It seems you enabled the power_save_node for realtek codec several days ago, it makes the HDA drivers fail to work on all machines with realtek codec. Regards, Hui.
At Thu, 09 Apr 2015 14:54:17 +0800, hwang4 wrote: > > > > On 2015?03?30? 14:53, hwang4 wrote: > > > > > > On 2015?03?27? 08:11, Hui Wang wrote: > >> On 03/26/2015 09:52 PM, Takashi Iwai wrote: > >>> At Thu, 26 Mar 2015 14:10:17 +0100, > >>> Takashi Iwai wrote: > >>>> At Thu, 26 Mar 2015 20:24:43 +0800, > >>>> Hui Wang wrote: > >>>>> On 03/21/2015 02:38 PM, Hui Wang wrote: > >>>>>> On 03/21/2015 12:20 AM, David Henningsson wrote: > >>>>>>> On 2015-03-18 09:50, Takashi Iwai wrote: > >>>>>>>> Hi, > >>>>>>>> > >>>>>>>> here is a patchset for supporting more aggressive PM for HD-audio. > >>>>>>>> This allows to change the power state of each widget more > >>>>>>>> dynamically > >>>>>>>> with jack and stream states. It's activated only when the codec > >>>>>>>> driver (or via sysfs or f/w patch) sets codec->power_mgmt flag. > >>>>>>>> > >>>>>>>> In theory, this should work for the recent Realtek codecs, but > >>>>>>>> currently I have no machine for test. > >>>>>>>> > >>>>>>>> David, could you or your team check whether this works for > >>>>>>>> ALC282 or > >>>>>>>> such? Just add like: > >>>>>>>> > >>>>>>>> --- a/sound/pci/hda/patch_realtek.c > >>>>>>>> +++ b/sound/pci/hda/patch_realtek.c > >>>>>>>> @@ -5415,6 +5415,7 @@ static int patch_alc269(struct hda_codec > >>>>>>>> *codec) > >>>>>>>> > >>>>>>>> spec = codec->spec; > >>>>>>>> spec->gen.shared_mic_vref_pin = 0x18; > >>>>>>>> + codec->power_mgmt = 1; > >>>>>>>> > >>>>>>>> snd_hda_pick_fixup(codec, alc269_fixup_models, > >>>>>>>> alc269_fixup_tbl, alc269_fixups); > >>>>>>>> > >>>>>>>> > >>>>>>>> The patchset is for for-next branch of sound git tree, but they > >>>>>>>> might > >>>>>>>> be applicable to 4.0-rc (or even older), too. The current > >>>>>>>> patches are > >>>>>>>> found in topic/hda-power branch. > >>>>>>> So I hoped to be able to look at this today, but it turns out the > >>>>>>> machine I was thinking of using for testing has an ALC262 codec, > >>>>>>> which hardly counts as "new". > >>>>>>> > >>>>>>> Hui, is this something you feel like taking on? Otherwise I'll > >>>>>>> try to > >>>>>>> talk to someone in Taipei. > >>>>>>> > >>>>>> OK? I will look for the machine to do the test next week. > >>>>>> > >>>>>> Regards, > >>>>>> Hui. > >>>>>> > >>>>> Sorry for late response, today is my first day in the office back > >>>>> from > >>>>> vacation, I checked all machines in the Beijing office, none of > >>>>> them has > >>>>> the ALC282 codec, I will continue to look for the machine from > >>>>> other office. > >>>>> > >>>>> And I did the test on the machines with the alc283, alc255, alc292 > >>>>> and > >>>>> alc269, the testing result were same, there were no sound output from > >>>>> internal speaker or headphone, and the internal mic or external mic > >>>>> can't record any sound. The test steps as below: > >>>>> > >>>>> 1. power_save_node = 0 > >>>>> checkout the hda-power branch, build the kernel based on this branch. > >>>>> Install the kernel to the above machines and boot into the desktop > >>>>> test internal speaker and internal mic, works very well, plug a > >>>>> headset, > >>>>> test headphone and external mic, works very well. > >>>>> run pm_suspend, wait 5 seconds, wakeup the system, redo the above > >>>>> test, > >>>>> everything works very well. > >>>> OK, this is expected. The patch shouldn't touch this case. > >>>> > >>>>> 2. power_save_node = 1 > >>>>> enable the power_save_node as below: > >>>>> @@ -5426,6 +5426,8 @@ static int patch_alc269(struct hda_codec > >>>>> *codec) > >>>>> > >>>>> alc_auto_parse_customize_define(codec); > >>>>> > >>>>> + codec->power_save_node = 1; > >>>>> + > >>>>> if (has_cdefine_beep(codec)) > >>>>> spec->gen.beep_nid = 0x01; > >>>>> rebuild the kernel, install the kernel to the above machines and boot > >>>>> into the desktop > >>>>> test internal speaker and internal mic, we can play sound to internal > >>>>> speaker without any errors, but I can't hear any sound from the > >>>>> speaker; > >>>>> I can use the internal mic to record without errors, but recorded > >>>>> file > >>>>> did not include any sound pcm (maybe all 0x00 or 0xff) > >>>>> I plug a headset into the headset jack, the detection works very > >>>>> well, > >>>>> but I can't hear sound from headphone when play a sound, and I > >>>>> can't use > >>>>> headset mic to record any sound as well. > >>>>> > >>>>> > >>>>> And I attached 2 alsa-info.txt, one is the power_save_node=0, the > >>>>> other > >>>>> is the power_save_node=1 > >>>> Thanks. The alsa-info.sh outputs show no difference but the power > >>>> state, so the widget attributes seem kept with the power state change, > >>>> as it seems. > >>>> > >>>> Could you give alsa-info.sh output *during* playing with > >>>> power_save_node=1? > >>> Also, try to pull topic/hda-regmap branch in addition, and apply the > >>> patch below. This implements the partial sync for the widget path. > >>> Note that the patch is totally untested. > >> Got it, I will do the test next Monday, since I can't access those > >> machines until next Monday. > >> > >> Regards, > >> Hui. > > > > The attached alsa-info.txt was generated when the aplay was playing a > > song, it seems the widget power state did not change even the output > > device was working. > > > > > > And I also checkout the hda-regmap branch and applied the patch below, > > rebuilt the kernel and used the kernel to do the test of playing and > > recording, both internal devices and external devices worked very > > well, I didn't see any obvious problems when using hda-regmap branch > > doing the test. > > > > Regards, > > Hui. > > > Hi Takashi, > > Probably I didn't express correctly, sorry to make you mis-understand. > I wanted to express that I tested hda-power and hda-regmap two branches > respectively, the hda-regmap branch with your patch worked very well, > but the hda-power branch didn't work on the machines with realtek codec, > the nodes kept in the D3 power state no matter playing or not. > > It seems you enabled the power_save_node for realtek codec several days > ago, it makes the HDA drivers fail to work on all machines with realtek > codec. Ah, OK. Then we should revert the commit later. But let's continue debugging a bit. Could you give alsa-info.sh outputs on both working and non-working states? Takashi
On 2015-04-09 08:56, Takashi Iwai wrote: > Ah, OK. Then we should revert the commit later. > > But let's continue debugging a bit. Could you give alsa-info.sh > outputs on both working and non-working states? Just running hda-emu with a realtek codec, e g codecs/canonical/alc292-dell-latitude-e5440-ccert-201307-13941 turns all nodes, including the internal speaker, into D3. And running a playback test does not switch things into D0 - even the DAC node remains in D3 even though you try to stream to it, which seems a bit strange. Could you explain how this is supposed to work?
At Thu, 09 Apr 2015 08:59:17 +0200, David Henningsson wrote: > > > > On 2015-04-09 08:56, Takashi Iwai wrote: > > Ah, OK. Then we should revert the commit later. > > > > But let's continue debugging a bit. Could you give alsa-info.sh > > outputs on both working and non-working states? > > Just running hda-emu with a realtek codec, e g > codecs/canonical/alc292-dell-latitude-e5440-ccert-201307-13941 turns all > nodes, including the internal speaker, into D3. And running a playback > test does not switch things into D0 - even the DAC node remains in D3 > even though you try to stream to it, which seems a bit strange. > > Could you explain how this is supposed to work? Doh, it was the missing stream_pm ops setup. Also I found a few other minor issues. I'm going to submit a fix patch series now. thanks Takashi
diff --git a/include/sound/hda_regmap.h b/include/sound/hda_regmap.h index 76648ccfbbf8..727a5801e298 100644 --- a/include/sound/hda_regmap.h +++ b/include/sound/hda_regmap.h @@ -202,4 +202,16 @@ snd_hdac_regmap_update_amp_stereo(struct hdac_device *codec, hda_nid_t nid, return snd_hdac_regmap_update_raw(codec, cmd, mask, val); } +/** + * snd_hdac_regmap_sync_node - sync the widget node attributes + * @codec: HD-audio codec + * @nid: NID to sync + */ +static inline void +snd_hdac_regmap_sync_node(struct hdac_device *codec, hda_nid_t nid) +{ + regcache_mark_dirty(codec->regmap); + regcache_sync_region(codec->regmap, nid << 20, ((nid + 1) << 20) -1); +} + #endif /* __SOUND_HDA_REGMAP_H */ diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index f7ccef5559de..1f2ca7be1468 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -842,10 +842,8 @@ static hda_nid_t path_power_update(struct hda_codec *codec, snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_POWER_STATE, state); changed = nid; - /* here we assume that widget attributes (e.g. amp, - * pinctl connection) don't change with local power - * state change. If not, need to sync the cache. - */ + if (state == AC_PWRST_D0) + snd_hdac_regmap_sync_node(&codec->core, nid); } } return changed;