of: Add a new macro to declare_of for one parameter function returning a value
authorDaniel Lezcano <daniel.lezcano@linaro.org>
Mon, 18 Apr 2016 21:06:48 +0000 (23:06 +0200)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Tue, 28 Jun 2016 08:19:17 +0000 (10:19 +0200)
commitc35d9292fee0474a1a037f75b0b85af32200c76f
tree11e7965c92af6d08e4f93dce1aefea987c42a1d5
parent43e88c8a73f5896b964183d503d9bf892a551e25
of: Add a new macro to declare_of for one parameter function returning a value

The macro OF_DECLARE_1 expect a void (*func)(struct device_node *) while the
OF_DECLARE_2 expect a int (*func)(struct device_node *, struct device_node *).

The second one allows to pass an init function returning a value, which make
possible to call the functions in the table and check the return value in order
to catch at a higher level the errors and handle them from there instead of
doing a panic in each driver (well at least this is the case for the clkevt).

Unfortunately the OF_DECLARE_1 does not allow that and that lead to some code
duplication and crappyness in the drivers.

The OF_DECLARE_1 is used by all the clk drivers and the clocksource/clockevent
drivers. It is not possible to do the change in one shot as we have to change
all the init functions.

The OF_DECLARE_2 specifies an init function prototype with two parameters with
the node and its parent. The latter won't be used, ever, in the timer drivers.

Introduce a OF_DECLARE_1_RET macro to be used, and hopefully we can smoothly
and iteratively change the users of OF_DECLARE_1 to use the new macro instead.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
include/linux/of.h