From patchwork Thu Jun 28 20:43:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Rob Herring \(Arm\)" X-Patchwork-Id: 140477 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp28710ljj; Thu, 28 Jun 2018 13:44:01 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdj3OQMo0w7Ca5tcLrZBN5/2SeLYu7WuGFpHSsW+bnfGQGk7Cwj6iRR00cx2P0UNj854rol X-Received: by 2002:a63:a042:: with SMTP id u2-v6mr9944680pgn.80.1530218641000; Thu, 28 Jun 2018 13:44:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530218640; cv=none; d=google.com; s=arc-20160816; b=qzx90VEWucgt28YWlPdosN4vWkGC3Zfi1IXPRoLbWR/IBC3E5APK1B28cchiHD2u2w eCYBmI+K3bz85kCdfdFNMetuRb4ob9CT6GEjY/pkwl+vmBUMWguTDiiQKwX8Jkb80FXH ILQJRwnxENfEzTk9lxpmiYQ7vQuYwB1iaupeAC7Awpc7uMfvydb4IRLroYRqcog38SHO A7sUHlRmAosrMTaCQB2pnhTPAY48rg/eFATRLcvXb9/w+Z32W8+sKV29o5smrZVQYf/v GOnfp1yzHVHxWXBBj1VJ+JdV3kifmUd6/6mOiM4kdXtLo2lAQW60sABwOZ4c6fUXrRNP j1Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=7/gCfwC9TpQBpbvN/SumEqY62ZoUZbnVSDG91crI5Zs=; b=JVJjYIGcyMQVp+cAMpai4zJwU+JYnFsEEQmuri6tRaQKmnIVo6ZGbcO70BYQO0bHsy S3hBkFaTnd3wc6DkTDNSGQij+IrYPjA5U87ezvcxyhLuLJf4d73U8B3mX4w8IEDYuq6O wAySE90oqhQSPQ6Tci96NY2l5fg4cj/43m2bR9LwfDmjvI1Wb4NwuvjDPtNr5/YrWsmM 08bMJAQ20ft74Bf/+QzFjj1pH8bfYp9wDmwabMdxSchHTxhse696H3TGHnnSmUIFiB11 W8MtX9SHO+zhWCZJrzU4Ed2+vuJXEDiwp9puYtadyjlgET58dWmgk/aWPRfqcCIdJ/e+ Gb8Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m11-v6si5852767pgq.601.2018.06.28.13.44.00; Thu, 28 Jun 2018 13:44:00 -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; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936066AbeF1Un6 (ORCPT + 31 others); Thu, 28 Jun 2018 16:43:58 -0400 Received: from mail-yw0-f196.google.com ([209.85.161.196]:36778 "EHLO mail-yw0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753637AbeF1Unz (ORCPT ); Thu, 28 Jun 2018 16:43:55 -0400 Received: by mail-yw0-f196.google.com with SMTP id t198-v6so2638621ywc.3; Thu, 28 Jun 2018 13:43:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7/gCfwC9TpQBpbvN/SumEqY62ZoUZbnVSDG91crI5Zs=; b=HXG5ucJyxAD1h0dXEd8Q/IbGJOCMwtKGakMJlMPokzOd1MqT6f75iyTbpaE2MrTeS0 UCLOgRFP5GeWOtE9E/PLCw04h/t8M6UnNYXwKBOdh01Qf6knvy0q6P0fCm/M9epBMpb5 dAvyHMPYm04NGznH3ZsqSSWkAj6SAJtDCbo6bKI4MyGW7ys3xe4uoWadXH5yvXlZrR+W fUzX1UdDWxCd1ejc9IzvYyPW2JGY3OlUalwbsVMjkD35wbfbmVufzqAAlqUb1qyjzD4X 2ELsOOCyqNKVEnf96L1/IjWZ43Ox4evJ82Ah9p4XR9he51Qdk3cojWpZLNKpYqWXNCQy eRxg== X-Gm-Message-State: APt69E04LmyUh3RXopeIZoxVwwUs+bxocIr6U+fJbndlTvK9qHdepxia 7XN16DUWLsY4fvLP4kXBBQ== X-Received: by 2002:a81:6846:: with SMTP id d67-v6mr5994393ywc.386.1530218634460; Thu, 28 Jun 2018 13:43:54 -0700 (PDT) Received: from localhost.localdomain (24-223-123-72.static.usa-companies.net. [24.223.123.72]) by smtp.googlemail.com with ESMTPSA id o7-v6sm427913ywi.32.2018.06.28.13.43.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 13:43:53 -0700 (PDT) From: Rob Herring To: Greg Kroah-Hartman , Linus Walleij , Alexander Graf , Bjorn Andersson , "Rafael J. Wysocki" , Kevin Hilman , Ulf Hansson , Joerg Roedel , Robin Murphy , Mark Brown , Frank Rowand Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, boot-architecture@lists.linaro.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 3/6] pinctrl: Support stopping deferred probe after initcalls Date: Thu, 28 Jun 2018 14:43:41 -0600 Message-Id: <20180628204344.13973-4-robh@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180628204344.13973-1-robh@kernel.org> References: <20180628204344.13973-1-robh@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Pinctrl drivers are a common dependency which can prevent a system booting even if the default or bootloader configured settings can work. If a pinctrl node in DT indicates that the default pin setup can be used with the 'pinctrl-use-default' property, then only defer probe until initcalls are done. If the deferred probe timeout is enabled or loadable modules are disabled, then we'll stop deferring probe regardless of the DT property. This gives platforms the option to work without their pinctrl driver being enabled. Dropped the pinctrl specific deferring probe message as the driver core can print deferred probe related messages if needed. Signed-off-by: Rob Herring --- v3: - Drop pinctrl deferred probe msg in favor of driver core messages - Move the handling of "pinctrl-use-default" option out of driver core - Stop deferring probe if modules are not enabled. Linus, I reworked this a bit, so didn't add your ack. drivers/pinctrl/devicetree.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) -- 2.17.1 diff --git a/drivers/pinctrl/devicetree.c b/drivers/pinctrl/devicetree.c index c4aa411f5935..2969ff3162c3 100644 --- a/drivers/pinctrl/devicetree.c +++ b/drivers/pinctrl/devicetree.c @@ -111,17 +111,24 @@ static int dt_to_map_one_config(struct pinctrl *p, int ret; struct pinctrl_map *map; unsigned num_maps; + bool allow_default = false; /* Find the pin controller containing np_config */ np_pctldev = of_node_get(np_config); for (;;) { + if (!allow_default) + allow_default = of_property_read_bool(np_pctldev, + "pinctrl-use-default"); + np_pctldev = of_get_next_parent(np_pctldev); if (!np_pctldev || of_node_is_root(np_pctldev)) { - dev_info(p->dev, "could not find pctldev for node %pOF, deferring probe\n", - np_config); of_node_put(np_pctldev); - /* OK let's just assume this will appear later then */ - return -EPROBE_DEFER; + ret = driver_deferred_probe_check_state(p->dev); + /* keep deferring if modules are enabled unless we've timed out */ + if (IS_ENABLED(CONFIG_MODULES) && !allow_default && ret == -ENODEV) + ret = -EPROBE_DEFER; + + return ret; } /* If we're creating a hog we can use the passed pctldev */ if (hog_pctldev && (np_pctldev == p->dev->of_node)) {