From patchwork Thu Jan 3 12:37:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Yan X-Patchwork-Id: 10747451 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A143A1575 for ; Thu, 3 Jan 2019 14:33:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8F5A6285B0 for ; Thu, 3 Jan 2019 14:33:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 83A0C286E1; Thu, 3 Jan 2019 14:33:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RDNS_NONE autolearn=no version=3.3.1 Received: from alsa0.perex.cz (unknown [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CFFCF285B0 for ; Thu, 3 Jan 2019 14:33:10 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id DA1BC267BC8; Thu, 3 Jan 2019 13:37:52 +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 C5B20267BC8; Thu, 3 Jan 2019 13:37:50 +0100 (CET) Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) by alsa0.perex.cz (Postfix) with ESMTP id 7559E267BA9; Thu, 3 Jan 2019 13:37:47 +0100 (CET) Received: by mail-pl1-f195.google.com with SMTP id e5so15881885plb.5; Thu, 03 Jan 2019 04:37:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:from:to:cc:subject:date:mime-version :content-transfer-encoding; bh=X/eOs0tDe+kHzgoA7kwY4KDhAdScmcgX1aceCIH48N4=; b=a7b29xVEWy/UGX4x1s8VCEpgzHEdwLuIme105rwxaHOowkUBYin/wM/Zta36LFeupl wyo9Uqf+PFDs1O5FzHjKXW3WgQkQCRxsomkK+sD6Uw9zNGFP3O0MH56o7d8nqYUFpzVy smSqyZZsIq+hjji8HEHhO6lq36DbxVh7lh/ZvaRQ1NA07ci1H5iWB1bWByetKwGsllXM ctjAVlAe1C9ANbbaPv7Zeeg0uP6ViWgYlFfr2xME30lBpIDkukBS6AMtnekGjzCYGCxv hl8zQLhkXq7ZAc8xzZRd76ejZtMt8XZ7BFDvulPPJJYZRw1tcB8EgxPWeHpGdXMo4rFc sWSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:from:to:cc:subject:date:mime-version :content-transfer-encoding; bh=X/eOs0tDe+kHzgoA7kwY4KDhAdScmcgX1aceCIH48N4=; b=UtREW4gpBGPV2pu4gMl25UzFpn27blj0TjnGPebLnOXusKMJXVAy21JPzfHABtkVog pj6VkxeFNTOgW4IGn+tqf6CDlrJAYY8zjEfSwdFz3LBvF8Az8bTTw+2VFB9kXvhXvECF olhmAD+Y/X5ODGGqnxQXV9TOBwLAeTMsRNsRdNLiBJ2Y3XgFt6/zmWZoBgMOKNStCX65 oyHtjEOZEZO/wFODBd7uWxG+0qrbwYj4DggC1CWGS5IhlqHy/9j6zHk5zIVL9IeFDpzE fRQqaEwacgrV0qjFN2Jyjm7Z+GVLyD3cGnCOK11LmztHUpYKN0+Zv09jGZwvQRjkqzkG 0Bjg== X-Gm-Message-State: AJcUukeBlxXimS3Qbbdi1EXY5nk0DkzrxNMKqaO7COVv1xKShK6U4Sxm FsjiHI8LLX+s64MDRTKz1XQnYjoQWMo= X-Google-Smtp-Source: ALg8bN4qeoafaYvIz/rkPx6tiOKONAsCHm56cpltFFGBDOvKBtmi0bM8TjOY3wCP3TM4vq6iQ8GRkQ== X-Received: by 2002:a17:902:4a0c:: with SMTP id w12mr47238929pld.8.1546519065273; Thu, 03 Jan 2019 04:37:45 -0800 (PST) Received: from localhost.localdomain (123202047155.ctinets.com. [123.202.47.155]) by smtp.gmail.com with ESMTPSA id g28sm96378896pfd.100.2019.01.03.04.37.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jan 2019 04:37:44 -0800 (PST) Message-ID: <5c2e0218.1c69fb81.b8dff.5bbb@mx.google.com> X-Google-Original-Message-ID: <20190103123727.21705-1-me> From: tom.ty89@gmail.com X-Google-Original-From: me To: patch@alsa-project.org Date: Thu, 3 Jan 2019 20:37:26 +0800 X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Cc: alsa-devel@alsa-project.org, Tom Yan Subject: [alsa-devel] [PATCH 1/2] ALSA: virtuoso: add de-emphasis control 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 X-Virus-Scanned: ClamAV using ClamSMTP From: Tom Yan Add control for the de-emphasis filter in the PCM179x DACs Signed-off-by: Tom Yan diff --git a/sound/pci/oxygen/pcm1796.h b/sound/pci/oxygen/pcm1796.h index 34d07dd2d22e..d5dcb09e44cd 100644 --- a/sound/pci/oxygen/pcm1796.h +++ b/sound/pci/oxygen/pcm1796.h @@ -10,7 +10,6 @@ #define PCM1796_MUTE 0x01 #define PCM1796_DME 0x02 #define PCM1796_DMF_MASK 0x0c -#define PCM1796_DMF_DISABLED 0x00 #define PCM1796_DMF_48 0x04 #define PCM1796_DMF_441 0x08 #define PCM1796_DMF_32 0x0c diff --git a/sound/pci/oxygen/xonar_pcm179x.c b/sound/pci/oxygen/xonar_pcm179x.c index 24109d37ca09..a1c6b98b191e 100644 --- a/sound/pci/oxygen/xonar_pcm179x.c +++ b/sound/pci/oxygen/xonar_pcm179x.c @@ -331,7 +331,7 @@ static void pcm1796_init(struct oxygen *chip) struct xonar_pcm179x *data = chip->model_data; data->pcm1796_regs[0][18 - PCM1796_REG_BASE] = - PCM1796_DMF_DISABLED | PCM1796_FMT_24_I2S | PCM1796_ATLD; + PCM1796_FMT_24_I2S | PCM1796_ATLD; if (!data->broken_i2c) data->pcm1796_regs[0][18 - PCM1796_REG_BASE] |= PCM1796_MUTE; data->pcm1796_regs[0][19 - PCM1796_REG_BASE] = @@ -621,6 +621,23 @@ static void update_pcm1796_oversampling(struct oxygen *chip) pcm1796_write_cached(chip, i, 20, reg); } +static void update_pcm1796_deemph(struct oxygen *chip) +{ + struct xonar_pcm179x *data = chip->model_data; + unsigned int i; + u8 reg; + + reg = data->pcm1796_regs[0][18 - PCM1796_REG_BASE] & ~PCM1796_DMF_MASK; + if (data->current_rate == 48000) + reg |= PCM1796_DMF_48; + else if (data->current_rate == 44100) + reg |= PCM1796_DMF_441; + else if (data->current_rate == 32000) + reg |= PCM1796_DMF_32; + for (i = 0; i < data->dacs; ++i) + pcm1796_write_cached(chip, i, 18, reg); +} + static void set_pcm1796_params(struct oxygen *chip, struct snd_pcm_hw_params *params) { @@ -629,6 +646,7 @@ static void set_pcm1796_params(struct oxygen *chip, msleep(1); data->current_rate = params_rate(params); update_pcm1796_oversampling(chip); + update_pcm1796_deemph(chip); } static void update_pcm1796_volume(struct oxygen *chip) @@ -653,9 +671,11 @@ static void update_pcm1796_mute(struct oxygen *chip) unsigned int i; u8 value; - value = PCM1796_DMF_DISABLED | PCM1796_FMT_24_I2S | PCM1796_ATLD; + value = data->pcm1796_regs[0][18 - PCM1796_REG_BASE]; if (chip->dac_mute) value |= PCM1796_MUTE; + else + value &= ~PCM1796_MUTE; for (i = 0; i < data->dacs; ++i) pcm1796_write_cached(chip, i, 18, value); } @@ -777,6 +797,49 @@ static const struct snd_kcontrol_new rolloff_control = { .put = rolloff_put, }; +static int deemph_get(struct snd_kcontrol *ctl, + struct snd_ctl_elem_value *value) +{ + struct oxygen *chip = ctl->private_data; + struct xonar_pcm179x *data = chip->model_data; + + value->value.integer.value[0] = + !!(data->pcm1796_regs[0][18 - PCM1796_REG_BASE] & PCM1796_DME); + return 0; +} + +static int deemph_put(struct snd_kcontrol *ctl, + struct snd_ctl_elem_value *value) +{ + struct oxygen *chip = ctl->private_data; + struct xonar_pcm179x *data = chip->model_data; + unsigned int i; + int changed; + u8 reg; + + mutex_lock(&chip->mutex); + reg = data->pcm1796_regs[0][18 - PCM1796_REG_BASE]; + if (!value->value.integer.value[0]) + reg &= ~PCM1796_DME; + else + reg |= PCM1796_DME; + changed = reg != data->pcm1796_regs[0][18 - PCM1796_REG_BASE]; + if (changed) { + for (i = 0; i < data->dacs; ++i) + pcm1796_write(chip, i, 18, reg); + } + mutex_unlock(&chip->mutex); + return changed; +} + +static const struct snd_kcontrol_new deemph_control = { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "De-emphasis Playback Switch", + .info = snd_ctl_boolean_mono_info, + .get = deemph_get, + .put = deemph_put, +}; + static const struct snd_kcontrol_new hdav_hdmi_control = { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = "HDMI Playback Switch", @@ -1011,6 +1074,10 @@ static int add_pcm1796_controls(struct oxygen *chip) snd_ctl_new1(&rolloff_control, chip)); if (err < 0) return err; + err = snd_ctl_add(chip->card, + snd_ctl_new1(&deemph_control, chip)); + if (err < 0) + return err; } return 0; } From patchwork Thu Jan 3 12:37:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Yan X-Patchwork-Id: 10747449 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8EE0791E for ; Thu, 3 Jan 2019 14:33:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7C9A9212E8 for ; Thu, 3 Jan 2019 14:33:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6F2D22862A; Thu, 3 Jan 2019 14:33:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RDNS_NONE autolearn=no version=3.3.1 Received: from alsa0.perex.cz (unknown [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CF868212E8 for ; Thu, 3 Jan 2019 14:33:10 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 9D613267BD7; Thu, 3 Jan 2019 13:37:55 +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 6400B267BC8; Thu, 3 Jan 2019 13:37:51 +0100 (CET) Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by alsa0.perex.cz (Postfix) with ESMTP id A4AC4267BC0; Thu, 3 Jan 2019 13:37:47 +0100 (CET) Received: by mail-pl1-f193.google.com with SMTP id e5so15881909plb.5; Thu, 03 Jan 2019 04:37:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:from:to:cc:subject:date:in-reply-to:references :mime-version:content-transfer-encoding; bh=M65/emCEEN96MvL0PUz0ALadcGEi77KgrHaf2xskel8=; b=SUx3Xts4yN2FkDMFg59js+WMU95TNne2s8AIwzzyeRvKPOcSKr+SHZVKTsbgH01PX6 +zrUq8ZJlHt/F3AwQKh4mur0rzXZC4kwSQS4fPWb4oHTxUA8Rjb3pn8SHo7d2ClsnMpL mKYdUCt+goS/qc0vIv7kJNS2NtHOKPeH9WUifyBBFJ89nmi6rxIOb6Pgd2LtrPf+Fzxo JeEqWwsMdTET9LKb+oNm6cUpCRgco3IJThxu9EAJf6lc1GaoAm/MPADUwKkndT/VgC4Z fX7gee/NTj5y3ZvhrALVkN4NUTX+Oky3m4PMTKXvLDJFdFe6Izlanz2x/oOjmHQFZs5Z IlMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:from:to:cc:subject:date:in-reply-to :references:mime-version:content-transfer-encoding; bh=M65/emCEEN96MvL0PUz0ALadcGEi77KgrHaf2xskel8=; b=BEr59OMXpP0z0YVxVEWKxeWtgXg1+0lj6rjcbm4CXD4Ic0Hfq073//6C6+BS6T2Mum /7qfRR1AxaFeuUFMJiliqtBGjMB8FWEK1gFjajCiMyZfBng1Qf8rs7XGnp+rM/OLztAZ nEXsJ1+ybVhjbOwB5s3uRmXC5S4BpbIBnoI1o0hM0toU3TMCVhKaXpqGvJQ+TNEJhmxm J3zEyRJmnNYdTwr5BRlcn1okbog7CR40WJ/u8P/9HdVfebFoB7kv/qh8cnFYAFBdfVmR Gosk5Os6xWSXQHTjdm5aTUn1NBCpvsI9UhKZTMJxNaZSaGYBsfczueg448L+u3fkNmtC W/uQ== X-Gm-Message-State: AJcUukdsstn+95NyTDfmEKpW75QuqPcu/nnDYKdYS7mEoJaK5c7AdV9l zirGM5Hxl2BzVN05J2mQ3aUWOdZFPLM= X-Google-Smtp-Source: ALg8bN7flh6HGg4FDW1tWBk3Q6j6z2c8FRoj/J0ydmEhRFqlCG913Mx4VHDQz7m0fqvIbz6D0iRf1g== X-Received: by 2002:a17:902:3181:: with SMTP id x1mr5747830plb.58.1546519066853; Thu, 03 Jan 2019 04:37:46 -0800 (PST) Received: from localhost.localdomain (123202047155.ctinets.com. [123.202.47.155]) by smtp.gmail.com with ESMTPSA id g28sm96378896pfd.100.2019.01.03.04.37.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jan 2019 04:37:46 -0800 (PST) Message-ID: <5c2e021a.1c69fb81.b8dff.5bbe@mx.google.com> X-Google-Original-Message-ID: <20190103123727.21705-2-me> From: tom.ty89@gmail.com X-Google-Original-From: me To: patch@alsa-project.org Date: Thu, 3 Jan 2019 20:37:27 +0800 X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103123727.21705-1-me> References: <20190103123727.21705-1-me> MIME-Version: 1.0 Cc: alsa-devel@alsa-project.org, Tom Yan Subject: [alsa-devel] [PATCH 2/2] ALSA: oxygen: initialize spdif_playback_enable to 0 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 X-Virus-Scanned: ClamAV using ClamSMTP From: Tom Yan oxygen_init() has been clearing the OXYGEN_SPDIF_OUT_ENABLE bit and initializing dac_mute to 1. Signed-off-by: Tom Yan diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index b4ef5804212d..6a743c878415 100644 --- a/sound/pci/oxygen/oxygen_lib.c +++ b/sound/pci/oxygen/oxygen_lib.c @@ -373,7 +373,7 @@ static void oxygen_init(struct oxygen *chip) for (i = 0; i < 8; ++i) chip->dac_volume[i] = chip->model.dac_volume_min; chip->dac_mute = 1; - chip->spdif_playback_enable = 1; + chip->spdif_playback_enable = 0; chip->spdif_bits = OXYGEN_SPDIF_C | OXYGEN_SPDIF_ORIGINAL | (IEC958_AES1_CON_PCM_CODER << OXYGEN_SPDIF_CATEGORY_SHIFT); chip->spdif_pcm_bits = chip->spdif_bits;