Received: by 10.192.165.148 with SMTP id m20csp3774703imm; Mon, 7 May 2018 19:33:45 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoWJkw/ARfDlognFbooCZHaA3LBJ+8AmVx7rcWXnpIqK/qRQAu5TAh0v/BPXH7v02bbQ0zR X-Received: by 10.98.58.28 with SMTP id h28mr38336411pfa.209.1525746825094; Mon, 07 May 2018 19:33:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525746825; cv=none; d=google.com; s=arc-20160816; b=mcW3sLBasdRmpJ+yNshUfbR6yMOCnFhKXv61wY6UPMZueM8XrvLxQxZxqaSE1mlB5b DzSfKqYTrtsdrb9HWuqNGCKorWHtWHKjY8ZMjjbPNe267U+O3VbWjttBd8WAliCUFHJG xM7HzwHlObJSaerF6zU/H84xh4iz0Cf/MY+PlRIsmFo7u3jKiuxeApVnhlSx6n9r6KI0 0ldDK834QY7xUiKwrO0wUGJpSwD4YS/wXQqYSjEO36eWman9sPacDD5MgYEq57MzW+ca y80YqQtua+xrIC3ylIwL7sIB3x6w3ukfKe4Jjyl+eRMNPhoSVX1eDzsq0WmF5lc+mVw6 gSog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:in-reply-to:message-id:date :subject:cc:from:dkim-signature:arc-authentication-results; bh=nQDzUEVkJZcrKUauCfPFMCT+KjoOnJ8mHBZCFmrv68w=; b=gTuyoLoFzopK2Ylu9eYbtrBiLXNf5bfkj9GjzKucE6TKkKjnL4VkuiGPPDpbIUb0O3 BFEbWL0VdBHGNyMyT0O6H84okY0z6Z3eF/PxEPkrS0JKzbK6dIoTfMGPUk6MEFYLBXMw 42N/yalxUfrgkxKZ5kg9pmWFLxv0FLgAeGZL+Yu8eDSnwaKWUFnBLda/m1MHLXSRJAqk fxTJFiN9fa0mMA7/iO9Wt00gcPDbNUWUsta8g0UArBQWXd8snEf5A0GXP6G/k1hqoVQ9 q9ErnZaMgDHUT9AI/31W/DpyBW1gq4cG9/IK3wCJf13rdk9D5fLKnW599RsouFNJGF/p s60A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=LAGLHr5G; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r74si22796022pfl.260.2018.05.07.19.33.30; Mon, 07 May 2018 19:33:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=LAGLHr5G; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754039AbeEHCcb (ORCPT + 99 others); Mon, 7 May 2018 22:32:31 -0400 Received: from mail-it0-f66.google.com ([209.85.214.66]:51575 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753867AbeEHCc3 (ORCPT ); Mon, 7 May 2018 22:32:29 -0400 Received: by mail-it0-f66.google.com with SMTP id n202-v6so14448781ita.1 for ; Mon, 07 May 2018 19:32:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nQDzUEVkJZcrKUauCfPFMCT+KjoOnJ8mHBZCFmrv68w=; b=LAGLHr5GvKSjrRHU9yvYlb3X8+LdNwiKOcqoWtKdYw0SnJz/2qtexLzWG6L0KmmLvB Wp5IcdiKs18/22/siR0D/r8R2HY2EhL9FH9jOBiWRC4qo9tJ5fKRBMaYot8oj8dBhQhb 4UO2otHSQIgTCCaHDP/QYKe5inw753gS4Bse+9flptEPuezLzxdQMZCJ72qUzuUXCKdx 635EGFlJ/N1sRf016lTIys42bGY1pjpebIWzJjZ0a1Hd5wD+Fvn2O5GTDw+NoxPRB+8e lpUb1FiHkW1VZoRJXFqyfR3qgyGzsy5Sz1CnRm+Qhvv7Y2905svn+C4bsYxRzCO3nmv4 IO3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nQDzUEVkJZcrKUauCfPFMCT+KjoOnJ8mHBZCFmrv68w=; b=JiOmrSl8cJRTpcGzz2cRsVj0pxN0OLK3F04PNjTGyeVnIK8Smj1+mVOALZIRR6O72E 39SQq1KrSkb69xtc/SjFCc3TI9GyAsHB9b6OcbX2NBcljfgHHlfXp77w2iuGaqA+aHsM r9G0g30O0sIBZ1xMLMHaR2d23XDrKcabtWMHZvYWIh+9iTGRNyxjff50RYVp8bDfJGmR 9+oVnL+2zo+x7rHX/pH73k7ts+9hPYm7CmU6bY1EkYFZQDhuSauebfyWq3K5+A20AQgX u07PPgoX9pB6Izf7qqnVErQJK8MTMaZn/QiCdNFSRg4OBt6kgTS+RZosswbWd8LS0gKO gLBA== X-Gm-Message-State: ALKqPwdKhozCiNq2vdqQs90IWEvuJBa+nrcJoBy4gy1n4qy+IxoQT1tl pualKfz3vvTZIyuQ4wZ0VVA= X-Received: by 2002:a24:56c3:: with SMTP id o186-v6mr4079062itb.127.1525746749045; Mon, 07 May 2018 19:32:29 -0700 (PDT) Received: from localhost.localdomain ([2605:a000:1316:4462:d951:8657:56b7:4002]) by smtp.googlemail.com with ESMTPSA id l22-v6sm4947954ita.8.2018.05.07.19.32.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 07 May 2018 19:32:28 -0700 (PDT) From: Connor McAdams Cc: o-takashi@sakamocchi.jp, Connor McAdams , Jaroslav Kysela , Takashi Iwai , =?UTF-8?q?J=C3=A9r=C3=A9my=20Lefaure?= , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 12/13] ALSA: hda/ca0132: add ca0132_alt_set_vipsource Date: Mon, 7 May 2018 22:31:20 -0400 Message-Id: <1525746683-18535-13-git-send-email-conmanx360@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1525746683-18535-1-git-send-email-conmanx360@gmail.com> References: <1525746683-18535-1-git-send-email-conmanx360@gmail.com> To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add function to set vipsource on cards that use_alt_controls. Different sequence. Also, add cvoice_switch_set at end of ca0132_select_in so that when switching between inputs cvoice state is maintained. Signed-off-by: Connor McAdams --- sound/pci/hda/patch_ca0132.c | 71 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c index 311df61..12c4548 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c @@ -3976,6 +3976,71 @@ static int ca0132_set_vipsource(struct hda_codec *codec, int val) return 1; } +static int ca0132_alt_set_vipsource(struct hda_codec *codec, int val) +{ + struct ca0132_spec *spec = codec->spec; + unsigned int tmp; + + if (spec->dsp_state != DSP_DOWNLOADED) + return 0; + + codec_dbg(codec, "%s\n", __func__); + + chipio_set_stream_control(codec, 0x03, 0); + chipio_set_stream_control(codec, 0x04, 0); + + /* if CrystalVoice is off, vipsource should be 0 */ + if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] || + (val == 0) || spec->in_enum_val == REAR_LINE_IN) { + codec_dbg(codec, "%s: off.", __func__); + chipio_set_control_param(codec, CONTROL_PARAM_VIP_SOURCE, 0); + + tmp = FLOAT_ZERO; + dspio_set_uint_param(codec, 0x80, 0x05, tmp); + + chipio_set_conn_rate(codec, MEM_CONNID_MICIN1, SR_96_000); + chipio_set_conn_rate(codec, MEM_CONNID_MICOUT1, SR_96_000); + if (spec->quirk == QUIRK_R3DI) + chipio_set_conn_rate(codec, 0x0F, SR_96_000); + + + if (spec->in_enum_val == REAR_LINE_IN) + tmp = FLOAT_ZERO; + else { + if (spec->quirk == QUIRK_SBZ) + tmp = FLOAT_THREE; + else + tmp = FLOAT_ONE; + } + + dspio_set_uint_param(codec, 0x80, 0x00, tmp); + + } else { + codec_dbg(codec, "%s: on.", __func__); + chipio_set_conn_rate(codec, MEM_CONNID_MICIN1, SR_16_000); + chipio_set_conn_rate(codec, MEM_CONNID_MICOUT1, SR_16_000); + if (spec->quirk == QUIRK_R3DI) + chipio_set_conn_rate(codec, 0x0F, SR_16_000); + + if (spec->effects_switch[VOICE_FOCUS - EFFECT_START_NID]) + tmp = FLOAT_TWO; + else + tmp = FLOAT_ONE; + dspio_set_uint_param(codec, 0x80, 0x00, tmp); + + tmp = FLOAT_ONE; + dspio_set_uint_param(codec, 0x80, 0x05, tmp); + + msleep(20); + chipio_set_control_param(codec, CONTROL_PARAM_VIP_SOURCE, val); + } + + chipio_set_stream_control(codec, 0x03, 1); + chipio_set_stream_control(codec, 0x04, 1); + + return 1; +} + /* * Select the active microphone. * If autodetect is enabled, mic will be selected based on jack detection. @@ -4138,6 +4203,7 @@ static int ca0132_alt_select_in(struct hda_codec *codec) } break; } + ca0132_cvoice_switch_set(codec); snd_hda_power_down_pm(codec); return 0; @@ -4351,7 +4417,10 @@ static int ca0132_cvoice_switch_set(struct hda_codec *codec) /* set correct vipsource */ oldval = stop_mic1(codec); - ret |= ca0132_set_vipsource(codec, 1); + if (spec->use_alt_functions) + ret |= ca0132_alt_set_vipsource(codec, 1); + else + ret |= ca0132_set_vipsource(codec, 1); resume_mic1(codec, oldval); return ret; } -- 2.7.4