Ping?
On Mon, Aug 31, 2015 at 5:56 PM, Geert Uytterhoeven
<[email protected]> wrote:
> On Mon, Aug 31, 2015 at 2:49 PM, Magnus Damm <[email protected]> wrote:
>> From: Gaku Inami <[email protected]>
>>
>> This V5 patch adds initial CPG support for R-Car Generation 3 and in
>> particular the R8A7795 SoC.
>>
>> The R-Car Gen3 clock hardware has a register write protection feature that
>> needs to be shared between the CPG function needs to be shared between
>> the CPG and MSTP hardware somehow. So far this feature is simply ignored.
>>
>> Signed-off-by: Gaku Inami <[email protected]>
>> Signed-off-by: Kuninori Morimoto <[email protected]>
>> Signed-off-by: Magnus Damm <[email protected]>
>> ---
>>
>> Changes since V4: (Magnus Damm <[email protected]>)
>> - Simplified clks array handling - thanks Geert!
>> - Updated th DT binding documentation to reflect latest state
>> - of_property_count_strings() -> of_property_count_u32_elems() fix
>>
>> Changes since V3: (Magnus Damm <[email protected]>)
>> - Reworked driver to incorporate most feedback from Stephen Boyd - thanks!!
>> - Major things like syscon and driver model require more discussion.
>> - Added hunk to build drivers/clk/shmobile if ARCH_RENESAS is set.
>>
>> Changes since V2: (Magnus Damm <[email protected]>)
>> - Reworked driver to rely on clock index instead of strings.
>> - Dropped use of "clock-output-names".
>
> Unfortunately dropping "clock-output-names" causes a regression: it turns
> out all fixed-factor clocks that have <&cpg_clocks R8A7795_CLK_*> as a parent
> have lost their parent clock, and have rate zero.
>
> E.g. instead of
>
> clock enable_cnt prepare_cnt rate
> accuracy phase
> ----------------------------------------------------------------------------------------
> extal 1 1 16666600
> 50000 0
> main 1 1 8333300
> 50000 0
> pll1 1 2 799996800
> 50000 0
> cl 0 0 16666600
> 50000 0
> s3 1 1 133332800
> 50000 0
> s3d4 1 2 33333200
> 50000 0
> mstp3_clks.10 2 2 33333200
> 50000 0
>
> /sys/kernel/debug/clk/clk_summary now has:
>
> clock enable_cnt prepare_cnt rate
> accuracy phase
> ----------------------------------------------------------------------------------------
> extal 0 0 16666600
> 50000 0
> main 0 0 8333300
> 50000 0
> pll1 0 0 799996800
> 50000 0
> cl 0 0 0
> 0 0
> s3 1 1 0
> 0 0
> s3d4 1 2 0
> 0 0
> mstp3_clks.10 2 2 0
> 0 0
>
> Surprisingly, the system still works.
>
> Several clock drivers (e.g. fixed-factor-clock) use of_clk_get_parent_name()
> to find the name of the parent clock.
> In the absence of "clock-output-names", this returns the name of the device
> node of the parent's clock. Which is always "cpg_clocks", and no longer the
> name of the clock matching the index.
>
> I believe the same issue is present for MSTP clocks, but there we don't have
> children clocks, so it doesn't manifest itself (yet).
>
> A quick workaround is to just re-add the clock-output-names to r8a7795.dtsi:
>
> clock-output-names =
> "main", "pll0", "pll1","pll2",
> "pll3", "pll4";
>
> Hence it seems like dropping "clock-output-names" for clocks with multiple
> outputs is not such a good idea?
>
> See also my question in "Re: [PATCH 3/4 v3][RFC] arm64: renesas: Add initial
> r8a7795 SoC support" (http://www.spinics.net/lists/linux-sh/msg44609.html):
>
> | BTW, was "dropping clock-output-names" a general comment for all clock
> | drivers, or specific to the SoC's Clock Pulse Generator?
> |
> | For e.g. "fixed-factor-clock", the driver falls back to using the node's
> | name if "clock-output-names" is not present.
> |
> | But e.g. for MSTP clocks, that can't be done, as the clocks wouldn't have
> | names in that case (single node with multiple clocks). Unless we start
> | fabricating them from the node name and the indices."
>
> For MSTP, we started fabricating them, but that doesn't solve the
> of_clk_get_parent_name() issue.
>
> Thanks for your comments!
>
>> Earlier versions: Kuninori Morimoto <[email protected]>
>> Initial version: Gaku Inami <[email protected]>
>>
>> Documentation/devicetree/bindings/clock/renesas,rcar-gen3-cpg-clocks.txt |
>> 32 +
>> drivers/clk/Makefile |
>> 1
>> drivers/clk/shmobile/Makefile |
>> 1
>> drivers/clk/shmobile/clk-rcar-gen3.c |
>> 245 ++++++++++
>> 4 files changed, 279 insertions(+)
>>
>> --- /dev/null
>> +++
>> work/Documentation/devicetree/bindings/clock/renesas,rcar-gen3-cpg-clocks.txt
>> 2015-08-31 15:49:10.000000000 +0900
>> @@ -0,0 +1,32 @@
>> +* Renesas R-Car Gen3 Clock Pulse Generator (CPG)
>> +
>> +The CPG generates core clocks for the R-Car Gen3 SoCs. It includes three
>> PLLs
>> +and several fixed ratio dividers.
>> +
>> +Required Properties:
>> +
>> + - compatible: Must be one of
>> + - "renesas,r8a7795-cpg-clocks" for the r8a7795 CPG
>> + - "renesas,rcar-gen3-cpg-clocks" for the generic R-Car Gen3 CPG
>> +
>> + - reg: Base address and length of the memory resource used by the CPG
>> +
>> + - clocks: References to the parent clocks: first to the EXTAL clock
>> + - #clock-cells: Must be 1
>> + - clock-indices: Indices of the exported clocks
>> +
>> +Example
>> +-------
>> +
>> + cpg_clocks: cpg_clocks@e6150000 {
>> + compatible = "renesas,r8a7795-cpg-clocks",
>> + "renesas,rcar-gen3-cpg-clocks";
>> + reg = <0 0xe6150000 0 0x1000>;
>> + clocks = <&extal_clk>;
>> + #clock-cells = <1>;
>> + clock-indices = <
>> + R8A7795_CLK_MAIN R8A7795_CLK_PLL0
>> + R8A7795_CLK_PLL1 R8A7795_CLK_PLL2
>> + R8A7795_CLK_PLL3 R8A7795_CLK_PLL4
>> + >;
>> + };
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
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
--
To unsubscribe from this list: send the line "unsubscribe linux-clk" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html