From patchwork Thu Jan 7 08:25:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Caesar Wang X-Patchwork-Id: 7974311 Return-Path: X-Original-To: patchwork-linux-rockchip@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 E056ABEEE5 for ; Thu, 7 Jan 2016 08:28:25 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 0F0DD2013D for ; Thu, 7 Jan 2016 08:28:25 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B5F082017E for ; Thu, 7 Jan 2016 08:28:23 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aH5vi-0001HG-V1; Thu, 07 Jan 2016 08:28:22 +0000 Received: from mail-pa0-f44.google.com ([209.85.220.44]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aH5v3-0000XM-TH for linux-rockchip@lists.infradead.org; Thu, 07 Jan 2016 08:27:45 +0000 Received: by mail-pa0-f44.google.com with SMTP id qh10so2763577pab.2 for ; Thu, 07 Jan 2016 00:27:21 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=e4y4XVJkbvoKIuSVJXNL/aVQdwKk1KdzHBRFdkVw+j0=; b=fXqlHcRizpKyjxDArUQY1x4T5jAZMStF+9WRSFoCXcaA50+Hz/nN9Hp9sWluu2vk6b fvKfxudpg5UPiXNqNuL/QRcu+dL7JW53Pa8PQQsb+/C66bz357o1GepOchawcwSg3yME Ul07eUh7USfYhSTewIZv1n8BlwYdr3SqSS8TVflTWr5rKHxH+4+I5AAD2kmgyDIBf40R 2qWmjsDwhSk0NSLOMf+Xvh1kNdbutEDJrwSirWQrtRYB3oqN9RARagetiNvIGTvMbTLF 8KoIHhtrzD5aE3jIODBOFOLxM6Q6ryBhg8hyv+4wS+3tLWOqztDLa0Hdas//T7Kesdio p1yA== X-Received: by 10.66.100.228 with SMTP id fb4mr145979148pab.84.1452155241140; Thu, 07 Jan 2016 00:27:21 -0800 (PST) Received: from localhost.localdomain ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id qj8sm9945010pac.40.2016.01.07.00.27.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Jan 2016 00:27:20 -0800 (PST) From: Caesar Wang To: Heiko Stuebner , Ulf Hansson Subject: [PATCH v2 06/12] mmc: pwrseq: add support for power-on sequencing through DT Date: Thu, 7 Jan 2016 16:25:49 +0800 Message-Id: <1452155155-16232-7-git-send-email-wxt@rock-chips.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1452155155-16232-1-git-send-email-wxt@rock-chips.com> References: <1452155155-16232-1-git-send-email-wxt@rock-chips.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160107_002742_308292_DB18D8A3 X-CRM114-Status: GOOD ( 13.32 ) X-Spam-Score: -2.4 (--) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Javier Martinez Canillas , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Srinivas Kandagatla , keescook@google.com, NeilBrown , leecam@google.com, Alexandre Courbot , leozwang@google.com, Caesar Wang MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable 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 patch enables support for power-on sequencing of SDIO peripherals through DT. In general, it's quite common that wifi modules and other similar peripherals have several signals in addition to the SDIO interface that needs wiggling before the module will power on. For example: we need enable wifi module power to via the WL_REG_ON pin, we need enable it as the regulator if this pin is connected to the gpio of cpu. Maybe, someone will say that can pull up/down from dts. Unfortunately some SoCs can't support pinctrl pull up/down in internal. Anyway, we can add this patch to supprt the power-on sequencing for sdio. Signed-off-by: Caesar Wang --- Changes in v2: - This fix inmmc-power-sequences, as Heiko comment on https://patchwork.kernel.org/patch/7903161/ drivers/mmc/core/pwrseq_simple.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/mmc/core/pwrseq_simple.c b/drivers/mmc/core/pwrseq_simple.c index d10538b..455dd0c 100644 --- a/drivers/mmc/core/pwrseq_simple.c +++ b/drivers/mmc/core/pwrseq_simple.c @@ -14,6 +14,7 @@ #include #include #include +#include #include @@ -24,6 +25,7 @@ struct mmc_pwrseq_simple { bool clk_enabled; struct clk *ext_clk; struct gpio_descs *reset_gpios; + struct regulator *regulator; }; static void mmc_pwrseq_simple_set_gpios_value(struct mmc_pwrseq_simple *pwrseq, @@ -45,6 +47,13 @@ static void mmc_pwrseq_simple_pre_power_on(struct mmc_host *host) struct mmc_pwrseq_simple *pwrseq = container_of(host->pwrseq, struct mmc_pwrseq_simple, pwrseq); + if (!IS_ERR(pwrseq->regulator)) { + dev_dbg(host->parent, "Enabling external regulator\n"); + if (regulator_enable(pwrseq->regulator)) + dev_err(host->parent, + "Failed to enable external regulator\n"); + } + if (!IS_ERR(pwrseq->ext_clk) && !pwrseq->clk_enabled) { clk_prepare_enable(pwrseq->ext_clk); pwrseq->clk_enabled = true; @@ -117,6 +126,13 @@ struct mmc_pwrseq *mmc_pwrseq_simple_alloc(struct mmc_host *host, goto clk_put; } + pwrseq->regulator = devm_regulator_get(dev, "ext-vcc"); + if (IS_ERR(pwrseq->regulator) && + PTR_ERR(pwrseq->regulator) != -EPROBE_DEFER) { + ret = PTR_ERR(pwrseq->regulator); + goto clk_put; + } + pwrseq->pwrseq.ops = &mmc_pwrseq_simple_ops; return &pwrseq->pwrseq;