Quoting Eric Anholt (2015-08-12 11:04:05)
Michael Turquette [off-list ref] writes:
quoted
Hi Eric,
Quoting Eric Anholt (2015-07-20 12:33:01)
quoted
+void __init rpi_firmware_init_clock_provider(struct device_node *node)
+{
+ /* We delay construction of our struct clks until get time,
+ * because we need to be able to return -EPROBE_DEFER if the
+ * firmware driver isn't up yet. clk core doesn't support
+ * re-probing on -EPROBE_DEFER, but callers of clk_get can.
+ */
+ of_clk_add_provider(node, rpi_firmware_delayed_get_clk, node);
+}
+
+CLK_OF_DECLARE(rpi_firmware_clocks, "raspberrypi,bcm2835-firmware-clocks",
+ rpi_firmware_init_clock_provider);
Do you require CLK_OF_DECLARE here? Could this be a platform driver
instead?
I'm not actually sure. The common pattern seemed to be using
CLK_OF_DECLARE (130 files using it versus declaring a struct
platform_driver), and it seems to avoid a whole lot of boilerplate.
What would the advantage be?
Correctly using the Linux driver model, having a nice struct device and
things like supsend and resume handlers, etc.
There is a lot of CLK_OF_DECLARE going on in drivers/clk, but I am
hoping we can fix that. The main reason for CLK_OF_DECLARE is when you
need to register clocks very early (e.g. timers). This is often not the
case.
Regards,
Mike