Thread (2 messages) 2 messages, 2 authors, 2017-07-24

RE: [PATCH v2] clk: renesas: rcar-usb2-clock-sel: Add R-Car USB 2.0 clock selector PHY

From: Yoshihiro Shimoda <hidden>
Date: 2017-07-24 10:33:18
Also in: linux-clk, linux-renesas-soc

Hi Geert-san,
From: Geert Uytterhoeven
Sent: Wednesday, July 5, 2017 9:22 PM

Hi Shimoda-san,

On Wed, Jul 5, 2017 at 1:57 PM, Yoshihiro Shimoda
[off-list ref] wrote:
quoted
quoted
From: Geert Uytterhoeven
Sent: Wednesday, July 5, 2017 7:09 PM
On Wed, Jun 28, 2017 at 8:28 AM, Yoshihiro Shimoda
[off-list ref] wrote:
quoted
R-Car USB 2.0 controller can change the clock source from an oscillator
to an external clock via a register. So, this patch adds support
the clock source selector as a clock driver.
quoted
quoted
quoted
--- /dev/null
+++ b/drivers/clk/renesas/rcar-usb2-clock-sel.c
quoted
quoted
quoted
+/* Since this driver needs other ccf drivers, this uses subsys_initcall_sync */
+subsys_initcall_sync(rcar_usb2_clock_sel_init);
I suppose this is a workaround for the lack of probe deferral support in the
USB subsystem?
This is my fault. I added "power-domains" property into this device's node.
After I remove the power-domains like the cpg node, this driver can use subsys_initcall()
instead of subsys_initcall_sync().
Does the clock sel module requires the functional clock "ehci_ohci" to be
running before you can access its registers?
If yes, I think there should be a "power-domains" property.
Yes. But...
Then, you can simplify the code by calling

        pm_runtime_enable(dev);
        pm_runtime_get_sync(dev);

and remove the explicit handling of the functional clock.

That does not solve probe deferral handling in the USB subsystem, though.
I added a debug message at end of cpg_mssr_probe(), and if I used subsys_initcall() on
rcar-usb2-clock-sel driver, kernel log output below:
========================
[    0.272547] rcar-usb2-clock-sel e6590630.clock-controller: probe deferral not supported
[    0.273944]  ----------------- cpg_mssr_probe: probed!
========================
So, it seems the renesas-cpg-mssr.c doesn't solve probe deferral handling.
(The driver renesas-cpg-mssr.c uses platform_driver_probe() for now.)

So, IIUC, this rcar-usb2-clock-sel driver cannot use subsys_initcall().
Or, should we modify the renesas-cpg-mssr.c somehow?

Best regards,
Yoshihiro Shimoda
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
N�����r��y���b�X��ǧv�^�)޺{.n�+���z��z��z)���w*jg���
�����ݢj.�۰\��M��gj��a����' ��ޢ�
���j:+v���w�j�m��������zZ+�����ݢj"��!�i
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help