summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-08-18 14:44:53 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-08-18 14:44:53 -0400
commita18d783fedfe6f9b720afe901db9501ce116ed81 (patch)
tree12e100b5b31657d11bfc5dc3e2ddd124f3690cb3 /drivers/pinctrl
parentd5acba26bfa097a618be425522b1ec4269d3edaf (diff)
parentd2fc88a61b4ea99f574bde16e92718e22f312136 (diff)
Merge tag 'driver-core-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core updates from Greg KH: "Here are all of the driver core and related patches for 4.19-rc1. Nothing huge here, just a number of small cleanups and the ability to now stop the deferred probing after init happens. All of these have been in linux-next for a while with only a merge issue reported" * tag 'driver-core-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (21 commits) base: core: Remove WARN_ON from link dependencies check drivers/base: stop new probing during shutdown drivers: core: Remove glue dirs from sysfs earlier driver core: remove unnecessary function extern declare sysfs.h: fix non-kernel-doc comment PM / Domains: Stop deferring probe at the end of initcall iommu: Remove IOMMU_OF_DECLARE iommu: Stop deferring probe at end of initcalls pinctrl: Support stopping deferred probe after initcalls dt-bindings: pinctrl: add a 'pinctrl-use-default' property driver core: allow stopping deferred probe after init driver core: add a debugfs entry to show deferred devices sysfs: Fix internal_create_group() for named group updates base: fix order of OF initialization linux/device.h: fix kernel-doc notation warning Documentation: update firmware loader fallback reference kobject: Replace strncpy with memcpy drivers: base: cacheinfo: use OF property_read_u32 instead of get_property,read_number kernfs: Replace strncpy with memcpy device: Add #define dev_fmt similar to #define pr_fmt ...
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/devicetree.c15
1 files changed, 11 insertions, 4 deletions
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,
111 int ret; 111 int ret;
112 struct pinctrl_map *map; 112 struct pinctrl_map *map;
113 unsigned num_maps; 113 unsigned num_maps;
114 bool allow_default = false;
114 115
115 /* Find the pin controller containing np_config */ 116 /* Find the pin controller containing np_config */
116 np_pctldev = of_node_get(np_config); 117 np_pctldev = of_node_get(np_config);
117 for (;;) { 118 for (;;) {
119 if (!allow_default)
120 allow_default = of_property_read_bool(np_pctldev,
121 "pinctrl-use-default");
122
118 np_pctldev = of_get_next_parent(np_pctldev); 123 np_pctldev = of_get_next_parent(np_pctldev);
119 if (!np_pctldev || of_node_is_root(np_pctldev)) { 124 if (!np_pctldev || of_node_is_root(np_pctldev)) {
120 dev_info(p->dev, "could not find pctldev for node %pOF, deferring probe\n",
121 np_config);
122 of_node_put(np_pctldev); 125 of_node_put(np_pctldev);
123 /* OK let's just assume this will appear later then */ 126 ret = driver_deferred_probe_check_state(p->dev);
124 return -EPROBE_DEFER; 127 /* keep deferring if modules are enabled unless we've timed out */
128 if (IS_ENABLED(CONFIG_MODULES) && !allow_default && ret == -ENODEV)
129 ret = -EPROBE_DEFER;
130
131 return ret;
125 } 132 }
126 /* If we're creating a hog we can use the passed pctldev */ 133 /* If we're creating a hog we can use the passed pctldev */
127 if (hog_pctldev && (np_pctldev == p->dev->of_node)) { 134 if (hog_pctldev && (np_pctldev == p->dev->of_node)) {