Thread (8 messages) 8 messages, 2 authors, 2018-08-01

Re: [PATCH] clk: renesas: r9a06g032: Avoid needless probe deferring

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2018-08-01 12:35:36
Also in: linux-renesas-soc, lkml

Hi Phil,

CC Jacopo

On Fri, Jul 20, 2018 at 3:57 PM Phil Edworthy [off-list ref] wrote:
On 20 July 2018 13:41, Geert Uytterhoeven wrote:
quoted
On Fri, Jul 20, 2018 at 2:26 PM Phil Edworthy wrote:
quoted
On 20 July 2018 13:12, Geert Uytterhoeven wrote:
quoted
On Fri, Jul 20, 2018 at 2:06 PM Phil Edworthy  wrote:
quoted
On 20 July 2018 12:21, Geert Uytterhoeven wrote:
quoted
On Wed, Jul 18, 2018 at 4:34 PM Phil Edworthy wrote:
quoted
To avoid all SoC peripheral drivers deferring their probes,
both clock and pinctrl drivers should already be probed. Since
the pinctrl driver requires a clock to access the registers,
the clock driver should be probed before the pinctrl driver.

Therefore, move the clock driver from subsys_initcall to
core_initcall.
quoted
quoted
quoted
quoted
quoted
Signed-off-by: Phil Edworthy <redacted>
Thanks for your patch!
Thanks for your review!
quoted
The (not yet upstreamed) pinctrl driver uses postcore_initcall(), right?
No, the pinctrl driver uses subsys_initcall, but postcore_initcall
or arch_initcall may be better to make it clear about the dependencies.
if the pinctrl driver uses subsys_initcall(), ...
quoted
quoted
quoted
quoted
quoted
-subsys_initcall(r9a06g032_clocks_init);
+core_initcall(r9a06g032_clocks_init);
... using postcore_initcall() or arch_initcall() here, should work
with platform_driver_probe()?
Nope, you have to use platform_driver_register() for DT based drivers.
subsys_initcall is the earliest you can use platform_driver_probe().
So drivers/misc/atmel_tclib.c and drivers/pinctrl/pinctrl-coh901.c, which use
arch_initcall(), cannot work?
How those drivers work I do not know. However, I tried with the rzn1 clock
driver and it does not work.
quoted
If that is really true, you can still use subsys_initcall() in the clock driver, and
subsys_initcall_sync() in the pinctrl driver.
True, I'm not sure how people decide which initcall to use and whether the
_sync variants of the initcalls have a special meaning or intention. As far as
I know they were introduced for threaded probes, so are we supposed to
use them for driver dependencies like this?

Do you know why the rza1 pinctrl driver is running from core_initcall()?
Probably because it can?
Note that drivers/clk/renesas/clk-rz.c uses CLK_OF_DECLARE().

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help