Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54196ccb authored by Rob Herring's avatar Rob Herring
Browse files

of: consolidate linker section OF match table declarations



We now have several OF match tables using linker sections that are
nearly the same definition. The only variation is the callback function
prototype. Create a common define for creating linker section OF match
table entries which each table declaration can use.

Acked-by: default avatarGrant Likely <grant.likely@linaro.org>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 826d8958
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ void __init clocksource_of_init(void)
{
	struct device_node *np;
	const struct of_device_id *match;
	clocksource_of_init_fn init_func;
	of_init_fn_1 init_func;
	unsigned clocksources = 0;

	for_each_matching_node_and_match(np, __clksrc_of_table, &match) {
+3 −4
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@
#ifndef _IRQCHIP_H
#define _IRQCHIP_H

#include <linux/of.h>

/*
 * This macro must be used by the different irqchip drivers to declare
 * the association between their DT compatible string and their
@@ -21,9 +23,6 @@
 * @compstr: compatible string of the irqchip driver
 * @fn: initialization function
 */
#define IRQCHIP_DECLARE(name,compstr,fn)				\
	static const struct of_device_id irqchip_of_match_##name	\
	__used __section(__irqchip_of_table)				\
	= { .compatible = compstr, .data = fn }
#define IRQCHIP_DECLARE(name, compat, fn) OF_DECLARE_2(irqchip, name, compat, fn)

#endif
+1 −4
Original line number Diff line number Diff line
@@ -498,10 +498,7 @@ struct clk_onecell_data {

extern struct of_device_id __clk_of_table;

#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 };
#define CLK_OF_DECLARE(name, compat, fn) OF_DECLARE_1(clk, name, compat, fn)

#ifdef CONFIG_OF
int of_clk_add_provider(struct device_node *np,
+3 −13
Original line number Diff line number Diff line
@@ -339,23 +339,13 @@ 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 *);
#define CLOCKSOURCE_OF_DECLARE(name, compat, fn) \
	OF_DECLARE_1(clksrc, name, compat, fn)

#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 == (clocksource_of_init_fn)NULL) ? fn : fn }
#else
static inline void clocksource_of_init(void) {}
#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 */
+22 −0
Original line number Diff line number Diff line
@@ -757,4 +757,26 @@ static inline int of_get_available_child_count(const struct device_node *np)
	return num;
}

#ifdef CONFIG_OF
#define _OF_DECLARE(table, name, compat, fn, fn_type)			\
	static const struct of_device_id __of_table_##name		\
		__used __section(__##table##_of_table)			\
		 = { .compatible = compat,				\
		     .data = (fn == (fn_type)NULL) ? fn : fn  }
#else
#define _OF_DECLARE(table, name, compat, fn, fn_type)					\
	static const struct of_device_id __of_table_##name		\
		__attribute__((unused))					\
		 = { .compatible = compat,				\
		     .data = (fn == (fn_type)NULL) ? fn : fn }
#endif

typedef int (*of_init_fn_2)(struct device_node *, struct device_node *);
typedef void (*of_init_fn_1)(struct device_node *);

#define OF_DECLARE_1(table, name, compat, fn) \
		_OF_DECLARE(table, name, compat, fn, of_init_fn_1)
#define OF_DECLARE_2(table, name, compat, fn) \
		_OF_DECLARE(table, name, compat, fn, of_init_fn_2)

#endif /* _LINUX_OF_H */
Loading