From patchwork Tue Sep 3 14:22:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 172803 Delivered-To: patches@linaro.org Received: by 2002:ac9:5c4b:0:0:0:0:0 with SMTP id r11csp5641560ocp; Tue, 3 Sep 2019 07:22:46 -0700 (PDT) X-Received: by 2002:a2e:3e0d:: with SMTP id l13mr7485747lja.10.1567520566735; Tue, 03 Sep 2019 07:22:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567520566; cv=none; d=google.com; s=arc-20160816; b=V9KN2IjfRnjk1pNTwO2HnqYetoeRyjuFJRHoHUiDIA6JazeaOgF5qG2MT9xsWWTNrS Rq/i7SbX9Gh5mMccLvMdBzZb1YLCDnQzJdLIiZptn6eEY/63nBEVuphRZkfT98NNKWJK z/kYruC8bDoj0Ir3W4uCvtQO3hDIFwkCnR/2Suy1MSlWaGfxGaJXOYR17LJp0UInevpM B6KMThyYVKUW1Bf1D2oC/EKNDUeh32UXkLZMgTo3Zm7yGkj2l0M+IBDGE+euLbibrdBA pmkiEwKLxUgebaOw4GwrTvBxh54t8c1AJaO0tFWUwudgvjsZ8f4U3PkV3l0COhIUJRBF nhmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=oRUCHCrSXAlVd+d5h26u6KUeDoevWOErPZA9CCjpQxk=; b=SRvOCBL82+7WkVdmG13FGGenR/jXG3NJJkAO2jz8szHk0lZ2wh3xEZ8/HgikruA8mB MaL/Pzdpxfnz7yJZVFJPO7iz264bVUJTng28RRVJBfRQ8G8rqzXyHCiJGRNU4vtWigmO jUs2bi4ZC5xvGoETuFGKH5ZaNXOXuio+PDK/ICEOlBN718eIfklvpAeailyDRiJboWgM E7/UrJ8BieDpkOx3beiMndWC4mqav6EiHEpjJDvSWSl3eNH7gRf7jBa1teeHxH2QZrhq gm/q1QVW1JAdZflli1ACf8l/j7UrzChdgyr4Awe4VlbhgOv+UlOG92nbbttdenGpGTHX pLMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cuSTDxro; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id a5sor4986962lfg.20.2019.09.03.07.22.46 for (Google Transport Security); Tue, 03 Sep 2019 07:22:46 -0700 (PDT) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cuSTDxro; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org 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=oRUCHCrSXAlVd+d5h26u6KUeDoevWOErPZA9CCjpQxk=; b=cuSTDxro2oT3broDfM4Vhr93npdKcTrzQwf/hurN/LzTaOclC+JagWmOYz8XhLpzp1 WQfMy9rnaUZWsyQJ2l0461oXe37BJnCpWuYs2kyrijCXRdsx7onpMgb3djgBof//Yh6k TE7eq/LEiVO1FXLbK6yNgRwFuzlA8aZOe1WBgrM2i/W1seNF+h/tBzhoyQKVAb0XfH9x siDR1HffQVdt+yQmle0S3R6LFECw7C5/ni/D5ULuKwwCKg/MGpyU+NJaIhY+WcM6uNxw V5c/yQAX+33zQRNvcNGYfO3vCrMHdFTlGzCDKZtpZET7N3SUkhWtkU2A5MMP8Z0NmHvk /a7w== 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=oRUCHCrSXAlVd+d5h26u6KUeDoevWOErPZA9CCjpQxk=; b=FFhlI/C53iEoSvNSi22RBgeI302xC4k1dcxYGYa/pwqWFnpRZqhnJrarNDtviU8JCr bNQtU1r94oxB654Dul4c9QCL1wG938iBRcZBqs2oQZwJgjj0qWXHNq/Sb/FRz7u9eQtU Up6qSdf5XMMPjB6ETJGyh2KgMGzVi46h32EJWKFOQJH+oF/BlSgblgKh3KZtTMXtBrZW f+wXMgpJd4CyUf6Axx6eBp9bZBzgtzchnI9LaLPytwMo9+hTfIBkv+TvXBa9v/tgE3YQ xzwutzf8PWFQPoRdvr1/nWbT/tbyMpT1KeVczX3srlc2ydN+NhfIT4LBEsWvRvZZpfK6 1VhQ== X-Gm-Message-State: APjAAAXsoY+iSY6mGG4ayrapOX6d6ZbDYEKIPedjEBjM3Sr1o3lAzVIP 9yoNOb8iZ3LQVGlqjBmYrN3IMgiE X-Google-Smtp-Source: APXvYqxulXC0EVgK6/kIKcgM16qMgDbBItv63++f/7a5797d7tuL/bpKNSln0qr1e0rf25vagSHLrQ== X-Received: by 2002:a05:6512:499:: with SMTP id v25mr16750469lfq.30.1567520566370; Tue, 03 Sep 2019 07:22:46 -0700 (PDT) Return-Path: Received: from uffe-XPS-13-9360.ideon.se ([85.235.10.227]) by smtp.gmail.com with ESMTPSA id v10sm2430862ljc.64.2019.09.03.07.22.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Sep 2019 07:22:45 -0700 (PDT) From: Ulf Hansson To: linux-mmc@vger.kernel.org, Ulf Hansson , Adrian Hunter , Douglas Anderson , Matthias Kaehlcke Cc: Shawn Lin , Jaehoon Chung , Yong Mao , Chaotian Jing , linux-kernel@vger.kernel.org Subject: [PATCH 10/11] mmc: sdhci: Drop redundant code for SDIO IRQs Date: Tue, 3 Sep 2019 16:22:06 +0200 Message-Id: <20190903142207.5825-11-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190903142207.5825-1-ulf.hansson@linaro.org> References: <20190903142207.5825-1-ulf.hansson@linaro.org> Nowadays sdhci prevents runtime suspend when SDIO IRQs are enabled. However, some variants such as sdhci-esdhc-imx's, tries to allow runtime suspend while having the SDIO IRQs enabled, but without supporting remote wakeups. This support is a bit questionable, especially if the host device have a PM domain attached that can be power gated, but more importantly, the code have also become redundant (which was not the case when it was introduced). Rather than keeping the redundant code around, let's drop it and leave this to be revisited later on. Signed-off-by: Ulf Hansson --- drivers/mmc/host/sdhci-esdhc-imx.c | 34 +++++++++++++----------------- drivers/mmc/host/sdhci.c | 2 +- drivers/mmc/host/sdhci.h | 5 ----- 3 files changed, 16 insertions(+), 25 deletions(-) -- 2.17.1 diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index 776a94216248..1c988d6a2433 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -1666,12 +1666,10 @@ static int sdhci_esdhc_runtime_suspend(struct device *dev) if (host->tuning_mode != SDHCI_TUNING_MODE_3) mmc_retune_needed(host->mmc); - if (!sdhci_sdio_irq_enabled(host)) { - imx_data->actual_clock = host->mmc->actual_clock; - esdhc_pltfm_set_clock(host, 0); - clk_disable_unprepare(imx_data->clk_per); - clk_disable_unprepare(imx_data->clk_ipg); - } + imx_data->actual_clock = host->mmc->actual_clock; + esdhc_pltfm_set_clock(host, 0); + clk_disable_unprepare(imx_data->clk_per); + clk_disable_unprepare(imx_data->clk_ipg); clk_disable_unprepare(imx_data->clk_ahb); if (imx_data->socdata->flags & ESDHC_FLAG_PMQOS) @@ -1695,15 +1693,15 @@ static int sdhci_esdhc_runtime_resume(struct device *dev) if (err) goto remove_pm_qos_request; - if (!sdhci_sdio_irq_enabled(host)) { - err = clk_prepare_enable(imx_data->clk_per); - if (err) - goto disable_ahb_clk; - err = clk_prepare_enable(imx_data->clk_ipg); - if (err) - goto disable_per_clk; - esdhc_pltfm_set_clock(host, imx_data->actual_clock); - } + err = clk_prepare_enable(imx_data->clk_per); + if (err) + goto disable_ahb_clk; + + err = clk_prepare_enable(imx_data->clk_ipg); + if (err) + goto disable_per_clk; + + esdhc_pltfm_set_clock(host, imx_data->actual_clock); err = sdhci_runtime_resume_host(host, 0); if (err) @@ -1715,11 +1713,9 @@ static int sdhci_esdhc_runtime_resume(struct device *dev) return err; disable_ipg_clk: - if (!sdhci_sdio_irq_enabled(host)) - clk_disable_unprepare(imx_data->clk_ipg); + clk_disable_unprepare(imx_data->clk_ipg); disable_per_clk: - if (!sdhci_sdio_irq_enabled(host)) - clk_disable_unprepare(imx_data->clk_per); + clk_disable_unprepare(imx_data->clk_per); disable_ahb_clk: clk_disable_unprepare(imx_data->clk_ahb); remove_pm_qos_request: diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 2a9be044448a..a7df22ed65aa 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -3046,7 +3046,7 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id) spin_lock(&host->lock); - if (host->runtime_suspended && !sdhci_sdio_irq_enabled(host)) { + if (host->runtime_suspended) { spin_unlock(&host->lock); return IRQ_NONE; } diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index cf3d1ed91909..8effaac61c3a 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -753,11 +753,6 @@ static inline void sdhci_read_caps(struct sdhci_host *host) __sdhci_read_caps(host, NULL, NULL, NULL); } -static inline bool sdhci_sdio_irq_enabled(struct sdhci_host *host) -{ - return !!(host->flags & SDHCI_SDIO_IRQ_ENABLED); -} - u16 sdhci_calc_clk(struct sdhci_host *host, unsigned int clock, unsigned int *actual_clock); void sdhci_set_clock(struct sdhci_host *host, unsigned int clock);