Received: by 10.192.165.148 with SMTP id m20csp54407imm; Thu, 3 May 2018 14:45:49 -0700 (PDT) X-Google-Smtp-Source: AB8JxZot8pGpsnMZCVv+SYT0YwDYvliEuDfwEc3Jd6zDYmT5BGzKYmiafkeCDVJjv5xNItyhyptl X-Received: by 2002:a17:902:b589:: with SMTP id a9-v6mr25431113pls.149.1525383949781; Thu, 03 May 2018 14:45:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525383949; cv=none; d=google.com; s=arc-20160816; b=h/G1cGPbEGRv6RYcnmvEv1o1wp4G5EgjA/XxtHzOAxcTXjmxx4w8R5AsPL6rn+Zjcs vWQOCgcdGLBdCzXifvCYjIwA59lSpRDqQYzWKjR5R7g4IuIZCtWvi7h1Nh9Zihtaqx6y sW+JYnt2PLWgVTGamemf+kZKpWQR5Y+ByiYxdEOsuRNYLQPKbSXeB7QqSTNAFtLSJ1wS 30p4fLQg7TUjSun+/6EfCudKvpBmY89+0e7JPLQC73sp63s4PKSevM75njtvHhYxZJ94 8C3fCeUnN/omBb58DctV7Gg+GpeyVFRlF38tPo+1r706HFNnn5VjnJbKbMlcywbRFUnJ 4pNw== 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=pD9iL6LUf8TqZBG5eI1HD4v/nNdxp7z4wpEorsPS9rM=; b=ZZ9TxELTtWwpxo/U9bNVG6iSqUoZXuPy6gWoFJcnCH8nh2L71bDxeGS5BOGjLm5Cwr ffr3hxKkDUEg85Ovisa1EDiGbfP7NXNRL0O/UVVWANvatXw+I6g1VGtUPOMB5quu/7QX ysS7WZGkB+2AJDwOn3OTvciIQKfnX+33c+DGJzIqAk2N+TjwDWbTKyqDmQWiT1zpWYpW 0QNy9T3f2oJTtoop7DSBc8nmGaCO0JZdH91uQu3Hh6Ptg1A58oz0Ntmocb61mgK5YD8T dA3hj0Y8tFg4P4g4IuJP82tawB34C5M1hAa0cWiGOYJ9LogrJ+0hvcPwWwy6lZReqXs0 i4Pg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=T750m3ZJ; 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 e7-v6si14379998plk.397.2018.05.03.14.45.35; Thu, 03 May 2018 14:45:49 -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=T750m3ZJ; 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 S1751644AbeECVoC (ORCPT + 99 others); Thu, 3 May 2018 17:44:02 -0400 Received: from mail-it0-f65.google.com ([209.85.214.65]:37713 "EHLO mail-it0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751493AbeECVn1 (ORCPT ); Thu, 3 May 2018 17:43:27 -0400 Received: by mail-it0-f65.google.com with SMTP id 70-v6so1119548ity.2 for ; Thu, 03 May 2018 14:43:27 -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=pD9iL6LUf8TqZBG5eI1HD4v/nNdxp7z4wpEorsPS9rM=; b=T750m3ZJBfQeo+dZOVwRWPYlnRsjFXCQ4L/qy606yPTMhy2AP8/D+XSDsUKWCe+3NE BeEloeKuYv6W9V0eHWxLkyQPcTgAOwcvqHMJvoaceylcU5W/xiheeP1nquA4j/XgvxRo gL31TCtrwaBHKx1ajpAmekaLc82SnmK4zlcdMWgDSskAkKoLXaYmCX62lhIbVOAb9fgc 2mOzGa7OTGXQY7j3+++FCWM/kGUXosgW41U/033l+HZ1ab+YL1IP7cTcDl2j4FXmm9a4 hTozo6Inmj2Z7lzFx+SYx7N4uI3btZL6CJDFunA68kHSu26+K8lrBw6gDzNktBh8fFqe lXRg== 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=pD9iL6LUf8TqZBG5eI1HD4v/nNdxp7z4wpEorsPS9rM=; b=hSa+ydZmIwX/T5/hyjZZZs1hzEnND5+9/C+yd2Oy4BPZm0/o2qiycQJ38rccm6H1fb wKSFyBLg/EmqrRxFFa0T1QH8LMgYsPc72zI50SBgZ5WK4oDbWxJ/MoGTV5omsdeAXvh+ PWt1UTGED1RcMSP087LvcKOINsacS66ncBdhqkPhvwJMRSr8e8mDF5+ZQtEB++Bz+LS3 peweZ+/KYG0DhFEqDddCYT//BrBzqM5fdJx6sCbhXWiwuCWz06P1E48cTB3vJMgITnoY DUn6kWzTc9B44CBoQLOxvkP8v7kyWeWFlVdJjLa7YPnkjSrs3qrXuOQ2RgUUqottl50P 6YzA== X-Gm-Message-State: ALQs6tB0sA/ttmTkyI4Dw9pxmphL7Vic1gWzkGWbj8SvuXxvBjI/ngPz h0FGCUcRr7ygYLrp00qtxYw= X-Received: by 2002:a24:f282:: with SMTP id j124-v6mr20650426ith.108.1525383807228; Thu, 03 May 2018 14:43:27 -0700 (PDT) Received: from localhost.localdomain ([2605:a000:1316:4462:30e7:9a4b:7da5:3c1c]) by smtp.googlemail.com with ESMTPSA id u77-v6sm263119ita.30.2018.05.03.14.43.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 03 May 2018 14:43:26 -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: Thu, 3 May 2018 17:42:49 -0400 Message-Id: <1525383771-11105-8-git-send-email-conmanx360@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1525383771-11105-1-git-send-email-conmanx360@gmail.com> References: <1525383771-11105-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 | 72 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c index 9d19a275..ba166cb 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c @@ -3969,6 +3969,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, "ca0132_alt_set_vipsource"); + + 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, "ca0132_alt_set_vipsource off."); + 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, "ca0132_alt_set_vipsource on."); + 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. @@ -4132,6 +4197,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; @@ -4344,7 +4410,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; } @@ -6381,7 +6450,6 @@ static int ca0132_init(struct hda_codec *codec) if (dsp_loaded) { if (spec->quirk == QUIRK_SBZ) sbz_dsp_startup_check(codec); - return 0; } else { spec->dsp_reload = true; -- 2.7.4