From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06C02C2D0E4 for ; Fri, 27 Nov 2020 12:10:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B579E221F7 for ; Fri, 27 Nov 2020 12:10:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="HD0g/xb6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727906AbgK0MJ4 (ORCPT ); Fri, 27 Nov 2020 07:09:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726442AbgK0MJ4 (ORCPT ); Fri, 27 Nov 2020 07:09:56 -0500 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FBE9C0617A7 for ; Fri, 27 Nov 2020 04:09:56 -0800 (PST) Received: by mail-wr1-x442.google.com with SMTP id z7so5350942wrn.3 for ; Fri, 27 Nov 2020 04:09:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=Asqct0DSkmui/624U1aTT6HUn2Jr+y44t573X8ecn1I=; b=HD0g/xb6TLZtBPVVfmoTpSeb1IQLHkmwP9ZMYhDyLk6bMzNQBR7yjV522waHdonR5d eyUizTJEBAWsAIqaTrv0JY7FjHfAmsg/rozRl79/Y8wXJgfYFZhYsZACB1ZQNetmy2PE R3x+O0etGRUdcC732kOXg630hGy5sOkpvMnYEn/whuIjuSTFCf34crBSbEX4aucH4t1c F4yXxGxRFSEisgheuzx3ODNYfi83aUyhJJsF3pB7WkXVPh164D1zads/oTX0oDK5dQFG zLj2vIzAE97wgmBEUK5BDPCLYC3dV9vYws8kzzjDyfzPA+bLkq8Vkk/dlhj1qemuMGdP e8YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Asqct0DSkmui/624U1aTT6HUn2Jr+y44t573X8ecn1I=; b=SrdtleV7ENEe4mWvEUY5WfsTGn8OdhQdNnhmtWeeUCX1TODe8TmqYEWeNj61HaHUBR Jsp94gHWCQm46t6z21WMdgKv6+tJVxhSyaHetm1WB1r3i/VuW387Th6ZuJLdcUM5XlMw 5+qE01r9d3UdzuColwV0OTzlqhHk6RbwBeuNbFKG/R6P0QdyryzRj7Nukeyhuv6AO6U0 SK1Qr9cQ7i9tSqwbLfJ/yFSaIADfAPNm939OJ0gtmtzGAV6HVlx0WeW8BrgieksWdO7H DGxehLhgntGvh/IhIIZGcakCPkA+2v2ZIadRyYKwQEZ2cPfFWNw8CnSwPFQnCfxnWxKz 8U1A== X-Gm-Message-State: AOAM532koOGxLbf98qfKh6iuh50gK3EXEU2FBemAnDRNNTPoigjpf2Fx 8hM2/0BLZGBQLn/PoimuayWH7Q== X-Google-Smtp-Source: ABdhPJwk9Q/m7ZsZoPuHbodu+4dr0DtmJ92+OAyIXQLH3mTtHoc3PFsRMoMDRX7Ioh6bQJX2nHIWPg== X-Received: by 2002:adf:f0c2:: with SMTP id x2mr9907638wro.184.1606478994658; Fri, 27 Nov 2020 04:09:54 -0800 (PST) Received: from [192.168.86.34] (cpc86377-aztw32-2-0-cust226.18-1.cable.virginm.net. [92.233.226.227]) by smtp.googlemail.com with ESMTPSA id t20sm13916831wmi.3.2020.11.27.04.09.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Nov 2020 04:09:53 -0800 (PST) Subject: Re: [PATCH v3] ASoC: qcom: Fix playback recover problem in suspend resume To: Srinivasa Rao Mandadapu , agross@kernel.org, bjorn.andersson@linaro.org, lgirdwood@gmail.com, broonie@kernel.org, robh+dt@kernel.org, plai@codeaurora.org, bgoswami@codeaurora.org, perex@perex.cz, tiwai@suse.com, rohitkr@codeaurora.org, linux-arm-msm@vger.kernel.org, alsa-devel@alsa-project.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: V Sujith Kumar Reddy References: <1606470988-26965-1-git-send-email-srivasam@codeaurora.org> From: Srinivas Kandagatla Message-ID: <1146040c-5559-f4bf-fafe-eb7468e577a0@linaro.org> Date: Fri, 27 Nov 2020 12:09:51 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <1606470988-26965-1-git-send-email-srivasam@codeaurora.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On 27/11/2020 09:56, Srinivasa Rao Mandadapu wrote: > To support playback continuation after hard suspend(bypass powerd) > and resume: > Prepare device in platform trigger callback. > Make I2s and DMA control registers as non volatile. Looks like there are two changes here, One is fixing the volatile registers! Other is preparing device after suspend! Consider splitting them! > Fixes tag is missing here? > Signed-off-by: V Sujith Kumar Reddy > Signed-off-by: Srinivasa Rao Mandadapu > --- > Changes Since v1 and v2: > -- Subject lines changed > > sound/soc/qcom/lpass-cpu.c | 8 ++------ > sound/soc/qcom/lpass-platform.c | 5 +++-- > 2 files changed, 5 insertions(+), 8 deletions(-) > > diff --git a/sound/soc/qcom/lpass-cpu.c b/sound/soc/qcom/lpass-cpu.c > index af684fd..c99be03 100644 > --- a/sound/soc/qcom/lpass-cpu.c > +++ b/sound/soc/qcom/lpass-cpu.c > @@ -454,20 +454,16 @@ static bool lpass_cpu_regmap_volatile(struct device *dev, unsigned int reg) > struct lpass_variant *v = drvdata->variant; > int i; > > - for (i = 0; i < v->i2s_ports; ++i) > - if (reg == LPAIF_I2SCTL_REG(v, i)) > - return true; > for (i = 0; i < v->irq_ports; ++i) > if (reg == LPAIF_IRQSTAT_REG(v, i)) > return true; > > for (i = 0; i < v->rdma_channels; ++i) > - if (reg == LPAIF_RDMACURR_REG(v, i) || reg == LPAIF_RDMACTL_REG(v, i)) > + if (reg == LPAIF_RDMACURR_REG(v, i)) > return true; > > for (i = 0; i < v->wrdma_channels; ++i) > - if (reg == LPAIF_WRDMACURR_REG(v, i + v->wrdma_channel_start) || > - reg == LPAIF_WRDMACTL_REG(v, i + v->wrdma_channel_start)) > + if (reg == LPAIF_WRDMACURR_REG(v, i + v->wrdma_channel_start)) > return true; > > return false; > diff --git a/sound/soc/qcom/lpass-platform.c b/sound/soc/qcom/lpass-platform.c > index 80b09de..2b0a7c1 100644 > --- a/sound/soc/qcom/lpass-platform.c > +++ b/sound/soc/qcom/lpass-platform.c > @@ -481,8 +481,9 @@ static int lpass_platform_pcmops_trigger(struct snd_soc_component *component, > return -ENOTRECOVERABLE; > } > switch (cmd) { > - case SNDRV_PCM_TRIGGER_START: > case SNDRV_PCM_TRIGGER_RESUME: > + lpass_platform_pcmops_prepare(component, substream); Can you elaborate the actual issue here? Are any other registers needs to re-programmed?? Does it make sense to use regcache_mark_dirty() regcache_sync() in pm suspend resume path, instead of calling prepare explicitly? --srini > + case SNDRV_PCM_TRIGGER_START: > case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: > ret = regmap_fields_write(dmactl->enable, id, > LPAIF_DMACTL_ENABLE_ON); > @@ -592,7 +593,7 @@ static int lpass_platform_pcmops_trigger(struct snd_soc_component *component, > break; > } > > - return 0; > + return ret; > } > > static snd_pcm_uframes_t lpass_platform_pcmops_pointer( >