From patchwork Thu Apr 17 23:42:45 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Kryger X-Patchwork-Id: 28598 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ob0-f198.google.com (mail-ob0-f198.google.com [209.85.214.198]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id DA91F2013D for ; Thu, 17 Apr 2014 23:43:09 +0000 (UTC) Received: by mail-ob0-f198.google.com with SMTP id va2sf5592347obc.1 for ; Thu, 17 Apr 2014 16:43:09 -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=9DhBjcsFjrLpYbl4iNX9TCwFHqJl/kBjuxbfYfr04JY=; b=WUtnkTTH0KfVLMIrXYtv4TNAHivznKw3+iLOfosvhX/pOBnkb5fVN9l33pekpG18CB O7x69b2FiHjpq9hQZc3B9U+DbyzqKFvNr/RZgmzlHFLUvu3rmkJplBmIASBNJN3AzdyV o4Fsvl0DMkxEzLjW9JIQEyDQf2XRm1K/pe/0r857zY96GTcksy4xZloKXOkD4gp+0rzT 2/PgP8Y7aM9jGxUqDNEqBE9OuNBWJQJX4B5bvwjmkJKh3KdrwUF06lgqv+hTaQlamOiA Q8VZAGsREbPFH4ggk5pUnE8/YCMyx5ZKFPPH5hMcDvppzpQX7FrZwX5IzCNPIrQo/n3n Zf4Q== X-Gm-Message-State: ALoCoQl/ACrHlPKUY9ECp3EaBpQ1/rLRHCcr3MUv4IhlZLQT4PyqdIZbQgC5c1CCzDcEHpePaZqT X-Received: by 10.50.50.2 with SMTP id y2mr182691ign.1.1397778189125; Thu, 17 Apr 2014 16:43:09 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.50.81 with SMTP id r75ls1311509qga.71.gmail; Thu, 17 Apr 2014 16:43:09 -0700 (PDT) X-Received: by 10.58.220.161 with SMTP id px1mr14381806vec.13.1397778189022; Thu, 17 Apr 2014 16:43:09 -0700 (PDT) Received: from mail-ve0-f169.google.com (mail-ve0-f169.google.com [209.85.128.169]) by mx.google.com with ESMTPS id bf4si4694552vec.208.2014.04.17.16.43.09 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 17 Apr 2014 16:43:09 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.128.169 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.128.169; Received: by mail-ve0-f169.google.com with SMTP id pa12so1563933veb.14 for ; Thu, 17 Apr 2014 16:43:08 -0700 (PDT) X-Received: by 10.52.229.97 with SMTP id sp1mr8389480vdc.23.1397778188921; Thu, 17 Apr 2014 16:43:08 -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 ib8csp72706vcb; Thu, 17 Apr 2014 16:43:08 -0700 (PDT) X-Received: by 10.66.227.193 with SMTP id sc1mr18666589pac.102.1397778188143; Thu, 17 Apr 2014 16:43:08 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id td10si15382918pac.222.2014.04.17.16.43.07; Thu, 17 Apr 2014 16:43:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751305AbaDQXm6 (ORCPT + 26 others); Thu, 17 Apr 2014 19:42:58 -0400 Received: from mail-gw3-out.broadcom.com ([216.31.210.64]:22716 "EHLO mail-gw3-out.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750852AbaDQXmy (ORCPT ); Thu, 17 Apr 2014 19:42:54 -0400 X-IronPort-AV: E=Sophos;i="4.97,882,1389772800"; d="scan'208";a="24871242" Received: from irvexchcas07.broadcom.com (HELO IRVEXCHCAS07.corp.ad.broadcom.com) ([10.9.208.55]) by mail-gw3-out.broadcom.com with ESMTP; 17 Apr 2014 17:01:19 -0700 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS07.corp.ad.broadcom.com (10.9.208.55) with Microsoft SMTP Server (TLS) id 14.3.174.1; Thu, 17 Apr 2014 16:42:53 -0700 Received: from mail-sj1-12.sj.broadcom.com (10.10.10.20) by IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) with Microsoft SMTP Server id 14.3.174.1; Thu, 17 Apr 2014 16:42:53 -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 6C36527A81; Thu, 17 Apr 2014 16:42:53 -0700 (PDT) Received: by dhcp-sv1-10-19-114-209.sj.broadcom.com (Postfix, from userid 1004) id 2302D2520E7E; Thu, 17 Apr 2014 16:42:52 -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] mmc: core: Improve support for deferred regulators Date: Thu, 17 Apr 2014 16:42:45 -0700 Message-ID: <1397778165-28693-1-git-send-email-tim.kryger@linaro.org> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@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: 209.85.128.169 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) 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; }