summaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorNikita Yushchenko <nikita.yoush@cogentembedded.com>2018-05-10 18:20:19 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2018-05-14 09:52:52 +0200
commit96aff45747a1cec76ff26778e94884ae2ce572b9 (patch)
treede7a30d96f13f8de5a517d5d01287837cbd57802 /drivers/clk
parentee919bef13349d725a551d6d6ca5495815ff5aca (diff)
downloadbarebox-96aff45747a1cec76ff26778e94884ae2ce572b9.tar.gz
barebox-96aff45747a1cec76ff26778e94884ae2ce572b9.tar.xz
clk: support pinmux configuration in clock provider nodes
Some device trees use pinctrl-* settings inside device tree nodes for clock providers. Barebox does not threat clock providers (such as fixed-clock or gpio-gate-clock) as conventional devices, thus setting default pinctrl configuration in driver binding code does not happen for clock providers. This patch adds setting default pinctrl configuration to of_clk_init(), just before calling clock provider's probe routine. Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/clk.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 5bb147eee0..24759b45bb 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -22,6 +22,7 @@
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/clk/clk-conf.h>
+#include <pinctrl.h>
static LIST_HEAD(clks);
@@ -596,10 +597,12 @@ int of_clk_init(struct device_node *root, const struct of_device_id *matches)
list_for_each_entry_safe(clk_provider, next,
&clk_provider_list, node) {
- if (force || parent_ready(clk_provider->np)) {
+ struct device_node *np = clk_provider->np;
+ if (force || parent_ready(np)) {
- clk_provider->clk_init_cb(clk_provider->np);
- of_clk_set_defaults(clk_provider->np, true);
+ of_pinctrl_select_state_default(np);
+ clk_provider->clk_init_cb(np);
+ of_clk_set_defaults(np, true);
list_del(&clk_provider->node);
free(clk_provider);