diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2017-03-13 08:16:38 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-03-13 08:16:38 +0100 |
commit | 56d9a9815a1c3bd28450adcd73f95515bbe54b4b (patch) | |
tree | 5ad28d8e24b129597766101f27bb17e5213f2634 /drivers/clk | |
parent | a614f64d72812a4c569ae06d6ee81dfdfeea812c (diff) | |
parent | a76714f7f9c6f1e3f1ebafc4fc2e197181ac9e8c (diff) | |
download | barebox-56d9a9815a1c3bd28450adcd73f95515bbe54b4b.tar.gz barebox-56d9a9815a1c3bd28450adcd73f95515bbe54b4b.tar.xz |
Merge branch 'for-next/at91'
Diffstat (limited to 'drivers/clk')
-rw-r--r-- | drivers/clk/Kconfig | 1 | ||||
-rw-r--r-- | drivers/clk/clk-fixed-factor.c | 2 | ||||
-rw-r--r-- | drivers/clk/clk-fixed.c | 2 | ||||
-rw-r--r-- | drivers/clk/clk.c | 41 | ||||
-rw-r--r-- | drivers/clk/clkdev.c | 2 |
5 files changed, 44 insertions, 4 deletions
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig index 1cf0ccb968..dedbf6c4dd 100644 --- a/drivers/clk/Kconfig +++ b/drivers/clk/Kconfig @@ -10,6 +10,7 @@ config COMMON_CLK config COMMON_CLK_OF_PROVIDER bool + depends on OFTREE help Clock driver provides OF-Tree based clock lookup. diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c index 40b63d6d50..a3dbf334a8 100644 --- a/drivers/clk/clk-fixed-factor.c +++ b/drivers/clk/clk-fixed-factor.c @@ -93,7 +93,7 @@ struct clk *clk_fixed_factor(const char *name, return &f->clk; } -#if defined(CONFIG_OFTREE) && defined(CONFIG_COMMON_CLK_OF_PROVIDER) +#if defined(CONFIG_COMMON_CLK_OF_PROVIDER) /** * of_fixed_factor_clk_setup() - Setup function for simple fixed factor clock */ diff --git a/drivers/clk/clk-fixed.c b/drivers/clk/clk-fixed.c index 8164005a05..f0f7fbaed5 100644 --- a/drivers/clk/clk-fixed.c +++ b/drivers/clk/clk-fixed.c @@ -55,7 +55,7 @@ struct clk *clk_fixed(const char *name, int rate) return &fix->clk; } -#if defined(CONFIG_OFTREE) && defined(CONFIG_COMMON_CLK_OF_PROVIDER) +#if defined(CONFIG_COMMON_CLK_OF_PROVIDER) /** * of_fixed_clk_setup() - Setup function for simple fixed rate clock */ diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 93e000c6e9..5bb147eee0 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -346,7 +346,7 @@ int clk_parent_set_rate(struct clk *clk, unsigned long rate, return clk_set_rate(clk_get_parent(clk), rate); } -#if defined(CONFIG_OFTREE) && defined(CONFIG_COMMON_CLK_OF_PROVIDER) +#if defined(CONFIG_COMMON_CLK_OF_PROVIDER) /** * struct of_clk_provider - Clock provider registration structure * @link: Entry in global list of clock providers @@ -452,6 +452,24 @@ struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec) return clk; } +/** + * of_clk_get_parent_count() - Count the number of clocks a device node has + * @np: device node to count + * + * Returns: The number of clocks that are possible parents of this node + */ +unsigned int of_clk_get_parent_count(struct device_node *np) +{ + int count; + + count = of_count_phandle_with_args(np, "clocks", "#clock-cells"); + if (count < 0) + return 0; + + return count; +} +EXPORT_SYMBOL_GPL(of_clk_get_parent_count); + char *of_clk_get_parent_name(struct device_node *np, unsigned int index) { struct of_phandle_args clkspec; @@ -472,6 +490,27 @@ char *of_clk_get_parent_name(struct device_node *np, unsigned int index) } EXPORT_SYMBOL_GPL(of_clk_get_parent_name); +/** + * of_clk_parent_fill() - Fill @parents with names of @np's parents and return + * number of parents + * @np: Device node pointer associated with clock provider + * @parents: pointer to char array that hold the parents' names + * @size: size of the @parents array + * + * Return: number of parents for the clock node. + */ +int of_clk_parent_fill(struct device_node *np, const char **parents, + unsigned int size) +{ + unsigned int i = 0; + + while (i < size && (parents[i] = of_clk_get_parent_name(np, i)) != NULL) + i++; + + return i; +} +EXPORT_SYMBOL_GPL(of_clk_parent_fill); + struct clock_provider { of_clk_init_cb_t clk_init_cb; struct device_node *np; diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c index 1bc5c6daa6..7f9f8f2adc 100644 --- a/drivers/clk/clkdev.c +++ b/drivers/clk/clkdev.c @@ -24,7 +24,7 @@ static LIST_HEAD(clocks); -#if defined(CONFIG_OFTREE) && defined(CONFIG_COMMON_CLK_OF_PROVIDER) +#if defined(CONFIG_COMMON_CLK_OF_PROVIDER) struct clk *of_clk_get(struct device_node *np, int index) { struct of_phandle_args clkspec; |