diff options
| -rw-r--r-- | drivers/clocksource/clksrc-of.c | 3 | ||||
| -rw-r--r-- | drivers/clocksource/vt8500_timer.c | 2 | ||||
| -rw-r--r-- | include/linux/clocksource.h | 11 | 
3 files changed, 12 insertions, 4 deletions
diff --git a/drivers/clocksource/clksrc-of.c b/drivers/clocksource/clksrc-of.c index 3ef11fba781..37f5325bec9 100644 --- a/drivers/clocksource/clksrc-of.c +++ b/drivers/clocksource/clksrc-of.c @@ -16,6 +16,7 @@  #include <linux/init.h>  #include <linux/of.h> +#include <linux/clocksource.h>  extern struct of_device_id __clksrc_of_table[]; @@ -26,7 +27,7 @@ void __init clocksource_of_init(void)  {  	struct device_node *np;  	const struct of_device_id *match; -	void (*init_func)(struct device_node *); +	clocksource_of_init_fn init_func;  	for_each_matching_node_and_match(np, __clksrc_of_table, &match) {  		init_func = match->data; diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c index 24225528559..64f553f04fa 100644 --- a/drivers/clocksource/vt8500_timer.c +++ b/drivers/clocksource/vt8500_timer.c @@ -165,4 +165,4 @@ static void __init vt8500_timer_init(struct device_node *np)  					4, 0xf0000000);  } -CLOCKSOURCE_OF_DECLARE(vt8500, "via,vt8500-timer", vt8500_timer_init) +CLOCKSOURCE_OF_DECLARE(vt8500, "via,vt8500-timer", vt8500_timer_init); diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index 08ed5e19d8c..192d6d1771e 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h @@ -332,16 +332,23 @@ extern int clocksource_mmio_init(void __iomem *, const char *,  extern int clocksource_i8253_init(void); +struct device_node; +typedef void(*clocksource_of_init_fn)(struct device_node *);  #ifdef CONFIG_CLKSRC_OF  extern void clocksource_of_init(void);  #define CLOCKSOURCE_OF_DECLARE(name, compat, fn)			\  	static const struct of_device_id __clksrc_of_table_##name	\  		__used __section(__clksrc_of_table)			\ -		 = { .compatible = compat, .data = fn }; +		 = { .compatible = compat,				\ +		     .data = (fn == (clocksource_of_init_fn)NULL) ? fn : fn }  #else  static inline void clocksource_of_init(void) {} -#define CLOCKSOURCE_OF_DECLARE(name, compat, fn) +#define CLOCKSOURCE_OF_DECLARE(name, compat, fn)			\ +	static const struct of_device_id __clksrc_of_table_##name	\ +		__attribute__((unused))					\ +		 = { .compatible = compat,				\ +		     .data = (fn == (clocksource_of_init_fn)NULL) ? fn : fn }  #endif  #endif /* _LINUX_CLOCKSOURCE_H */  |