Received: by 10.192.165.148 with SMTP id m20csp322498imm; Thu, 3 May 2018 21:22:53 -0700 (PDT) X-Google-Smtp-Source: AB8JxZq5NQYni/ZQ4AOxRSyA0w5IHqbmOFBa+wN+8CwKCVFYoD0ekOoVoZngY9mTXXPCM/53IsFL X-Received: by 2002:a17:902:1c7:: with SMTP id b65-v6mr26310255plb.298.1525407773246; Thu, 03 May 2018 21:22:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525407773; cv=none; d=google.com; s=arc-20160816; b=P3wn2o8uuw3HIJ5R/PcMFa1nQCZ2sJDhYgNDbz4tdLtdnbZ1WnX8BE0dOTIkMoFVvY kTEcZc9doyOfdBrY06NKwhlXe5wuIT+snX2X3EroYX/R7MEwZGWZkQJ4A67sdvCsfsbj vr9tz5RZ4RPSJLFp1FiK7BiWIKREIMPxM17emG7ExB0/LX1TWF9l6LciuTPo9BEpleQg 0mbt2+0SD8fflZGAB7DJRW0isSUEMFaksek9F8shg0xKVQj7Fu7EWwe/8LeibISVoYKr fPrzGW3Bitvm5CNIe7QbX6qn+ZJZcJsBq4XMf0iuQnwZJXT5wZtVylf5hQJpck8/uy4Q deLQ== 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=9A2mhQND3h7pfwZRFbFGTccYJN1QPSgekAkY0PnVgQ8=; b=q3BGfB/m3V6E6YmzSzGlwzyykEBuf/GtAdTuwDfRi3aBgcmWsQvAqFSUlFORFXLENl CzdXgSVux7EUsdA+X4znCMtbvDXU2Vhz7IOezbEi1n9C8bEmpIAXO6EoR3E23s79TMWd 3cB0rV35E7dvPiR1XjFFWmi1D+IydmJTm5xsa9QFqOAG17PmqPnsKg7Q4Iy0jeGRr9SK 39wMnRPwkpt1/aAneHyGuRbzGXZX4SgKaF/e37YZmtlMfmCH7zNRrUwV8cSbWs4IzPY/ 8PDmAVQhg19brmb40GuOOj8coxIrYr46jPEw8PpSNTEvvownFnPwQ2f2DCrxIBu3ahHd U1HA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=oJA6aV0A; 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 a5-v6si16096505pla.117.2018.05.03.21.22.39; Thu, 03 May 2018 21:22:53 -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=oJA6aV0A; 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 S1751613AbeEDEVI (ORCPT + 99 others); Fri, 4 May 2018 00:21:08 -0400 Received: from mail-it0-f67.google.com ([209.85.214.67]:34322 "EHLO mail-it0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751394AbeEDEUn (ORCPT ); Fri, 4 May 2018 00:20:43 -0400 Received: by mail-it0-f67.google.com with SMTP id c5-v6so3787946itj.1 for ; Thu, 03 May 2018 21:20:42 -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=9A2mhQND3h7pfwZRFbFGTccYJN1QPSgekAkY0PnVgQ8=; b=oJA6aV0Acj+KhSLFF7nv2JONE6ntWEPrvz45yG81uJchr4Woi+3LV/5iDXR1Mr1Wju c8VRzL4LP9SKSEQp0LSaLAX7ipOIy0A8MJiPmbnuyxkooS4TopmQstltt+uGeo04v1ri lRM3QdHRtAwX5dT5ioXLTfR3cuHdqBto7Wq79/q+Cb5s6e8j7sBPjni3rROzT5r/348z Y0cGpckJwy7OI4X0nS2/b7d1vmN8HYNZUHW/txyPi0wMdj0I32M/hUTzqfUV3w3fRYqm ijiu50R81byjLkPyghPLclc3RdgbNi/I8z0OZitdvneehKq4rJRW8AnME7a8tR8teAnh 6jzQ== 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=9A2mhQND3h7pfwZRFbFGTccYJN1QPSgekAkY0PnVgQ8=; b=sB7LztpE3v30jWr0xi2CDFj8axRzsLV+D3VoMTr2FkOuzry1RiPchB6izaMVQfES1U m64toOdM07cTD0HjC6i02ogUia/ZrrmzGdM1SF9r3tF34Uw4GuVM4+9wy/O/Xo87bV2R 0gjeIM6u1fQPQ5yiDMr5/WPiCETn7RtJJjdyhM7lKVXhEXN5hKneu/cBHXrZNMEO+ThJ EpoeMEmSHwQ32JmGHNWVQxD+9vpz43GTWixsM57cghTrGEKMb3CqiPuSZ/avS1l1z7vF aID26fTatGWc1IkwKKkOIgPmcN7ZiLqW8qjrcmjkLTsuenT2eKAj/KUS4V3HQ2tJrIpg tyjw== X-Gm-Message-State: ALQs6tC7DeDQSUQhskFouyAX3Yz5YISxaQ9u3LplEYYd2hs++dEeDesH TK/MhicdP1fQ5iI5+6iL1Qs= X-Received: by 2002:a24:64ce:: with SMTP id t197-v6mr25498870itc.91.1525407642609; Thu, 03 May 2018 21:20:42 -0700 (PDT) Received: from localhost.localdomain ([2605:a000:1316:4462:790f:f81c:25a6:fe65]) by smtp.googlemail.com with ESMTPSA id k1-v6sm605341iti.42.2018.05.03.21.20.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 03 May 2018 21:20:42 -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 8/9] add ca0132_alt_set_vipsource Date: Fri, 4 May 2018 00:19:51 -0400 Message-Id: <1525407594-25644-8-git-send-email-conmanx360@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1525407594-25644-1-git-send-email-conmanx360@gmail.com> References: <1525407594-25644-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 c0303c9..77a7704 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c @@ -3978,6 +3978,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. @@ -4140,6 +4205,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; @@ -4353,7 +4419,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