Received: by 10.192.165.148 with SMTP id m20csp1440663imm; Sat, 5 May 2018 12:06:56 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoqJPxS6Ay2ZpVkv1TyLd6s4HKp+CbBmShZE72WjhhwenJzfvLhK45vky6LoYZwwfNX6k2E X-Received: by 10.98.141.201 with SMTP id p70mr31241775pfk.72.1525547216341; Sat, 05 May 2018 12:06:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525547216; cv=none; d=google.com; s=arc-20160816; b=ac/i72JLASLVO+WefdBtfZFUDzVLh9UpUrtm1PfDpHKj7uY7CQoxdFW+Pd1jQ4U2B9 PIBJOb8aMwPvfaceCpNZPfu2zadVqUnbtpZVqZLR1Fvf6CrGhAr1lRu81z26sNxr9W6z 0MnihMDAKhYz7ZLX6HS0JfXfg3W4SNb30X2pBRSWWYX1KJ88zytnOIb4e/XrCgHAyLFp qCHeKz9IE+BFBjiFQXz/FFfzA3s3uw+2i3m8fmVlwB3j4gaTzY9NW1aEw9wSSJG+p8xM 0Aas6xXrEuI7Ev3UMxItB2u6vXSdPh8sDohBV+xDkHY8tx5aVlbecPd8pArWclIw0Xnn hH4g== 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=2XCJe+Y9Tx3p34UFGCw/O5Rilt5yUkdaRfb0LP/700M=; b=mSmQ5jJCGYLwbpOALnRz1JHOcp0YhcSvRxP/hNB2JA5nuUXbdVcLiB4E2ljTVBRri4 CFnhtp98JeeyI5JJv950RnxuOx5vnLmFQvQfMeM1BqUNaPRb89spvVCFp48N4Fr0lb8m FoaSx+/YL3y0MCj2xHO1C3EY9Uw150XAScxcP1gXqArSyC1HH90B8GAg7TzA62Wj70nR oj7YX5BJm+qbra4NYszAE19uIsqsr05O9t+zz/UCGh/6u1fKNu4xVNbJB2TgfUpGSBka 3CdZaKkCZGakGdK6cl4Is4Xz7RKjgPCrXSictuQRB9/+WoBBMYG/3KlnKgd6SffrF0Mp pr0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=cgL+QRyb; 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 32-v6si18123147pla.348.2018.05.05.12.06.41; Sat, 05 May 2018 12:06:56 -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=cgL+QRyb; 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 S1752024AbeEETGB (ORCPT + 99 others); Sat, 5 May 2018 15:06:01 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:38610 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751869AbeEETEV (ORCPT ); Sat, 5 May 2018 15:04:21 -0400 Received: by mail-io0-f196.google.com with SMTP id z4-v6so29314726iof.5 for ; Sat, 05 May 2018 12:04:20 -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=2XCJe+Y9Tx3p34UFGCw/O5Rilt5yUkdaRfb0LP/700M=; b=cgL+QRybzKN3alVY6y2b/ys6xlzgDs05XHTpgnFGx/L8lF3G3+VXD4iVeM/yYfeiTc IsVKX+I4Llm1zzlkFx9AvhwpP0zc/ppgnoqMkJ1FVuHqo/UjWUqxWI3dUeSmwYYsZFjG pP8CZr/5du7/v2x2MuVgR+bSu1Hb1lwUFrL+n1C21XtrfyhUSpu3d+9xA8pfcOc2LOKx 8bfjPOOEH68wYXzR81JFEd64MMY2HJ8xdvuLGVoiVimYCPrZlSCDxQMpQdisrtYbcEGh uAcZE1N/uFbl+szs33a2trL6Y/yxexBoYgI10dHsM//P5QANZlYjOhAyHb9CqkC+qVbX wr5g== 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=2XCJe+Y9Tx3p34UFGCw/O5Rilt5yUkdaRfb0LP/700M=; b=Zeb3vQFwDmomKg7wGfBy8R8g69BXoh+lypZKHWqqJm52gj02Q1EOb5U0UbF4Nn9/53 YU7boToAL8SS9ct8GBhlj/oLA5QuNMLtW9a+XiHrmvtEfcWmu81qutGWXEpCpOcF3pRk FPuEauC3XIU7Tkki+Oq/yQqjNgb9upa4EBIMIDj7Lr9AVrp+iRGu/8y11KfB/qJ+PHwa 9tfta1MzVO+Q7behgtvgvXazvrJBFiozRFjkydirkgp/qPsXila2idk1RUl5AF8tJyO6 pNn/O2EPPGZCw7OiB28kixAnMC0P9wJAFsO12QdaX0dCD0AS5sHz1p2cC5mPSc2FHdSx p7dg== X-Gm-Message-State: ALQs6tBl2+I9TI6PkQxtIroL1Yia2Vx9XBMndHDnP408UXi/ebaOlRKt v1TnW9cJU9/eCbMY8L0o+Gg= X-Received: by 2002:a6b:4e19:: with SMTP id c25-v6mr33755467iob.302.1525547060472; Sat, 05 May 2018 12:04:20 -0700 (PDT) Received: from localhost.localdomain ([2605:a000:1316:4462:961:633e:9990:7115]) by smtp.googlemail.com with ESMTPSA id q21-v6sm3314945itb.4.2018.05.05.12.04.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 05 May 2018 12:04:20 -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 v3 8/9] ALSA: hda/ca0132: add ca0132_alt_set_vipsource Date: Sat, 5 May 2018 15:03:19 -0400 Message-Id: <1525547001-17588-9-git-send-email-conmanx360@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1525547001-17588-1-git-send-email-conmanx360@gmail.com> References: <1525547001-17588-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 c7822d6..c1753b2 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