From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/7] clk: add common of_clk_init() function
Date: Thu, 24 Jan 2013 11:47:25 -0600 [thread overview]
Message-ID: <510173AD.8080402@gmail.com> (raw)
In-Reply-To: <1357282858-2112-1-git-send-email-pgaikwad@nvidia.com>
On 01/04/2013 01:00 AM, Prashant Gaikwad wrote:
> Modify of_clk_init function so that it will determine which
> driver to initialize based on device tree instead of each driver
> registering to it.
>
> Based on a similar patch for drivers/irqchip by Thomas Petazzoni and
> drivers/clocksource by Stephen Warren.
>
> Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
> ---
For this and highbank:
Tested-by: Rob Herring <rob.herring@calxeda.com>
> drivers/clk/clk-fixed-rate.c | 1 +
> drivers/clk/clk.c | 9 +++++++++
> include/asm-generic/vmlinux.lds.h | 10 ++++++++++
> include/linux/clk-provider.h | 6 ++++++
> 4 files changed, 26 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
> index af78ed6..f2104df 100644
> --- a/drivers/clk/clk-fixed-rate.c
> +++ b/drivers/clk/clk-fixed-rate.c
> @@ -101,4 +101,5 @@ void __init of_fixed_clk_setup(struct device_node *node)
> of_clk_add_provider(node, of_clk_src_simple_get, clk);
> }
> EXPORT_SYMBOL_GPL(of_fixed_clk_setup);
> +CLK_OF_DECLARE(fixed_clk, "fixed-clock", of_fixed_clk_setup);
> #endif
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 037b48a..fb38dd8 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -18,6 +18,7 @@
> #include <linux/slab.h>
> #include <linux/of.h>
> #include <linux/device.h>
> +#include <linux/init.h>
>
> static DEFINE_SPINLOCK(enable_lock);
> static DEFINE_MUTEX(prepare_lock);
> @@ -1805,6 +1806,11 @@ struct of_clk_provider {
> void *data;
> };
>
> +extern struct of_device_id __clk_of_table[];
> +
> +static const struct of_device_id __clk_of_table_sentinel
> + __used __section(__clk_of_table_end);
> +
> static LIST_HEAD(of_clk_providers);
> static DEFINE_MUTEX(of_clk_lock);
>
> @@ -1933,6 +1939,9 @@ void __init of_clk_init(const struct of_device_id *matches)
> {
> struct device_node *np;
>
> + if (!matches)
> + matches = __clk_of_table;
> +
> for_each_matching_node(np, matches) {
> const struct of_device_id *match = of_match_node(matches, np);
> of_clk_init_cb_t clk_init_cb = match->data;
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index 1e744c5..8282f7c 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -158,6 +158,15 @@
> #define CLKSRC_OF_TABLES()
> #endif
>
> +#ifdef CONFIG_COMMON_CLK
> +#define CLK_OF_TABLES() . = ALIGN(8); \
> + VMLINUX_SYMBOL(__clk_of_table) = .; \
> + *(__clk_of_table) \
> + *(__clk_of_table_end)
> +#else
> +#define CLK_OF_TABLES()
> +#endif
> +
> #define KERNEL_DTB() \
> STRUCT_ALIGN(); \
> VMLINUX_SYMBOL(__dtb_start) = .; \
> @@ -502,6 +511,7 @@
> CPU_DISCARD(init.rodata) \
> MEM_DISCARD(init.rodata) \
> CLKSRC_OF_TABLES() \
> + CLK_OF_TABLES() \
> KERNEL_DTB()
>
> #define INIT_TEXT \
> diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
> index 4989b8a..7f197d7 100644
> --- a/include/linux/clk-provider.h
> +++ b/include/linux/clk-provider.h
> @@ -379,7 +379,13 @@ struct clk_onecell_data {
> };
> struct clk *of_clk_src_onecell_get(struct of_phandle_args *clkspec, void *data);
> const char *of_clk_get_parent_name(struct device_node *np, int index);
> +
> void of_clk_init(const struct of_device_id *matches);
>
> +#define CLK_OF_DECLARE(name, compat, fn) \
> + static const struct of_device_id __clk_of_table_##name \
> + __used __section(__clk_of_table) \
> + = { .compatible = compat, .data = fn };
> +
> #endif /* CONFIG_COMMON_CLK */
> #endif /* CLK_PROVIDER_H */
>
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robherring2@gmail.com>
To: Prashant Gaikwad <pgaikwad@nvidia.com>
Cc: mturquette@linaro.org, swarren@nvidia.com,
grant.likely@secretlab.ca, linus.walleij@linaro.org,
rob.herring@calxeda.com, maxime.ripard@free-electrons.com,
linux@prisktech.co.nz, josh.cartwright@ni.com,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/7] clk: add common of_clk_init() function
Date: Thu, 24 Jan 2013 11:47:25 -0600 [thread overview]
Message-ID: <510173AD.8080402@gmail.com> (raw)
In-Reply-To: <1357282858-2112-1-git-send-email-pgaikwad@nvidia.com>
On 01/04/2013 01:00 AM, Prashant Gaikwad wrote:
> Modify of_clk_init function so that it will determine which
> driver to initialize based on device tree instead of each driver
> registering to it.
>
> Based on a similar patch for drivers/irqchip by Thomas Petazzoni and
> drivers/clocksource by Stephen Warren.
>
> Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
> ---
For this and highbank:
Tested-by: Rob Herring <rob.herring@calxeda.com>
> drivers/clk/clk-fixed-rate.c | 1 +
> drivers/clk/clk.c | 9 +++++++++
> include/asm-generic/vmlinux.lds.h | 10 ++++++++++
> include/linux/clk-provider.h | 6 ++++++
> 4 files changed, 26 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
> index af78ed6..f2104df 100644
> --- a/drivers/clk/clk-fixed-rate.c
> +++ b/drivers/clk/clk-fixed-rate.c
> @@ -101,4 +101,5 @@ void __init of_fixed_clk_setup(struct device_node *node)
> of_clk_add_provider(node, of_clk_src_simple_get, clk);
> }
> EXPORT_SYMBOL_GPL(of_fixed_clk_setup);
> +CLK_OF_DECLARE(fixed_clk, "fixed-clock", of_fixed_clk_setup);
> #endif
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 037b48a..fb38dd8 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -18,6 +18,7 @@
> #include <linux/slab.h>
> #include <linux/of.h>
> #include <linux/device.h>
> +#include <linux/init.h>
>
> static DEFINE_SPINLOCK(enable_lock);
> static DEFINE_MUTEX(prepare_lock);
> @@ -1805,6 +1806,11 @@ struct of_clk_provider {
> void *data;
> };
>
> +extern struct of_device_id __clk_of_table[];
> +
> +static const struct of_device_id __clk_of_table_sentinel
> + __used __section(__clk_of_table_end);
> +
> static LIST_HEAD(of_clk_providers);
> static DEFINE_MUTEX(of_clk_lock);
>
> @@ -1933,6 +1939,9 @@ void __init of_clk_init(const struct of_device_id *matches)
> {
> struct device_node *np;
>
> + if (!matches)
> + matches = __clk_of_table;
> +
> for_each_matching_node(np, matches) {
> const struct of_device_id *match = of_match_node(matches, np);
> of_clk_init_cb_t clk_init_cb = match->data;
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index 1e744c5..8282f7c 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -158,6 +158,15 @@
> #define CLKSRC_OF_TABLES()
> #endif
>
> +#ifdef CONFIG_COMMON_CLK
> +#define CLK_OF_TABLES() . = ALIGN(8); \
> + VMLINUX_SYMBOL(__clk_of_table) = .; \
> + *(__clk_of_table) \
> + *(__clk_of_table_end)
> +#else
> +#define CLK_OF_TABLES()
> +#endif
> +
> #define KERNEL_DTB() \
> STRUCT_ALIGN(); \
> VMLINUX_SYMBOL(__dtb_start) = .; \
> @@ -502,6 +511,7 @@
> CPU_DISCARD(init.rodata) \
> MEM_DISCARD(init.rodata) \
> CLKSRC_OF_TABLES() \
> + CLK_OF_TABLES() \
> KERNEL_DTB()
>
> #define INIT_TEXT \
> diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
> index 4989b8a..7f197d7 100644
> --- a/include/linux/clk-provider.h
> +++ b/include/linux/clk-provider.h
> @@ -379,7 +379,13 @@ struct clk_onecell_data {
> };
> struct clk *of_clk_src_onecell_get(struct of_phandle_args *clkspec, void *data);
> const char *of_clk_get_parent_name(struct device_node *np, int index);
> +
> void of_clk_init(const struct of_device_id *matches);
>
> +#define CLK_OF_DECLARE(name, compat, fn) \
> + static const struct of_device_id __clk_of_table_##name \
> + __used __section(__clk_of_table) \
> + = { .compatible = compat, .data = fn };
> +
> #endif /* CONFIG_COMMON_CLK */
> #endif /* CLK_PROVIDER_H */
>
next prev parent reply other threads:[~2013-01-24 17:47 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-04 7:00 [PATCH 1/7] clk: add common of_clk_init() function Prashant Gaikwad
2013-01-04 7:00 ` Prashant Gaikwad
2013-01-04 7:00 ` [PATCH 2/7] clk: tegra: Use " Prashant Gaikwad
2013-01-04 7:00 ` Prashant Gaikwad
2013-01-04 16:30 ` Stephen Warren
2013-01-04 16:30 ` Stephen Warren
2013-01-05 2:44 ` Prashant Gaikwad
2013-01-05 2:44 ` Prashant Gaikwad
2013-01-24 19:20 ` Mike Turquette
2013-01-24 19:20 ` Mike Turquette
2013-01-24 19:32 ` Stephen Warren
2013-01-24 19:32 ` Stephen Warren
[not found] ` <20130125005729.10623.61165@quantum>
2013-01-25 4:44 ` Stephen Warren
2013-01-25 4:44 ` Stephen Warren
2013-02-01 4:49 ` Prashant Gaikwad
2013-02-01 4:49 ` Prashant Gaikwad
2013-02-01 22:53 ` Mike Turquette
2013-02-01 22:53 ` Mike Turquette
2013-01-04 7:00 ` [PATCH 3/7] clk: sunxi: " Prashant Gaikwad
2013-01-04 7:00 ` Prashant Gaikwad
2013-01-04 7:00 ` [PATCH 4/7] clk: highbank: " Prashant Gaikwad
2013-01-04 7:00 ` Prashant Gaikwad
2013-01-18 17:55 ` Mike Turquette
2013-01-18 17:55 ` Mike Turquette
2013-01-04 7:00 ` [PATCH 5/7] clk: vt8500: " Prashant Gaikwad
2013-01-04 7:00 ` Prashant Gaikwad
2013-01-18 17:56 ` Mike Turquette
2013-01-18 17:56 ` Mike Turquette
2013-01-18 21:08 ` Tony Prisk
2013-01-18 21:08 ` Tony Prisk
2013-01-24 19:15 ` Mike Turquette
2013-01-25 4:01 ` Tony Prisk
2013-01-25 4:01 ` Tony Prisk
2013-01-04 7:00 ` [PATCH 6/7] clk: zynq: " Prashant Gaikwad
2013-01-04 7:00 ` Prashant Gaikwad
2013-01-04 7:00 ` [PATCH 7/7] clk: vexpress: " Prashant Gaikwad
2013-01-04 7:00 ` Prashant Gaikwad
2013-01-18 17:58 ` Mike Turquette
2013-01-18 17:58 ` Mike Turquette
2013-01-21 16:03 ` Pawel Moll
2013-01-21 16:03 ` Pawel Moll
2013-01-22 9:13 ` Linus Walleij
2013-01-22 9:13 ` Linus Walleij
2013-01-23 10:54 ` Pawel Moll
2013-01-23 10:54 ` Pawel Moll
2013-01-10 19:53 ` [PATCH 1/7] clk: add " Josh Cartwright
2013-01-10 19:53 ` Josh Cartwright
2013-01-11 5:01 ` Prashant Gaikwad
2013-01-11 5:01 ` Prashant Gaikwad
2013-01-13 8:57 ` Maxime Ripard
2013-01-13 8:57 ` Maxime Ripard
2013-01-24 17:47 ` Rob Herring [this message]
2013-01-24 17:47 ` Rob Herring
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=510173AD.8080402@gmail.com \
--to=robherring2@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.