From patchwork Thu Mar 31 20:25:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gwendal Grignou X-Patchwork-Id: 8716551 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 9EF3D9F30C for ; Thu, 31 Mar 2016 20:26:14 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 9C45020251 for ; Thu, 31 Mar 2016 20:26:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A113F20160 for ; Thu, 31 Mar 2016 20:26:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932494AbcCaU0I (ORCPT ); Thu, 31 Mar 2016 16:26:08 -0400 Received: from mail-pa0-f42.google.com ([209.85.220.42]:36248 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932791AbcCaUZv (ORCPT ); Thu, 31 Mar 2016 16:25:51 -0400 Received: by mail-pa0-f42.google.com with SMTP id tt10so73454796pab.3 for ; Thu, 31 Mar 2016 13:25:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:from:to:cc:subject:date:message-id; bh=p3W+EQJzWmWKn4dpHWopOL24xpT9R14D3mQEzyCAp9A=; b=jt5fOnj+e4Vz8Nw1LOIbd+34s8HRwzhU798H4JbzXNfzjgp7VXJ3A9h3GmcSFma7LI x6uApG+U94Fi/RWQqltB9uiKis5Ry1dt6kYuW9dFnewNinaLdVuCgdoePrQTi3dSip7q KgHPraxYjhawL47FJhR3SmGU5BZq7NgryV8GtnIYKic7vEUYsrvIjLQYdQnynfhij+or avsxiZJ/t0BJIUXq8n4OxdYjyTZETa38Pf4hoRKpe/SiMqcxFEhRo/UcEkmxJUZHLCF4 OlxjRn8drBBtOZzXcZrQKnd4VbGcm0ngIR/b3LFIXysogxUWymZsnH5PAeGLq0C3Hfpn cumQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=p3W+EQJzWmWKn4dpHWopOL24xpT9R14D3mQEzyCAp9A=; b=cURrZ4c52K/OaYcdAelwXQa7+6T0/j2W8ZM58LIkNg62n1JVEvYsMV30XDrCtQrf/S 0iCc4fkPXbwEIkw1AcSNaEJwQ6jberK3b/5+AXj6pX2TwqvuCRyiPxUobbEAvEVMGuCE y7evY0UBMlBxsKiD+9bqv0ftq2KSinEpk0te5IZExkCAbDMHLDaoXl+LMEOz1oxCS/co qgYI+PuC8SMl02h/RbFeQPW/bxBgaIkj50CNVd7E21Q/d9w5/AkMbo18RGFEsur+id2f aNtuEiC7eo4lk203/6FKxU44+3dR6z5SEFRHdPg3ca9Kyz6ftyByuUhKExXzI8hCbKgv AkPw== X-Gm-Message-State: AD7BkJLUCWvOsLqRgu4m3Zz9mPlyZcXDhjrvFvl1tBWco4qHFtnnQufFY2KW+KKhcf+D5Sxn X-Received: by 10.66.66.108 with SMTP id e12mr24860864pat.33.1459455950152; Thu, 31 Mar 2016 13:25:50 -0700 (PDT) Received: from gwendal.mtv.corp.google.com ([172.22.64.242]) by smtp.gmail.com with ESMTPSA id wy7sm15431035pab.5.2016.03.31.13.25.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 31 Mar 2016 13:25:46 -0700 (PDT) From: Gwendal Grignou To: ulf.hansson@linaro.org Cc: linux-mmc@vger.kernel.org Subject: [PATCH] Revert "mmc: core: Remove redundant ->power_restore() callback" Date: Thu, 31 Mar 2016 13:25:31 -0700 Message-Id: <1459455931-19538-1-git-send-email-gwendal@chromium.org> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,TVD_SUBJ_WIPE_DEBT,T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This reverts commit 364549ddc29d ("mmc: core: Remove redundant ->power_restore() callback for MMC") and commit 3056c49c35c1 ("mmc: core: Remove redundant ->power_restore() callback for SD") ->power_restore() is called by mmc_host_power_restore(). For MMC, We can not use mmc_reset() instead, because the device may not have RST_n_FUNCTION set up. However we have to call mmc_init_card when we power back eMMC card, and it is only possible through a call to ->power_restore(). For symmetry, also reinstantiate the function for SD. Signed-off-by: Gwendal Grignou --- drivers/mmc/core/mmc.c | 14 +++++++++++++- drivers/mmc/core/sd.c | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index bf49e44..97fbe50 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -1942,6 +1942,17 @@ static int mmc_runtime_resume(struct mmc_host *host) return 0; } +static int mmc_power_restore(struct mmc_host *host) +{ + int ret; + + mmc_claim_host(host); + ret = mmc_init_card(host, host->card->ocr, host->card); + mmc_release_host(host); + + return ret; +} + int mmc_can_reset(struct mmc_card *card) { u8 rst_n_function; @@ -1970,7 +1981,7 @@ static int mmc_reset(struct mmc_host *host) /* Set initial state and call mmc_set_ios */ mmc_set_initial_state(host); - return mmc_init_card(host, card->ocr, card); + return mmc_power_restore(host); } static const struct mmc_bus_ops mmc_ops = { @@ -1980,6 +1991,7 @@ static const struct mmc_bus_ops mmc_ops = { .resume = mmc_resume, .runtime_suspend = mmc_runtime_suspend, .runtime_resume = mmc_runtime_resume, + .power_restore = mmc_power_restore, .alive = mmc_alive, .shutdown = mmc_shutdown, .reset = mmc_reset, diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index bb39a29..c7ee77d 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -1177,10 +1177,21 @@ static int mmc_sd_runtime_resume(struct mmc_host *host) return 0; } +static int mmc_sd_power_restore(struct mmc_host *host) +{ + int ret; + + mmc_claim_host(host); + ret = mmc_sd_init_card(host, host->card->ocr, host->card); + mmc_release_host(host); + + return ret; +} + static int mmc_sd_reset(struct mmc_host *host) { mmc_power_cycle(host, host->card->ocr); - return mmc_sd_init_card(host, host->card->ocr, host->card); + return mmc_sd_power_restore(host); } static const struct mmc_bus_ops mmc_sd_ops = { @@ -1190,6 +1201,7 @@ static const struct mmc_bus_ops mmc_sd_ops = { .runtime_resume = mmc_sd_runtime_resume, .suspend = mmc_sd_suspend, .resume = mmc_sd_resume, + .power_restore = mmc_sd_power_restore, .alive = mmc_sd_alive, .shutdown = mmc_sd_suspend, .reset = mmc_sd_reset,