RE: [PATCH] clk: renesas: cpg-mssr: Add R7S9210 support
From: Chris Brandt <Chris.Brandt@renesas.com>
Date: 2018-08-27 16:58:57
Also in:
linux-clk, linux-renesas-soc
Hi Geert, Thank you for having a look at this. On Monday, August 27, 2018 1, Geert Uytterhoeven wrote:
Given the differences, and the limited amount of RAM on RZ/A2, I think you would be better off with a separate renesas-cpg-stbcr driver, and an r7s9210-cpg-stbcr counterpart.
If you really think there will be a lot of wasted RAM, then I will look into it. So are you saying I should first copy/rename renesas-cpg-mssr.c to renesas-cpg-stbr.c and then start hacking away at it?
4. Your module clocks can use e.g. "36" instead of "306" (also in the DTS), matching the datasheet.
Yes, that would be much nicer! Just FYI, I like this new driver method, but the one downfall is that I have to go back and change my timer driver (renesas-ostm.c). The current OSTM driver uses TIMER_OF_DECLARE(). But when you use TIMER_OF_DECLARE, your timer driver gets probed VERY early in boot, before subsys_initcall, so none of your clocks are registered yet and the probe fails. Chris
That means:quoted
.../devicetree/bindings/clock/renesas,cpg-mssr.txt | 3 +-1. A separate binding document.quoted
drivers/clk/renesas/Kconfig | 5 + drivers/clk/renesas/Makefile | 1 + drivers/clk/renesas/r7s9210-cpg-mssr.c | 189+++++++++++++++++++++quoted
drivers/clk/renesas/renesas-cpg-mssr.c | 66 +++++-- drivers/clk/renesas/renesas-cpg-mssr.h | 6 + include/dt-bindings/clock/r7s9210-cpg-mssr.h | 21 +++ 7 files changed, 280 insertions(+), 11 deletions(-) create mode 100644 drivers/clk/renesas/r7s9210-cpg-mssr.c create mode 100644 include/dt-bindings/clock/r7s9210-cpg-mssr.hdiff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.txtquoted
index db542abadb75..66ca973edd77 100644--- a/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.txt +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.txt@@ -13,6 +13,7 @@ They provide the following functionalities: Required Properties: - compatible: Must be one of: + - "renesas,r7s9210-cpg-mssr" for the r7s9210 SoC (RZ/A2) - "renesas,r8a7743-cpg-mssr" for the r8a7743 SoC (RZ/G1M) - "renesas,r8a7745-cpg-mssr" for the r8a7745 SoC (RZ/G1E) - "renesas,r8a77470-cpg-mssr" for the r8a77470 SoC (RZ/G1C)@@ -37,7 +38,7 @@ Required Properties: - clock-names: List of external parent clock names. Valid names are: - "extal" (r8a7743, r8a7745, r8a77470, r8a7790, r8a7791, r8a7792, r8a7793, r8a7794, r8a7795, r8a7796, r8a77965, r8a77970, - r8a77980, r8a77990, r8a77995) + r8a77980, r8a77990, r8a77995, r7s9210) - "extalr" (r8a7795, r8a7796, r8a77965, r8a77970, r8a77980) - "usb_extal" (r8a7743, r8a7745, r8a77470, r8a7790, r8a7791,r8a7793,quoted
r8a7794)diff --git a/drivers/clk/renesas/Kconfig b/drivers/clk/renesas/Kconfig index 9022bbe1297e..d8ccdaba5103 100644 --- a/drivers/clk/renesas/Kconfig +++ b/drivers/clk/renesas/Kconfigquoted
@@ -45,6 +46,10 @@ config CLK_RZA1 bool "RZ/A1H clock support" if COMPILE_TEST select CLK_RENESAS_CPG_MSTP +config CLK_R7S9210 + bool "RZ/A2 clock support" if COMPILE_TEST + select CLK_RENESAS_CPG_MSSR2. a separate CLK_RENESAS_CPG_STBCR symbol.quoted
--- /dev/null +++ b/drivers/clk/renesas/r7s9210-cpg-mssr.c3. Almost all of this can stay the same, modulo some renames.quoted
+static const struct mssr_mod_clk r7s9210_mod_clks[] __initconst = { + DEF_MOD("ostm0", 306, R7S9210_CLK_P1C),4. Your module clocks can use e.g. "36" instead of "306" (also in the DTS), matching the datasheet.quoted
--- /dev/null +++ b/include/dt-bindings/clock/r7s9210-cpg-mssr.h5. Almost all of this can stay the same, modulo some renames. What do you think? 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