From patchwork Fri Apr 25 18:40:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Kryger X-Patchwork-Id: 29122 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ie0-f200.google.com (mail-ie0-f200.google.com [209.85.223.200]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id E02C8203AC for ; Fri, 25 Apr 2014 18:40:46 +0000 (UTC) Received: by mail-ie0-f200.google.com with SMTP id lx4sf23770809iec.11 for ; Fri, 25 Apr 2014 11:40:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:cc:subject:date:message-id :mime-version:sender:precedence:list-id:x-original-sender :x-original-authentication-results:mailing-list:list-post:list-help :list-archive:list-unsubscribe:content-type; bh=9XFYY18SLo35UwsPQ5ZCprinBb30gtZUyV3hHd/jLHA=; b=kqcXVk928V4IqfwIRc5x/FW/BlvILi6CfM+rHVD0P1hERFF5kEFazNIoSC3GIP1lY1 Cz4PRoCC5H/7mRQ0VJSg07zUaK2QpzOT3RfqG11A9ZJCBGGzx5mblAml9ucVxh9R4V96 AV5CuVv30vpevbZSyWAWDaJsIA34Q0BsJOuV61QBiapCVCqq0uzJ3/hKPVRMyWYatmm+ PSJ8Za+6VOEaBiUzU8AkawiNPlatf76tINOVqrtCuUM7qnuUpar0kWd8dBnqkVurUDCx j6+vhr4upV7F3a4P6GKxTKlbE/S9AOARIIgRpa7zw/fK8FdoCi6JzD1AEnVQtkVxSc9M T9dA== X-Gm-Message-State: ALoCoQmEahwBc291C0GnjqVa1gSC2GO1zVpQPrTtqTUqAL0EtMVxfE4q8sI5DO7w3wEw+lRn3x3w X-Received: by 10.182.105.1 with SMTP id gi1mr5339642obb.6.1398451246324; Fri, 25 Apr 2014 11:40:46 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.85.40 with SMTP id m37ls220261qgd.18.gmail; Fri, 25 Apr 2014 11:40:46 -0700 (PDT) X-Received: by 10.58.187.78 with SMTP id fq14mr7860055vec.9.1398451246166; Fri, 25 Apr 2014 11:40:46 -0700 (PDT) Received: from mail-vc0-f174.google.com (mail-vc0-f174.google.com [209.85.220.174]) by mx.google.com with ESMTPS id sn5si1902662vdc.83.2014.04.25.11.40.46 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 25 Apr 2014 11:40:46 -0700 (PDT) Received-SPF: none (google.com: patch+caf_=patchwork-forward=linaro.org@linaro.org does not designate permitted sender hosts) client-ip=209.85.220.174; Received: by mail-vc0-f174.google.com with SMTP id ld13so5227491vcb.33 for ; Fri, 25 Apr 2014 11:40:46 -0700 (PDT) X-Received: by 10.220.190.197 with SMTP id dj5mr7843571vcb.19.1398451246056; Fri, 25 Apr 2014 11:40:46 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.221.72 with SMTP id ib8csp119049vcb; Fri, 25 Apr 2014 11:40:45 -0700 (PDT) X-Received: by 10.67.1.39 with SMTP id bd7mr9770937pad.15.1398451245211; Fri, 25 Apr 2014 11:40:45 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id vv4si5414928pbc.64.2014.04.25.11.40.44; Fri, 25 Apr 2014 11:40:44 -0700 (PDT) Received-SPF: none (google.com: linux-mmc-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751635AbaDYSkm (ORCPT + 7 others); Fri, 25 Apr 2014 14:40:42 -0400 Received: from mail-gw3-out.broadcom.com ([216.31.210.64]:37904 "EHLO mail-gw3-out.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751333AbaDYSkm (ORCPT ); Fri, 25 Apr 2014 14:40:42 -0400 X-IronPort-AV: E=Sophos;i="4.97,928,1389772800"; d="scan'208";a="26107488" Received: from irvexchcas07.broadcom.com (HELO IRVEXCHCAS07.corp.ad.broadcom.com) ([10.9.208.55]) by mail-gw3-out.broadcom.com with ESMTP; 25 Apr 2014 12:00:14 -0700 Received: from IRVEXCHSMTP2.corp.ad.broadcom.com (10.9.207.52) by IRVEXCHCAS07.corp.ad.broadcom.com (10.9.208.55) with Microsoft SMTP Server (TLS) id 14.3.174.1; Fri, 25 Apr 2014 11:40:41 -0700 Received: from mail-sj1-12.sj.broadcom.com (10.10.10.20) by IRVEXCHSMTP2.corp.ad.broadcom.com (10.9.207.52) with Microsoft SMTP Server id 14.3.174.1; Fri, 25 Apr 2014 11:40:41 -0700 Received: from dhcp-sv1-10-19-114-209.sj.broadcom.com (mps-infra-lab3.sj.broadcom.com [10.19.114.109]) by mail-sj1-12.sj.broadcom.com (Postfix) with ESMTP id 575F427A83; Fri, 25 Apr 2014 11:40:41 -0700 (PDT) Received: by dhcp-sv1-10-19-114-209.sj.broadcom.com (Postfix, from userid 1004) id 22FEA2520E80; Fri, 25 Apr 2014 11:40:41 -0700 (PDT) From: Tim Kryger To: Chris Ball , Ulf Hansson CC: Tim Kryger , Mike Looijmans , Andrew Bresticker , "Linux MMC List" , Linux Kernel Mailing List Subject: [PATCH RESEND] mmc: core: Improve support for deferred regulators Date: Fri, 25 Apr 2014 11:40:11 -0700 Message-ID: <1398451211-19693-1-git-send-email-tim.kryger@linaro.org> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Sender: linux-mmc-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: tim.kryger@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: patch+caf_=patchwork-forward=linaro.org@linaro.org does not designate permitted sender hosts) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , It is important that callers of mmc_regulator_get_supply know if either vmmc or vqmmc are present but not yet available. To support this need, modify this function to return zero except when either of the regulator get operations fail with -EPROBE_DEFER. Current callers don't check the return value and may continue to use IS_ERR on the vmmc/vqmmc values to determine if those regulators are available. Furthermore, since all of these callers are capable of dealing with absent regulators, switch over to use the non-optional variety of the regulator get call. Signed-off-by: Tim Kryger --- drivers/mmc/core/core.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index acbc3f2..095eef0 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -1313,21 +1313,28 @@ EXPORT_SYMBOL_GPL(mmc_regulator_set_ocr); int mmc_regulator_get_supply(struct mmc_host *mmc) { struct device *dev = mmc_dev(mmc); - struct regulator *supply; int ret; - supply = devm_regulator_get(dev, "vmmc"); - mmc->supply.vmmc = supply; + mmc->supply.vmmc = devm_regulator_get_optional(dev, "vmmc"); mmc->supply.vqmmc = devm_regulator_get_optional(dev, "vqmmc"); - if (IS_ERR(supply)) - return PTR_ERR(supply); + if (IS_ERR(mmc->supply.vmmc)) { + if (PTR_ERR(mmc->supply.vmmc) == -EPROBE_DEFER) + return -EPROBE_DEFER; + dev_info(dev, "No vmmc regulator found\n"); + } else { + ret = mmc_regulator_get_ocrmask(mmc->supply.vmmc); + if (ret > 0) + mmc->ocr_avail = ret; + else + dev_warn(dev, "Failed getting OCR mask: %d\n", ret); + } - ret = mmc_regulator_get_ocrmask(supply); - if (ret > 0) - mmc->ocr_avail = ret; - else - dev_warn(mmc_dev(mmc), "Failed getting OCR mask: %d\n", ret); + if (IS_ERR(mmc->supply.vqmmc)) { + if (PTR_ERR(mmc->supply.vqmmc) == -EPROBE_DEFER) + return -EPROBE_DEFER; + dev_info(dev, "No vqmmc regulator found\n"); + } return 0; }