From patchwork Tue Nov 8 19:17:58 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Jordan X-Patchwork-Id: 81876 Delivered-To: patch@linaro.org Received: by 10.140.97.165 with SMTP id m34csp1368163qge; Fri, 11 Nov 2016 09:06:59 -0800 (PST) X-Received: by 10.195.6.11 with SMTP id cq11mr10030953wjd.170.1478884019146; Fri, 11 Nov 2016 09:06:59 -0800 (PST) Return-Path: Received: from alsa0.perex.cz (alsa0.perex.cz. [77.48.224.243]) by mx.google.com with ESMTP id a5si11267869wji.77.2016.11.11.09.06.58; Fri, 11 Nov 2016 09:06:59 -0800 (PST) Received-SPF: pass (google.com: domain of alsa-devel-bounces@alsa-project.org designates 77.48.224.243 as permitted sender) client-ip=77.48.224.243; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@messagingengine.com; spf=pass (google.com: domain of alsa-devel-bounces@alsa-project.org designates 77.48.224.243 as permitted sender) smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 4EA9E26753F; Fri, 11 Nov 2016 18:06:58 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail1.perex.cz X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, PRX_BODY_13, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=disabled version=3.4.0 Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 2811D26752C; Fri, 11 Nov 2016 18:04:36 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 0B118266A4E; Tue, 8 Nov 2016 20:18:05 +0100 (CET) Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by alsa0.perex.cz (Postfix) with ESMTP id F3F6D266A24 for ; Tue, 8 Nov 2016 20:17:59 +0100 (CET) Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id CD4CD2065C; Tue, 8 Nov 2016 14:17:58 -0500 (EST) Received: from web2 ([10.202.2.212]) by compute6.internal (MEProxy); Tue, 08 Nov 2016 14:17:58 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=smtpout; bh=9g 0KHCo1G9ecO+dhHZJ5QqizU7A=; b=AuCHpzs8trVkr/YAyyV98nChx28MO8vmuh BJ7iFdsqvOfBpDlvwenUDQIYtcz4ZzZ0IfaSSFfEbUEU3eUqJ8URzEDG2Wa+Mn5M MZaSg7SnEjlpDA2tsbr6oAmTvIjklb6efRa2KIE1NAYYRPpsBTWMzx5RqUJ52eTF 7afByo5uw= X-ME-Sender: Received: by mailuser.nyi.internal (Postfix, from userid 99) id 9CB4D626B6; Tue, 8 Nov 2016 14:17:58 -0500 (EST) Message-Id: <1478632678.4150909.781504841.24A2A665@webmail.messagingengine.com> From: David Jordan To: Takashi Iwai MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface - ajax-d68eb56e Date: Tue, 08 Nov 2016 11:17:58 -0800 References: <1478537979.2123627.780087305.7503B79D@webmail.messagingengine.com> <63dfc720-71c9-9556-61cc-9fec629ddef5@ladisch.de> <1478554581.3026158.780400457.4CB1BFD6@webmail.messagingengine.com> In-Reply-To: X-Mailman-Approved-At: Fri, 11 Nov 2016 12:11:10 +0100 Cc: alsa-devel@alsa-project.org, Clemens Ladisch Subject: Re: [alsa-devel] Fixup set PCM/headphones volume from Master X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org I've attached both the patch I've been working with, and the alsa-info.txt for the hardware running an unmodified kernel. -- David Jordan david2@system76.com On Tue, Nov 8, 2016, at 06:42 AM, Takashi Iwai wrote: > On Mon, 07 Nov 2016 22:36:21 +0100, > David Jordan wrote: > > > > It's HDA, Realtek ALC898. The headphones jack (analog 3.5mm output) > > (0x1b) is connected to a separate ESS DAC, which takes sound input from > > the PCM SPDIF output. > > Note that the "Master" volume is a vmaster control, and usually it > covers all DAC volume controls. > > It'd be better if you provide a patch you're fighting with, together > with alsa-info.sh output. Then other people can track the issue > either with the real h/w or hda-emu. > > > Takashi > > > > > > -- > > David Jordan > > david2@system76.com > > > > On Mon, Nov 7, 2016, at 01:19 PM, Clemens Ladisch wrote: > > > David Jordan wrote: > > > > I'm working on a kernel-level fixup for a set of hardware > > > > > > What hardware? If HDA, which codec, and how is it connected? > > > > > > > > > Regards, > > > Clemens > > _______________________________________________ > > Alsa-devel mailing list > > Alsa-devel@alsa-project.org > > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel > > upload=true&script=true&cardinfo= !!################################ !!ALSA Information Script v 0.4.64 !!################################ !!Script ran on: Tue Nov 8 18:28:09 UTC 2016 !!Linux Distribution !!------------------ Ubuntu 16.04.1 LTS \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS" NAME="Ubuntu" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 16.04.1 LTS" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" UBUNTU_CODENAME=xenial !!DMI Information !!--------------- Manufacturer: System76, Inc. Product Name: Oryx Pro Product Version: oryp2-ess Firmware Version: 1.05.04RSA2 !!Kernel Information !!------------------ Kernel release: 4.4.0-38-generic Operating System: GNU/Linux Architecture: x86_64 Processor: x86_64 SMP Enabled: Yes !!ALSA Version !!------------ Driver version: k4.4.0-38-generic Library version: 1.1.0 Utilities version: 1.1.0 !!Loaded ALSA modules !!------------------- snd_hda_intel snd_hda_intel !!Sound Servers on this system !!---------------------------- Pulseaudio: Installed - Yes (/usr/bin/pulseaudio) Running - Yes !!Soundcards recognised by ALSA !!----------------------------- 0 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0x2ffff20000 irq 127 1 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xdc080000 irq 17 !!PCI Soundcards installed in the system !!-------------------------------------- 00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31) 01:00.1 Audio device: NVIDIA Corporation Device 10f0 (rev a1) !!Advanced information - PCI Vendor/Device/Subsystem ID's !!------------------------------------------------------- 00:1f.3 0403: 8086:a170 (rev 31) Subsystem: 1558:6b02 --- 01:00.1 0403: 10de:10f0 (rev a1) Subsystem: 1558:6b01 !!Modprobe options (Sound related) !!-------------------------------- snd_pcsp: index=-2 snd_usb_audio: index=-2 snd_atiixp_modem: index=-2 snd_intel8x0m: index=-2 snd_via82xx_modem: index=-2 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 snd_hda_intel: system76-audio-patch snd_hda_intel: patch=system76-audio-patch !!Loaded sound module options !!--------------------------- !!Module: snd_hda_intel align_buffer_size : -1 bdl_pos_adj : 1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 beep_mode : N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y enable_msi : -1 id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 jackpoll_ms : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 model : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) patch : system76-audio-patch,(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) position_fix : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 power_save : 0 power_save_controller : Y probe_mask : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 probe_only : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 single_cmd : N snoop : -1 !!Module: snd_hda_intel align_buffer_size : -1 bdl_pos_adj : 1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 beep_mode : N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y enable_msi : -1 id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 jackpoll_ms : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 model : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) patch : system76-audio-patch,(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) position_fix : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 power_save : 0 power_save_controller : Y probe_mask : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 probe_only : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 single_cmd : N snoop : -1 !!HDA-Intel Codec information !!--------------------------- --startcollapse-- Codec: Realtek ALC898 Address: 0 AFG Function Id: 0x1 (unsol 1) Vendor Id: 0x10ec0899 Subsystem Id: 0x15586b02 Revision Id: 0x100003 No Modem Function Group found Default PCM: rates [0x5f0]: 32000 44100 48000 88200 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 CLKSTOP EPSS Power: setting=D0, actual=D0 GPIO: io=2, 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 Node 0x02 [Audio Output] wcaps 0x411: Stereo Device: name="ALC898 Analog", type="Audio", device=0 Converter: stream=1, 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 0x03 [Audio Output] wcaps 0x411: Stereo Converter: stream=1, 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 0x04 [Audio Output] wcaps 0x411: Stereo Converter: stream=1, 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 0x05 [Audio Output] wcaps 0x411: Stereo 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 Node 0x06 [Audio Output] wcaps 0x611: Stereo Digital 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="IEC958 Default PCM Playback Switch", index=0, device=0 Device: name="ALC898 Digital", type="SPDIF", device=1 Converter: stream=1, channel=0 Digital: Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x5f0]: 32000 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 0x07 [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="ALC898 Analog", type="Audio", device=0 Amp-In caps: ofs=0x17, nsteps=0x3f, stepsize=0x02, mute=1 Amp-In vals: [0xb2 0xb2] Converter: stream=1, channel=0 SDI-Select: 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 Connection: 1 0x24 Node 0x08 [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 [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 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 [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 Connection: 1 0x22 Node 0x0a [Audio Input] wcaps 0x100791: Stereo Digital Converter: stream=0, channel=0 SDI-Select: 0 Digital: Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x570]: 32000 44100 48000 96000 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 1 0x1f Node 0x0b [Audio Mixer] wcaps 0x20010b: 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 Control: name="Beep Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=5, ofs=0 Control: name="Beep Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=5, 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] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] Connection: 10 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 Node 0x0c [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Control: name="Line Out Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0 Amp-Out vals: [0x00 0x00] Connection: 2 0x02 0x0b Node 0x0d [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Control: name="Headphone Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0 Amp-Out vals: [0x00 0x00] Connection: 2 0x03 0x0b Node 0x0e [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Control: name="Speaker Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0 Amp-Out vals: [0x00 0x00] Connection: 2 0x04 0x0b Node 0x0f [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x80 0x80] Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0 Amp-Out vals: [0x57 0x57] Connection: 2 0x05 0x0b Node 0x10 [Audio Output] wcaps 0x611: Stereo Digital Converter: stream=0, channel=0 Digital: Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x5f0]: 32000 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 0x11 [Pin Complex] wcaps 0x400701: Stereo Digital Pincap 0x00000010: OUT Pin Default 0x4000d000: [N/A] Line Out at Ext N/A Conn = Unknown, Color = UNKNOWN DefAssociation = 0x0, Sequence = 0x0 Pin-ctls: 0x40: OUT Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 1 0x10 Node 0x12 [Pin Complex] wcaps 0x400401: Stereo Pincap 0x00000020: IN Pin Default 0x90a60150: [Fixed] Mic at Int N/A Conn = Digital, Color = Unknown DefAssociation = 0x5, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x20: IN Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 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 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0001003c: IN OUT HP EAPD Detect EAPD 0x2: EAPD Pin Default 0x90170110: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 5 0x0c 0x0d 0x0e* 0x0f 0x26 Node 0x15 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0000003c: IN OUT HP Detect 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 Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 5 0x0c 0x0d* 0x0e 0x0f 0x26 Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0000003c: IN OUT HP Detect 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 Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 5 0x0c 0x0d 0x0e* 0x0f 0x26 Node 0x17 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Control: name="Line Out Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0000003c: IN OUT HP Detect Pin Default 0x01011020: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0x2, Sequence = 0x0 Pin-ctls: 0x40: OUT Unsolicited: tag=02, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 5 0x0c* 0x0d 0x0e 0x0f 0x26 Node 0x18 [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out Control: name="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] Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0000373c: IN OUT HP Detect Vref caps: HIZ 50 GRD 80 100 Pin Default 0x01a11040: [Jack] Mic at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0x4, Sequence = 0x0 Pin-ctls: 0x21: IN VREF_50 Unsolicited: tag=03, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 5 0x0c* 0x0d 0x0e 0x0f 0x26 Node 0x19 [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 0x0000373c: IN OUT HP 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 Connection: 5 0x0c* 0x0d 0x0e 0x0f 0x26 Node 0x1a [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 0x0000373c: IN OUT HP 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 Connection: 5 0x0c* 0x0d 0x0e 0x0f 0x26 Node 0x1b [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out Control: name="Headphone Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 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: 0xc0: OUT HP VREF_HIZ Unsolicited: tag=01, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 5 0x0c 0x0d* 0x0e 0x0f 0x26 Node 0x1c [Pin Complex] wcaps 0x400481: Stereo Pincap 0x00000024: IN Detect 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 Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x1d [Pin Complex] wcaps 0x400400: Mono Pincap 0x00000020: IN Pin Default 0x40330829: [N/A] CD at Ext N/A Conn = ATAPI, Color = Unknown DefAssociation = 0x2, Sequence = 0x9 Pin-ctls: 0x20: IN Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x1e [Pin Complex] wcaps 0x400701: Stereo Digital Pincap 0x00000010: OUT Pin Default 0x01441130: [Jack] SPDIF Out at Ext Rear Conn = RCA, Color = Black DefAssociation = 0x3, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 1 0x06 Node 0x1f [Pin Complex] wcaps 0x400681: Stereo Digital Pincap 0x00000020: IN 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 Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono Processing caps: benign=0, ncoeff=28 Node 0x21 [Vendor Defined Widget] wcaps 0xf00000: Mono 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] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] Connection: 11 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 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] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] Connection: 11 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b Node 0x24 [Audio Selector] wcaps 0x300101: Stereo Connection: 12 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b 0x12* Node 0x25 [Audio Output] wcaps 0x411: Stereo 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 Node 0x26 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x80 0x80] Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0 Amp-Out vals: [0x57 0x57] Connection: 2 0x25 0x0b Codec: Nvidia Generic HDMI Address: 0 AFG Function Id: 0x1 (unsol 0) Vendor Id: 0x10de0083 Subsystem Id: 0x15586b01 Revision Id: 0x100100 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 D1 D2 D3 CLKSTOP EPSS Power: setting=D0, actual=D0 GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP 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 Pincap 0x09000094: OUT Detect HBR HDMI DP Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0xf, Sequence = 0x0 Pin-ctls: 0x40: OUT Unsolicited: tag=01, enabled=1 Connection: 4 0x0a* 0x0b 0x0c 0x0d Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HBR HDMI DP Pin Default 0x585600f0: [N/A] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0xf, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 4 0x0a* 0x0b 0x0c 0x0d Node 0x06 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP 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 Pincap 0x09000094: OUT Detect HBR HDMI DP Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0xf, Sequence = 0x0 Pin-ctls: 0x40: OUT Unsolicited: tag=02, enabled=1 Connection: 4 0x0a* 0x0b 0x0c 0x0d Node 0x07 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP 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 Pincap 0x09000094: OUT Detect HBR HDMI DP Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0xf, Sequence = 0x0 Pin-ctls: 0x40: OUT Unsolicited: tag=03, enabled=1 Connection: 4 0x0a* 0x0b 0x0c 0x0d Node 0x08 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HBR HDMI DP Pin Default 0x585600f0: [N/A] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0xf, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 4 0x0a* 0x0b 0x0c 0x0d Node 0x09 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HBR HDMI DP Pin Default 0x585600f0: [N/A] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0xf, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 4 0x0a* 0x0b 0x0c 0x0d Node 0x0a [Audio Output] wcaps 0x62b1: 8-Channels Digital Stripe Converter: stream=5, channel=0 Digital: Enabled Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x0b [Audio Output] wcaps 0x62b1: 8-Channels Digital Stripe Converter: stream=0, channel=0 Digital: Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x0c [Audio Output] wcaps 0x62b1: 8-Channels Digital Stripe Converter: stream=0, channel=0 Digital: Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x0d [Audio Output] wcaps 0x62b1: 8-Channels Digital Stripe Converter: stream=0, channel=0 Digital: Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 --endcollapse-- !!ALSA Device nodes !!----------------- crw-rw----+ 1 root audio 116, 2 Nov 8 11:26 /dev/snd/controlC0 crw-rw----+ 1 root audio 116, 7 Nov 8 11:26 /dev/snd/controlC1 crw-rw----+ 1 root audio 116, 6 Nov 8 11:26 /dev/snd/hwC0D0 crw-rw----+ 1 root audio 116, 11 Nov 8 11:26 /dev/snd/hwC1D0 crw-rw----+ 1 root audio 116, 4 Nov 8 11:26 /dev/snd/pcmC0D0c crw-rw----+ 1 root audio 116, 3 Nov 8 11:26 /dev/snd/pcmC0D0p crw-rw----+ 1 root audio 116, 5 Nov 8 11:26 /dev/snd/pcmC0D1p crw-rw----+ 1 root audio 116, 8 Nov 8 11:27 /dev/snd/pcmC1D3p crw-rw----+ 1 root audio 116, 9 Nov 8 11:26 /dev/snd/pcmC1D7p crw-rw----+ 1 root audio 116, 10 Nov 8 11:26 /dev/snd/pcmC1D8p crw-rw----+ 1 root audio 116, 1 Nov 8 11:26 /dev/snd/seq crw-rw----+ 1 root audio 116, 33 Nov 8 11:26 /dev/snd/timer /dev/snd/by-path: total 0 drwxr-xr-x 2 root root 80 Nov 8 11:26 . drwxr-xr-x 3 root root 300 Nov 8 11:26 .. lrwxrwxrwx 1 root root 12 Nov 8 11:26 pci-0000:00:1f.3 -> ../controlC0 lrwxrwxrwx 1 root root 12 Nov 8 11:26 pci-0000:01:00.1 -> ../controlC1 !!Aplay/Arecord output !!-------------------- APLAY **** List of PLAYBACK Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC898 Analog [ALC898 Analog] Subdevices: 0/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 1: ALC898 Digital [ALC898 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0] Subdevices: 0/1 Subdevice #0: subdevice #0 card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2] Subdevices: 1/1 Subdevice #0: subdevice #0 ARECORD **** List of CAPTURE Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC898 Analog [ALC898 Analog] Subdevices: 0/1 Subdevice #0: subdevice #0 !!Amixer output !!------------- !!-------Mixer controls for card 0 [PCH] Card hw:0 'PCH'/'HDA Intel PCH at 0x2ffff20000 irq 127' Mixer name : 'Realtek ALC898' Components : 'HDA:10ec0899,15586b02,00100003' Controls : 32 Simple ctrls : 13 Simple mixer control 'Master',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 87 Mono: Playback 78 [90%] [-6.75dB] [on] Simple mixer control 'Headphone',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 87 Mono: Front Left: Playback 0 [0%] [-65.25dB] [off] Front Right: Playback 0 [0%] [-65.25dB] [off] Simple mixer control 'Speaker',0 Capabilities: pvolume pswitch 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 255 [100%] [0.00dB] Front Right: Playback 255 [100%] [0.00dB] Simple mixer control 'Line Out',0 Capabilities: pvolume pswitch 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 'Mic',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 '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 'IEC958',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 Default PCM',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] 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 50 [79%] [20.25dB] [off] Front Right: Capture 50 [79%] [20.25dB] [off] Simple mixer control 'Auto-Mute Mode',0 Capabilities: enum Items: 'Disabled' 'Speaker Only' 'Line Out+Speaker' Item0: 'Line Out+Speaker' Simple mixer control 'Loopback Mixing',0 Capabilities: enum Items: 'Disabled' 'Enabled' Item0: 'Enabled' !!-------Mixer controls for card 1 [NVidia] Card hw:1 'NVidia'/'HDA NVidia at 0xdc080000 irq 17' Mixer name : 'Nvidia Generic HDMI' Components : 'HDA:10de0083,15586b01,00100100' 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] !!Alsactl output !!-------------- --startcollapse-- state.PCH { control.1 { iface MIXER name 'Line Out 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 'Line Out Playback Switch' value.0 true value.1 true comment { access 'read write' type BOOLEAN count 2 } } control.3 { iface MIXER name 'Headphone Playback Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 87' dbmin -6525 dbmax 0 dbvalue.0 -6525 dbvalue.1 -6525 } } control.4 { iface MIXER name 'Headphone Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.5 { iface MIXER name '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.6 { iface MIXER name 'Speaker Playback Switch' value.0 true value.1 true comment { access 'read write' type BOOLEAN count 2 } } control.7 { iface MIXER name 'Loopback Mixing' value Enabled comment { access 'read write' type ENUMERATED count 1 item.0 Disabled item.1 Enabled } } control.8 { iface MIXER name '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 '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 'Line Out+Speaker' comment { access 'read write' type ENUMERATED count 1 item.0 Disabled item.1 'Speaker Only' item.2 'Line Out+Speaker' } } control.11 { iface MIXER name 'Capture Volume' value.0 50 value.1 50 comment { access 'read write' type INTEGER count 2 range '0 - 63' dbmin -1725 dbmax 3000 dbvalue.0 2025 dbvalue.1 2025 } } control.12 { iface MIXER name 'Capture Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.13 { iface MIXER name '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.14 { iface MIXER name 'IEC958 Playback Con Mask' value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.15 { iface MIXER name 'IEC958 Playback Pro Mask' value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } control.16 { iface MIXER name 'IEC958 Playback Default' value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write' type IEC958 count 1 } } control.17 { iface MIXER name 'IEC958 Playback Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.18 { iface MIXER name 'IEC958 Default PCM Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.19 { iface MIXER name 'Master Playback Volume' value 78 comment { access 'read write' type INTEGER count 1 range '0 - 87' dbmin -6525 dbmax 0 dbvalue.0 -675 } } control.20 { iface MIXER name 'Master Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.21 { iface CARD name 'Mic Jack' value false comment { access read type BOOLEAN count 1 } } control.22 { iface CARD name 'Internal Mic Phantom Jack' value true comment { access read type BOOLEAN count 1 } } control.23 { iface CARD name 'Line Out Jack' value false comment { access read type BOOLEAN count 1 } } control.24 { iface CARD name 'Headphone Jack' value false comment { access read type BOOLEAN count 1 } } control.25 { iface CARD name 'Speaker Phantom Jack' value true comment { access read type BOOLEAN count 1 } } control.26 { iface CARD name 'SPDIF Phantom Jack' value true comment { access read type BOOLEAN count 1 } } control.27 { 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.28 { iface MIXER name 'Beep Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.29 { iface PCM name 'Playback Channel Map' value.0 3 value.1 4 comment { access read type INTEGER count 2 range '0 - 36' } } control.30 { iface PCM name 'Capture Channel Map' value.0 3 value.1 4 comment { access read type INTEGER count 2 range '0 - 36' } } control.31 { iface PCM device 1 name 'Playback Channel Map' value.0 0 value.1 0 comment { access read type INTEGER count 2 range '0 - 36' } } control.32 { iface MIXER name 'PCM Playback Volume' value.0 255 value.1 255 comment { access 'read write user' type INTEGER count 2 range '0 - 255' tlv '0000000100000008ffffec1400000014' dbmin -5100 dbmax 0 dbvalue.0 0 dbvalue.1 0 } } } state.NVidia { 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 '0482000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write locked' 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 3 value.1 4 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' } } } --endcollapse-- !!All Loaded Modules !!------------------ Module drbg ansi_cprng ctr ccm rfcomm bnep nls_iso8859_1 snd_hda_codec_hdmi arc4 intel_rapl x86_pkg_temp_thermal snd_hda_codec_realtek intel_powerclamp snd_hda_codec_generic coretemp kvm_intel kvm i915_bpo mxm_wmi irqbypass iwlmvm crct10dif_pclmul intel_ips crc32_pclmul i2c_algo_bit mac80211 aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd uvcvideo snd_seq_midi snd_seq_midi_event snd_hda_intel videobuf2_vmalloc videobuf2_memops joydev btusb videobuf2_v4l2 snd_hda_codec btrtl videobuf2_core btbcm iwlwifi v4l2_common btintel videodev snd_hda_core snd_rawmidi mei_me media bluetooth input_leds snd_hwdep cfg80211 snd_seq rtsx_pci_ms mei snd_pcm memstick snd_seq_device serio_raw snd_timer snd soundcore shpchp wmi mac_hid acpi_pad parport_pc ppdev lp parport autofs4 btrfs xor uas usb_storage raid6_pq hid_generic usbhid hid dm_mirror dm_region_hash dm_log rtsx_pci_sdmmc nvidia_drm nvidia_modeset drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm psmouse r8169 nvidia rtsx_pci ahci mii libahci video fjes !!Sysfs Files !!----------- /sys/class/sound/hwC0D0/init_pin_configs: 0x11 0x4000d000 0x12 0x90a60150 0x14 0x90170110 0x15 0x411111f0 0x16 0x411111f0 0x17 0x01011020 0x18 0x01a11040 0x19 0x411111f0 0x1a 0x411111f0 0x1b 0x411111f0 0x1c 0x411111f0 0x1d 0x40330829 0x1e 0x01441130 0x1f 0x411111f0 /sys/class/sound/hwC0D0/driver_pin_configs: /sys/class/sound/hwC0D0/user_pin_configs: 0x1b 0x01211030 /sys/class/sound/hwC0D0/init_verbs: /sys/class/sound/hwC0D0/hints: /sys/class/sound/hwC1D0/init_pin_configs: 0x04 0x185600f0 0x05 0x585600f0 0x06 0x185600f0 0x07 0x185600f0 0x08 0x585600f0 0x09 0x585600f0 /sys/class/sound/hwC1D0/driver_pin_configs: /sys/class/sound/hwC1D0/user_pin_configs: /sys/class/sound/hwC1D0/init_verbs: /sys/class/sound/hwC1D0/hints: !!ALSA/HDA dmesg !!-------------- [ 2.926733] Bluetooth: hci0: Bootloader revision 0.0 build 2 week 52 2014 [ 2.928935] snd_hda_intel: unknown parameter 'system76-audio-patch' ignored [ 2.930985] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002) [ 2.931071] snd_hda_intel 0000:00:1f.3: Applying patch firmware 'system76-audio-patch' [ 2.931114] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002) [ 2.931152] snd_hda_intel 0000:01:00.1: Disabling MSI [ 2.931156] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client [ 2.931791] Bluetooth: hci0: Device revision is 5 -- [ 3.008519] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A) [ 3.010481] snd_hda_intel 0000:00:1f.3: failed to add i915_bpo component master (-19) [ 3.026340] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC898: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:line [ 3.026342] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=1 (0x14/0x0/0x0/0x0/0x0) [ 3.026344] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0) [ 3.026345] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0 [ 3.026345] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x1e/0x0 [ 3.026346] snd_hda_codec_realtek hdaudioC0D0: inputs: [ 3.026347] snd_hda_codec_realtek hdaudioC0D0: Mic=0x18 [ 3.026348] snd_hda_codec_realtek hdaudioC0D0: Internal Mic=0x12 [ 3.034197] intel_rapl: Found RAPL domain package -- [ 3.034203] intel_rapl: Found RAPL domain dram [ 3.035326] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input17 [ 3.035374] input: HDA Intel PCH Line Out as /devices/pci0000:00/0000:00:1f.3/sound/card0/input18 [ 3.035411] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input19 [ 3.120867] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs' -- [ 3.446425] audit: type=1400 audit(1478629606.038:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/lightdm/lightdm-guest-session//chromium" pid=747 comm="apparmor_parser" [ 3.477387] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input20 [ 3.477487] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input21 [ 3.478591] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input22 [ 3.663594] IPv6: ADDRCONF(NETDEV_UP): wlp110s0: link is not ready _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4b6d861..4419a7e 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -32,6 +32,7 @@ #include #include #include +#include #include "hda_codec.h" #include "hda_local.h" #include "hda_auto_parser.h" @@ -128,6 +129,14 @@ struct alc_spec { unsigned int coef0; struct input_dev *kb_dev; u8 alc_mute_keycode_map[1]; + + /* for clevo headphones fix */ + unsigned int hp_volume; + unsigned int num_inits; + struct snd_kcontrol *master_kctl; + struct snd_kcontrol *pcm_kctl; + struct snd_kcontrol embedded_pcm_kctl; +/* struct snd_kcontrol *master_kctl;*/ }; /* @@ -1797,6 +1806,7 @@ enum { ALC882_FIXUP_NO_PRIMARY_HP, ALC887_FIXUP_ASUS_BASS, ALC887_FIXUP_BASS_CHMAP, + ALC898_FIXUP_CLEVO_SPDIF, }; static void alc889_fixup_coef(struct hda_codec *codec, @@ -1956,6 +1966,205 @@ static void alc882_fixup_no_primary_hp(struct hda_codec *codec, } } + + + + +/* Set PCM volume from Master. HP volume is based on PCM volume exclusively. + * TODO: Trigger this function on Master Volume Change. + * TODO: Ensure appropriate scaling of PCM levels relative to Master. + */ + +#define CLEVO_PCM_MAX_VOLUME 31 + +static int snd_clevo_pcm_volume_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) +{ + + printk("SYS76: snd_clevo_pcm_volume_info\n"); + uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; + uinfo->count = 2; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = CLEVO_PCM_MAX_VOLUME; + return 0; +} + +static int snd_clevo_pcm_volume_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + + printk("SYS76: snd_clevo_pcm_volume_get\n"); + struct hda_codec *chip = snd_kcontrol_chip(kcontrol); + unsigned int idx = kcontrol->id.subdevice; + + + struct alc_spec *spec = chip->spec; + + printk("SYS76: pcm_volume get...addrs\n"); + printk("addr spec %lu \n", spec); + printk("addr codec %lu \n", chip); + printk("spec->hp_volume %u\n", spec->hp_volume); + + if (spec != 0) { + printk("meep!\n"); + ucontrol->value.integer.value[0] = CLEVO_PCM_MAX_VOLUME - spec->hp_volume;//chip->playback_volume[idx][0]; + ucontrol->value.integer.value[1] = CLEVO_PCM_MAX_VOLUME - spec->hp_volume;//chip->playback_volume[idx][1]; + } + else { + printk("leep!\n"); + ucontrol->value.integer.value[0] = CLEVO_PCM_MAX_VOLUME - 1;//chip->playback_volume[idx][0]; + ucontrol->value.integer.value[1] = CLEVO_PCM_MAX_VOLUME - 1;//chip->playback_volume[idx][1]; + } + return 0; +} + +//Okay, so this is creating the pcm_volume_ctl, but how is hard? +static int snd_clevo_pcm_volume_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct hda_codec *chip = snd_kcontrol_chip(kcontrol); + unsigned int idx; + unsigned char val; + int i, change = 0; + + printk("SYS76: snd_clevo_pcm_volume_put\n"); + + struct alc_spec *spec = chip->spec; + struct snd_card *card = chip->card; + + printk(kcontrol->id.name); + + + /* */ +/* struct snd_ctl_elem_id pcm_id;*/ +/* struct snd_kcontrol *pcm_control;*/ +/* memset(&pcm_id, 0, sizeof(pcm_id));*/ +/* pcm_id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;*/ +/* pcm_id.device = 0;*/ +/* pcm_id.index = 0;*/ +/* strcpy(pcm_id.name, "PCM Playback Volume");*/ +/* Crashes Here:*/ +/* pcm_control = snd_ctl_find_id(chip->card, &pcm_id);*/ +/* */ + + printk("SYS76: PUT snd before find mixer ctl\n"); + +/* Get the PCM Control to set it. For some reason this fails.*/ + struct snd_kcontrol * pcm_kctl = snd_hda_find_mixer_ctl(chip, "PCM Playback Volume"); + struct snd_ctl_elem_value *pcm_uctl; + + printk("SYS76: PUT snd_hda_find_mixer_ctl\n"); + + if (!pcm_kctl) + printk("SYS76: PUT no kctl\n"); + return; + pcm_uctl = kzalloc(sizeof(*pcm_uctl), GFP_KERNEL); + if (!pcm_uctl) + return; + +/* Set the PCM ucontrol from Master ucontrol*/ + val = ucontrol->value.integer.value[0]; + val &= HDA_AMP_VOLMASK; + + pcm_uctl->value.integer.value[0] = val; + pcm_uctl->value.integer.value[1] = val; + pcm_kctl->put(pcm_kctl, pcm_uctl); + + kfree(pcm_uctl); + + return change; +} + + +static void alc898_clevo_automute_hook(struct hda_codec *codec, + struct hda_jack_callback *jack) +{ + int val; + snd_hda_codec_write(codec, codec->core.afg, 0, + AC_VERB_SET_GPIO_MASK, 2); + snd_hda_codec_write(codec, codec->core.afg, 0, + AC_VERB_SET_GPIO_DIRECTION, 0); + + struct alc_spec *spec = codec->spec; + + if (snd_hda_jack_detect(codec, 0x1b) && (snd_hda_codec_read(codec, codec->core.afg, 0, + AC_VERB_GET_GPIO_DATA, 0) >= 0)) { + val = snd_hda_codec_get_pin_target(codec, 0x1b); + val |= AC_PINCTL_VREF_80; + snd_hda_set_pin_ctl(codec, 0x1b, val); + snd_hda_gen_hp_automute(codec, jack); + } else { + printk("S76: automute case B\n"); + val = snd_hda_codec_get_pin_target(codec, 0x1b); + val = val & 0xfff8; + snd_hda_set_pin_ctl(codec, 0x1b, val); + snd_hda_gen_hp_automute(codec, jack); + + /* Don't mute the digital output, needed for ESS DAC operation */ + /* TODO: This might belong in alc898_fixup_clevo instead. */ + /* struct snd_kcontrol *kctl; + kctl = snd_hda_find_mixer_ctl(codec, "IEC958 Playback Switch"); + if (!kctl) + return; + kctl->put = NULL; */ + + } +} +static void alc898_fixup_clevo(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + + printk("SYS76: version 0020\n"); + printk("SYS76: num_mixers = %u\n", spec->num_mixers); + if (action == HDA_FIXUP_ACT_PRE_PROBE) { + spec->gen.detect_hp = 1; + spec->gen.automute_speaker = 1; + spec->gen.autocfg.hp_pins[0] = 0x1b; /* copy it for automute */ + snd_hda_jack_detect_enable_callback(codec, 0x1b, + alc898_clevo_automute_hook); + spec->gen.hp_automute_hook = alc898_clevo_automute_hook; + } + + + struct snd_ctl_elem_id mid; + memset(&mid, 0, sizeof(mid)); + strcpy(mid.name, "PCM Playback Volume"); + mid.iface = SNDRV_CTL_ELEM_IFACE_MIXER; + struct snd_kcontrol * pcm_kcontrol; + pcm_kcontrol = snd_ctl_find_id(codec->card, &mid); + if (!pcm_kcontrol) { + printk("SYS76: No PCM_kcontrol\n"); + printk("SYS76: oh well\n"); + return; //returning so we don't do the master stuff until pcm exists...maybe fix kernel panic this way + } + else { + spec->pcm_kctl = pcm_kcontrol; + spec->embedded_pcm_kctl = *pcm_kcontrol; + printk("MY PCM NUMID IS: %x", pcm_kcontrol->id.numid); + } + + struct snd_ctl_elem_id sid; + memset(&sid, 0, sizeof(sid)); + strcpy(sid.name, "Master Playback Volume"); + sid.iface = SNDRV_CTL_ELEM_IFACE_MIXER; + struct snd_kcontrol * newsid; + //huh, find_id and find_numid are different...look into this + newsid = snd_ctl_find_id(codec->card, &sid); + if (!newsid) { + printk("SYS76: No PCM Playback Volume ctl\n"); + //Now try *replacing* the headphone control instead of adding another + //the snd_ctl_activate function is interesting maybe? + //snd_ctl_replace(codec->card, snd_ctl_new1(&snd_clevo_pcm_volume_control, codec), 0); + } + else { + printk("SYS76: PCM Playback Volume ctl id is %d\n", newsid->id.numid); + newsid->put = snd_clevo_pcm_volume_put; + printk("SYS76: My ID hahaha!\n"); + } +} + + static void alc_fixup_bass_chmap(struct hda_codec *codec, const struct hda_fixup *fix, int action); @@ -2195,6 +2404,10 @@ static const struct hda_fixup alc882_fixups[] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_bass_chmap, }, + [ALC898_FIXUP_CLEVO_SPDIF] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc898_fixup_clevo, + }, }; static const struct snd_pci_quirk alc882_fixup_tbl[] = { @@ -2264,6 +2477,41 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3), SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte EP45-DS3/Z87X-UD3H", ALC889_FIXUP_FRONT_HP_NO_PRESENCE), SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX), + SND_PCI_QUIRK(0x1558, 0x0872, "Clevo P870DM2/P870DM3", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x0873, "Clevo P870DM2-G/P870DM3-G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x0874, "Clevo P870DM2-G/P870DM3-G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x0875, "Clevo P870KM/P870KM1", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x0876, "Clevo P870KM-G/P870KM1_G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x65a1, "Clevo P65xHS_HP-D0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x65a2, "Clevo P65xHS_HP-D", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x65a3, "Clevo P65xHS_HP-G0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x65a4, "Clevo P65xHS_HP-G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x67a1, "Clevo P67xHS_HP-D0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x67a2, "Clevo P67xHS_HP-D", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x67a3, "Clevo P67xHS_HP-G0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x67a4, "Clevo P67xHS_HP-G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6a01, "Clevo P65xRS_RP-D0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6a02, "Clevo P65xRS_RP-D", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6a03, "Clevo P65xRS_RP-G0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6a04, "Clevo P65xRS_RP-G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6a05, "Clevo P65xRS_RP-V", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6a06, "Clevo P65xRS_RP-Direct", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6b01, "Clevo P67xRS_RP-D0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6b02, "Clevo P67xRS_RP-D", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6b03, "Clevo P67xRS_RP-G0", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6b04, "Clevo P67xRS_RP-G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6b05, "Clevo P67xRS_RP-V", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6b06, "Clevo P67xRS_RP-Direct", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7504, "Clevo P750DM2", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7505, "Clevo P750DM2G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7506, "Clevo P750KM", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7507, "Clevo P750KMG", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7705, "Clevo P775DM2", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7706, "Clevo P775DM2G", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7707, "Clevo P775KM", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7708, "Clevo P775KMG", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x7705, "System76 serw10", ALC898_FIXUP_CLEVO_SPDIF), + SND_PCI_QUIRK(0x1558, 0x6b01, "System76 oryp2-ess", ALC898_FIXUP_CLEVO_SPDIF), SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD), SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD), SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", ALC882_FIXUP_LENOVO_Y530), @@ -2277,6 +2525,7 @@ static const struct hda_model_fixup alc882_fixup_models[] = { {.id = ALC883_FIXUP_ACER_EAPD, .name = "acer-aspire"}, {.id = ALC882_FIXUP_INV_DMIC, .name = "inv-dmic"}, {.id = ALC882_FIXUP_NO_PRIMARY_HP, .name = "no-primary-hp"}, + {.id = ALC898_FIXUP_CLEVO_SPDIF, .name = "system76"}, {} };