From patchwork Mon Feb 2 16:00:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 5763021 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id C537FBF440 for ; Mon, 2 Feb 2015 16:01:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D02DE206AA for ; Mon, 2 Feb 2015 16:01:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 860B5206A9 for ; Mon, 2 Feb 2015 16:01:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932459AbbBBQBG (ORCPT ); Mon, 2 Feb 2015 11:01:06 -0500 Received: from mail-la0-f50.google.com ([209.85.215.50]:51111 "EHLO mail-la0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932456AbbBBQBF (ORCPT ); Mon, 2 Feb 2015 11:01:05 -0500 Received: by mail-la0-f50.google.com with SMTP id hs14so42198695lab.9 for ; Mon, 02 Feb 2015 08:01:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=bwELa1OaxYzT1iwgffyF2G7E6EAQsLjK7cWhA/Cb3jw=; b=TAUpiuR6XMcbo8Q7/wVE2B3NLerkVS6Qg1xVvM6r4bdc7ypOBVLWP/2O74i+wq03MQ Rg48apbOejU+PVb8AJy7shMgG+OQCj/4lzWTxQxxUqqUYraPF6TXTkMHRf5ssXumtA7W DFzKGBoAdJnZeCYQ9avK5vME543F+yM40TWIy/61RX4BbqNdX09EyLE8GnGQkbtbo6+N hCnzEZH22mIzIYG8oqbC0nfBCYBLpy+LwyO93TETyj/6jxcmvdVEEA3HFAUigKPho0Gq aj78APlD6UySECPC7O9tcpPO8QcB3133mKUXqqJ1r+advt3pZw1eMIC9SeYZIpZTaM8F uNjQ== X-Gm-Message-State: ALoCoQldd17TRJUoeOxuJ0bgla8EOt9QBb+JaLtPPYrjC16hzA70qCwgyc73IvNhmjFR6FP1sBzi X-Received: by 10.112.167.228 with SMTP id zr4mr20364484lbb.20.1422892863776; Mon, 02 Feb 2015 08:01:03 -0800 (PST) Received: from localhost.localdomain ([85.235.11.236]) by mx.google.com with ESMTPSA id jf3sm4484214lbc.44.2015.02.02.08.01.01 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 02 Feb 2015 08:01:02 -0800 (PST) From: Ulf Hansson To: linux-mmc@vger.kernel.org, Chris Ball Cc: linux-arm-kernel@lists.infradead.org, Arend van Spriel , Sascha Hauer , Olof Johansson , Russell King , Hans de Goede , Doug Anderson , NeilBrown , Tomeu Vizoso , Javier Martinez Canillas , Ulf Hansson Subject: [PATCH] mmc: core: Invoke mmc_pwrseq_post_power_on() prior MMC_POWER_ON state Date: Mon, 2 Feb 2015 17:00:54 +0100 Message-Id: <1422892854-3655-1-git-send-email-ulf.hansson@linaro.org> X-Mailer: git-send-email 1.9.1 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.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, 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 Host drivers have different ways to sends their "init stream" to the card. Some need to do it as part of a request, some do it from the ->set_ios() callback in the MMC_POWER_ON state and some don't send an "init stream" at all. To be able to use the reset GPIOs from the simple MMC power sequence provider, the card need to be powered and the "init stream" must not have been sent. To cope with these requirements, invoke mmc_pwrseq_post_power_on() prior we change the state to MMC_POWER_ON in mmc_power_up(). Host drivers shall perform power up operations in the MMC_POWER_UP state. Unfortunate three hosts (au1xmmc, cb710-mmc and toshsd) don't conform to this expectation. Instead those ignore the MMC_POWER_UP state and delays their power up operations to the MMC_POWER_ON state. Those hosts needs to change their behavior to enable proper support for the simple MMC power sequence provider. Signed-off-by: Ulf Hansson Reviewed-by: Javier Martinez Canillas Tested-by: Javier Martinez Canillas --- Some background to this patch: http://marc.info/?t=142165904000001&r=1&w=2 --- drivers/mmc/core/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 0dc64e6..23f10f7 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -1637,6 +1637,8 @@ void mmc_power_up(struct mmc_host *host, u32 ocr) */ mmc_delay(10); + mmc_pwrseq_post_power_on(host); + host->ios.clock = host->f_init; host->ios.power_mode = MMC_POWER_ON; @@ -1648,8 +1650,6 @@ void mmc_power_up(struct mmc_host *host, u32 ocr) */ mmc_delay(10); - mmc_pwrseq_post_power_on(host); - mmc_host_clk_release(host); }