Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp335896ybv; Wed, 19 Feb 2020 22:46:40 -0800 (PST) X-Google-Smtp-Source: APXvYqzbddn4uRadklhWaviEmI8H/E3r/1EPIIE6jYY9v2JKoLMd+CRAheaYlLs4sjZVosH4mzrG X-Received: by 2002:a05:6808:2cd:: with SMTP id a13mr1037598oid.82.1582181200577; Wed, 19 Feb 2020 22:46:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582181200; cv=none; d=google.com; s=arc-20160816; b=hOmOWKnNbCBKnjm7OJdHd5i9P602zT2A4rCczynlGlkRp6T3YrkyMBRAezOFHuVQsx Hi5cNLkNclMmQD94ZddrBPW1eeo003YMECCVPncEZ4hhq09CiKBQr3E2Rwvv6hEjKLuu R2ngvBDKI3PZ9rfZkhxGLpZXX+6O8gR7m1mxPUquDVdDZBIkpL67Ph/Tkdspmru5CU4W PBDB86vS189owAPrA8hOiJCGuA42HZUv5tSFh4HxV0SGQdSrP656PZShMjRz2qd+/QJ6 1SJq/JmWiBm8eUMJz8I1VfNUUF7uwz7XxxHbhPzqPr/lDPOHoZAXO2uvYRSQj8u/MWBE B4aQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=N/hAC6H0ReqkwMwLcDGas022wN1O7FYqWdVVW1OBbns=; b=jzsqVTlh25mDdhuW++cv56Z7VSNQNfvyPV7kplVUvlXnYVFkv8A+mNraib4hy+/A90 wpvjS4ETfJBujHMMaoW9Zm/g4nBoNjvbjTqdhMS40fptzL8kCOXmue9lI/9xpbY09GPx Zd4B8ZN/ce/lOu+Zsmp8/YVkDbmiqvK2jzCIrQeYsyWksKkrqDdfkkxXWuBMegaKvwTZ BP0n7NH0N7FdotnZqSQa25L55flNq88fJy61PAN0O2nAp65X1HEgNLh/ckw2HdeSkWCb I7fK5dbe56tJlL0KxOZJL5h/U7+4r8ujnWjjD19dPy7kc/xcS4HW3f0wfoMfdUfe9IH4 Mo7Q== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 64si1168903otx.50.2020.02.19.22.46.27; Wed, 19 Feb 2020 22:46:40 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726759AbgBTGqR (ORCPT + 99 others); Thu, 20 Feb 2020 01:46:17 -0500 Received: from alexa-out-blr-01.qualcomm.com ([103.229.18.197]:38743 "EHLO alexa-out-blr-01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725962AbgBTGqQ (ORCPT ); Thu, 20 Feb 2020 01:46:16 -0500 Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by alexa-out-blr-01.qualcomm.com with ESMTP/TLS/AES256-SHA; 20 Feb 2020 12:15:40 +0530 Received: from c-sbhanu-linux.qualcomm.com ([10.242.50.201]) by ironmsg02-blr.qualcomm.com with ESMTP; 20 Feb 2020 12:15:06 +0530 Received: by c-sbhanu-linux.qualcomm.com (Postfix, from userid 2344807) id 7406E3B58; Thu, 20 Feb 2020 12:15:05 +0530 (IST) From: Shaik Sajida Bhanu To: adrian.hunter@intel.com, ulf.hansson@linaro.org, robh+dt@kernel.org, mka@chromium.org Cc: asutoshd@codeaurora.org, swboyd@chromium.org, stummala@codeaurora.org, sayalil@codeaurora.org, cang@codeaurora.org, vbadigan@codeaurora.org, rampraka@codeaurora.org, linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, agross@kernel.org, bjorn.andersson@linaro.org, Shaik Sajida Bhanu Subject: [PATCH V4] mmc: sdhci-msm: Update system suspend/resume callbacks of sdhci-msm platform driver Date: Thu, 20 Feb 2020 12:15:00 +0530 Message-Id: <1582181100-29914-1-git-send-email-sbhanu@codeaurora.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The existing suspend/resume callbacks of sdhci-msm driver are just gating/un-gating the clocks. During suspend cycle more can be done like disabling controller, disabling card detection, enabling wake-up events. So updating the system pm callbacks for performing these extra actions besides controlling the clocks. Signed-off-by: Shaik Sajida Bhanu Reviewed-by: Stephen Boyd --- Changes since V3: Invoking sdhci & cqhci resume if sdhci_host_suspend fails. Removed condition check before invoking cqhci_resume since its a dummy function. Changes since V2: Removed disabling/enabling pwr-irq from system pm ops. Changes since V1: Invoking pm_runtime_force_suspend/resume instead of sdhci_msm_runtime_suepend/resume. --- drivers/mmc/host/sdhci-msm.c | 47 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 3955fa5d..3559b50 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -2159,9 +2159,52 @@ static __maybe_unused int sdhci_msm_runtime_resume(struct device *dev) return 0; } +static int sdhci_msm_suspend(struct device *dev) +{ + struct sdhci_host *host = dev_get_drvdata(dev); + int ret; + + if (host->mmc->caps2 & MMC_CAP2_CQE) { + ret = cqhci_suspend(host->mmc); + if (ret) + return ret; + } + + ret = sdhci_suspend_host(host); + if (ret) + goto resume_cqhci; + + ret = pm_runtime_force_suspend(dev); + if (!ret) + return ret; + + sdhci_resume_host(host); + +resume_cqhci: + cqhci_resume(host->mmc); + return ret; +} + +static int sdhci_msm_resume(struct device *dev) +{ + struct sdhci_host *host = dev_get_drvdata(dev); + int ret; + + ret = pm_runtime_force_resume(dev); + if (ret) + return ret; + + ret = sdhci_resume_host(host); + if (ret < 0) + return ret; + + ret = cqhci_resume(host->mmc); + return ret; +} + static const struct dev_pm_ops sdhci_msm_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, - pm_runtime_force_resume) + SET_SYSTEM_SLEEP_PM_OPS(sdhci_msm_suspend, + sdhci_msm_resume) SET_RUNTIME_PM_OPS(sdhci_msm_runtime_suspend, sdhci_msm_runtime_resume, NULL) -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation