From patchwork Wed Aug 2 17:09:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 109266 Delivered-To: patch@linaro.org Received: by 10.182.45.195 with SMTP id p3csp6474597obm; Wed, 2 Aug 2017 10:11:20 -0700 (PDT) X-Received: by 10.84.128.73 with SMTP id 67mr13571349pla.155.1501693880108; Wed, 02 Aug 2017 10:11:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1501693880; cv=none; d=google.com; s=arc-20160816; b=0y1aRaeQJt8y5evR2yEqbu3qR/XltntcbqCByKZ2lU9k0ihtzMUdixTzKO/nwMJ4CK qq4GIO7dqRsyCuLXDB5D9hcW1NV4KewrHJWuupY25DCXksbj+KXXtndv8wNbIjlpXfk4 N/uLeKFj1aLSAE6L/b65Mc85XRSnA8jjV1AoXUgIC0JVGbOUEkSvmbXbJWjdzgu02qYE hNGw3fd4CIoQuM7Pxic+TJuET+4XTGpNQkLGFWNIRI/U+uebv+HePfLHj+gdstqW1Q9x 9AY23nmF52nvfPjwuJgnbqgHpJFLLKZgP7YcJ3DyOmMphC79wgDt2iT3nbpAWbeJN1JV ilsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=rzJ+Kw/zRYblLQFImq9J6g0NCbrJhB8KZmALwtHa2K4=; b=tm80JUjx3vLpRQ5O8cslN66sg4DX2Ybs0wcrSXVk5H9mA0pCOkkkoDeCorgOMYxzOt v/HyYQ2OWnZsh7QivreBRSezhNLGzK8St0h3iKC00XUF08Q6l7Vx9Wumzl4NMKGnXCTW KJDjfbluQ7R+XsKhtcPAqr8xinIX8S2et3ba52go3hY5NFvabmDZSEh1c8+rYRIg3dOL ZUBJFKOtPlQp2P97QUENoTXLaovwEW38qYV2P+wFQXM9wA7Ogq/76NebW+dbvZ5/UY6z Nw/jKdqaSRqQGm7cLGqzOz47RFtbR+3cc9cazReaJLUCZuSeLrqC4Q58LNHaIkFIaLIp +Xbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.b=Al2RPOqi; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k133si6001631pgc.90.2017.08.02.10.11.19; Wed, 02 Aug 2017 10:11:20 -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=pass header.i=@linaro.org header.b=Al2RPOqi; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752723AbdHBRKL (ORCPT + 25 others); Wed, 2 Aug 2017 13:10:11 -0400 Received: from mail-it0-f41.google.com ([209.85.214.41]:36313 "EHLO mail-it0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752151AbdHBRJr (ORCPT ); Wed, 2 Aug 2017 13:09:47 -0400 Received: by mail-it0-f41.google.com with SMTP id 77so27006968itj.1 for ; Wed, 02 Aug 2017 10:09:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rzJ+Kw/zRYblLQFImq9J6g0NCbrJhB8KZmALwtHa2K4=; b=Al2RPOqiW5ADX9V9cSNSlFAsz8UIkJBoPC+wCxcaqDoaqm4wP5Brm+qInw5tPqMWOe bSZF3j/3EjGfNZEzZmoeqyYsdMx30x4wGKZmGgr38zdQEKKFu07tah2Jc2RpSCp9TIEf 3IQ4kRumG+ZfTIM6xz8D+nKWLQX+5OBZ+YryQ= 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=rzJ+Kw/zRYblLQFImq9J6g0NCbrJhB8KZmALwtHa2K4=; b=lIs6QP2y+5TxN64yTF1fZSGrpTb1KdANSteruFTcfHos5haxPAaJWi+uNxgqAzwtzK mNsLhSQF5OqpqpK70lCi5/QGKoI3lZRXy7vv0usSeeNgs7XhTd/jR6crWxjQpar0wjm+ AMEow6B91lQCSEdFI6JPJeFE6ASRruvrBsZAbErPFbZHC8V2gAuSoQaK87mgVRvm5nV4 +3cgfYvEzHXh5yFiCGVJAN1+xclquAUInfWXomYfuHNT2Hd29e5rFYg+NfQ29mTQdCzm VkJYtTnInOlMEGIiHqVnzqISmIASaVIVGRiPdsNjzdV9gA4NN0ZLZ35zEKlKpzdugous Em5g== X-Gm-Message-State: AIVw112aAoViYQQUsphffAwyANgMSus73l5tjKjBJricpOG532VSp0BU 24TAF0qBDQW5c+y3 X-Received: by 10.36.185.88 with SMTP id k24mr6588828iti.163.1501693786423; Wed, 02 Aug 2017 10:09:46 -0700 (PDT) Received: from localhost.localdomain (static.8.26.4.46.clients.your-server.de. [46.4.26.8]) by smtp.gmail.com with ESMTPSA id u79sm2291222ita.24.2017.08.02.10.09.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 02 Aug 2017 10:09:45 -0700 (PDT) From: srinivas.kandagatla@linaro.org To: Mark Brown , Banajit Goswami , alsa-devel@alsa-project.org Cc: damien.riegel@savoirfairelinux.com, Jaroslav Kysela , Takashi Iwai , Patrick Lai , linux-kernel@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v2 2/6] ASoC: codecs: msm8916-wcd-analog: move codec reset to probe Date: Wed, 2 Aug 2017 19:09:26 +0200 Message-Id: <20170802170930.26083-3-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170802170930.26083-1-srinivas.kandagatla@linaro.org> References: <20170802170930.26083-1-srinivas.kandagatla@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Srinivas Kandagatla This patch move the codec reset code from dai ops to codec probe, so that the codec is not held in reset when headset detection block is still active. Without this patch the codec block will be in reset as long as its not actively used, which means headset events will not be functional if the codec dai is not actively used. Point to note is that the headset detection blocks will work in low power when there is no active audio usecase and switch to micbias source when audio usecase is active. Existing dapms should put the codec in low power state anyway when there is no audio usecase. Signed-off-by: Srinivas Kandagatla --- sound/soc/codecs/msm8916-wcd-analog.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) -- 2.9.3 diff --git a/sound/soc/codecs/msm8916-wcd-analog.c b/sound/soc/codecs/msm8916-wcd-analog.c index 5710fd4..6606954 100644 --- a/sound/soc/codecs/msm8916-wcd-analog.c +++ b/sound/soc/codecs/msm8916-wcd-analog.c @@ -536,6 +536,9 @@ static int pm8916_wcd_analog_probe(struct snd_soc_codec *codec) snd_soc_write(codec, wcd_reg_defaults_2_0[reg].reg, wcd_reg_defaults_2_0[reg].def); + snd_soc_update_bits(codec, CDC_D_CDC_RST_CTL, + RST_CTL_DIG_SW_RST_N_MASK, + RST_CTL_DIG_SW_RST_N_REMOVE_RESET); return 0; } @@ -543,6 +546,9 @@ static int pm8916_wcd_analog_remove(struct snd_soc_codec *codec) { struct pm8916_wcd_analog_priv *priv = dev_get_drvdata(codec->dev); + snd_soc_update_bits(codec, CDC_D_CDC_RST_CTL, + RST_CTL_DIG_SW_RST_N_MASK, 0); + return regulator_bulk_disable(ARRAY_SIZE(priv->supplies), priv->supplies); } @@ -736,28 +742,6 @@ static struct regmap *pm8916_get_regmap(struct device *dev) return dev_get_regmap(dev->parent, NULL); } -static int pm8916_wcd_analog_startup(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai) -{ - snd_soc_update_bits(dai->codec, CDC_D_CDC_RST_CTL, - RST_CTL_DIG_SW_RST_N_MASK, - RST_CTL_DIG_SW_RST_N_REMOVE_RESET); - - return 0; -} - -static void pm8916_wcd_analog_shutdown(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai) -{ - snd_soc_update_bits(dai->codec, CDC_D_CDC_RST_CTL, - RST_CTL_DIG_SW_RST_N_MASK, 0); -} - -static struct snd_soc_dai_ops pm8916_wcd_analog_dai_ops = { - .startup = pm8916_wcd_analog_startup, - .shutdown = pm8916_wcd_analog_shutdown, -}; - static struct snd_soc_dai_driver pm8916_wcd_analog_dai[] = { [0] = { .name = "pm8916_wcd_analog_pdm_rx", @@ -769,7 +753,6 @@ static struct snd_soc_dai_driver pm8916_wcd_analog_dai[] = { .channels_min = 1, .channels_max = 3, }, - .ops = &pm8916_wcd_analog_dai_ops, }, [1] = { .name = "pm8916_wcd_analog_pdm_tx", @@ -781,7 +764,6 @@ static struct snd_soc_dai_driver pm8916_wcd_analog_dai[] = { .channels_min = 1, .channels_max = 4, }, - .ops = &pm8916_wcd_analog_dai_ops, }, };