From patchwork Tue Apr 18 12:32:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 9685465 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 603F360375 for ; Tue, 18 Apr 2017 12:32:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 522AA2097A for ; Tue, 18 Apr 2017 12:32:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 46D31228C9; Tue, 18 Apr 2017 12:32:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E1A5A2097A for ; Tue, 18 Apr 2017 12:32:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753110AbdDRMcN (ORCPT ); Tue, 18 Apr 2017 08:32:13 -0400 Received: from mail-wm0-f51.google.com ([74.125.82.51]:37972 "EHLO mail-wm0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755396AbdDRMcM (ORCPT ); Tue, 18 Apr 2017 08:32:12 -0400 Received: by mail-wm0-f51.google.com with SMTP id r190so13324135wme.1 for ; Tue, 18 Apr 2017 05:32:11 -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=K+XutemgPvfoyqd1a0qMnT4I6wJMVayFsIyBWTgcb28=; b=chsPKxOwdQc4NngcLlIe3v+tvLirrhtrD5v8riP8J8p3lHrdC8uFuPTqdvaOnRV4v9 2ADy2icoRnj9VXB64px9feHEBayAo5ff+SfQOkqlHgyM3WuRK+zpUCvjMC9lWQ30nd77 mB/K7HepEHmsxcCCFLS/j1CZOLKMrbVTn7JNM= 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=K+XutemgPvfoyqd1a0qMnT4I6wJMVayFsIyBWTgcb28=; b=nkUzSJnUaPeAomQMphQ8jgYyjAfjce5a1FcGW1OwjOvts9G0U44w4BTwq4+wEL5825 rGHylQkN2PkvpicJatyNEp83AEBY8Ldonvgt/dYBpThAmsSvEE+BroNebhLy7z88OAfY mNICtxI1Q++4ONB8SxJ9/1sCevU6eBBFVaYH7hYBXkdZJ9mCnmxsuiQNWe/U8dqGXcHJ +/ddHG0B6967D6VUxiYiUKbj7dYZq49oTc1uyapDnNQrhed/27FPUWzd+56XuGKwx1Oc AVtQCvCn7rC2HrX1zPNs2qXS0ds6WNuUpmFBQ4lWhwAwjGLldYPyvCX+y6s9Z7PTff2L OWqw== X-Gm-Message-State: AN3rC/58/XngcMA4ExYw/Za2Pnuv8Bce7vc+AkX0mJUSqJWMxjI8Uh9b +AEClj+7mXjHoPQ4 X-Received: by 10.28.74.18 with SMTP id x18mr13156538wma.64.1492518730552; Tue, 18 Apr 2017 05:32:10 -0700 (PDT) Received: from localhost.localdomain (h-155-4-221-67.na.cust.bahnhof.se. [155.4.221.67]) by smtp.gmail.com with ESMTPSA id 135sm2528372wmi.1.2017.04.18.05.32.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 18 Apr 2017 05:32:09 -0700 (PDT) From: Ulf Hansson To: linux-mmc@vger.kernel.org, Ulf Hansson Cc: Jaehoon Chung , Adrian Hunter , Brian Norris , Shawn Lin , Doug Anderson Subject: [PATCH 3/3] mmc: dw_mmc: Prevent runtime PM suspend when SDIO IRQs are enabled Date: Tue, 18 Apr 2017 14:32:04 +0200 Message-Id: <1492518724-30511-4-git-send-email-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1492518724-30511-1-git-send-email-ulf.hansson@linaro.org> References: <1492518724-30511-1-git-send-email-ulf.hansson@linaro.org> Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP To be able to handle SDIO IRQs the dw_mmc device needs to be powered and providing clock to the SDIO card. Therefore, we must not allow the device to be runtime PM suspended while SDIO IRQs are enabled. To fix this, let's increase the runtime PM usage count while the mmc core enables SDIO IRQs. Later when the mmc core tells dw_mmc to disable SDIO IRQs, we drop the usage count to again allow runtime PM suspend. This now becomes the default behaviour for dw_mmc. In cases where SDIO IRQs can be re-routed as GPIO wake-ups during runtime PM suspend, one could potentially allow runtime PM suspend. However, that will have to be addressed as a separate change on top of this one. Signed-off-by: Ulf Hansson --- drivers/mmc/host/dw_mmc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index f086791..4256957 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -38,6 +38,7 @@ #include #include #include +#include #include "dw_mmc.h" @@ -1657,8 +1658,15 @@ static void __dw_mci_enable_sdio_irq(struct dw_mci_slot *slot, int enb) static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb) { struct dw_mci_slot *slot = mmc_priv(mmc); + struct dw_mci *host = slot->host; __dw_mci_enable_sdio_irq(slot, enb); + + /* Avoid runtime suspending the device when SDIO IRQ is enabled */ + if (enb) + pm_runtime_get_noresume(host->dev); + else + pm_runtime_put_noidle(host->dev); } static void dw_mci_ack_sdio_irq(struct mmc_host *mmc)