diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-08-18 14:44:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-08-18 14:44:53 -0400 |
commit | a18d783fedfe6f9b720afe901db9501ce116ed81 (patch) | |
tree | 12e100b5b31657d11bfc5dc3e2ddd124f3690cb3 /drivers/pinctrl | |
parent | d5acba26bfa097a618be425522b1ec4269d3edaf (diff) | |
parent | d2fc88a61b4ea99f574bde16e92718e22f312136 (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.c | 15 |
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)) { |