Re: [PATCH v6 3/6] dt-bindings: clock: renesas,rzn1-clocks: document RZ/N1 clock driver
From: Rob Herring <robh@kernel.org>
Date: 2018-05-22 16:09:20
Also in:
linux-clk, linux-renesas-soc, lkml
On Tue, May 22, 2018 at 11:01:23AM +0100, Michel Pollet wrote:
quoted hunk ↗ jump to hunk
The Renesas RZ/N1 Family (Part #R9A06G0xx) requires a driver to provide the SoC clock infrastructure for Linux. This documents the driver bindings. Signed-off-by: Michel Pollet <redacted> --- .../bindings/clock/renesas,rzn1-clocks.txt | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/renesas,rzn1-clocks.txtdiff --git a/Documentation/devicetree/bindings/clock/renesas,rzn1-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rzn1-clocks.txt new file mode 100644 index 0000000..0c41137 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,rzn1-clocks.txt@@ -0,0 +1,44 @@ +* Renesas RZ/N1 Clock Driver + +This driver provides the clock infrastructure used by all the other drivers.
Bindings document h/w not drivers.
+ +One of the 'special' feature of this infrastructure is that Linux doesn't
Bindings are not just for Linux.
+necessary 'own' all the clocks on the SoC, some other OS runs on +the Cortex-M3 core and that OS can access and claim it's own clocks.
How is this relevant to the binding?
+ +Required Properties: + + - compatible: Must be + - "renesas,r9a06g032-clocks" for the RZ/N1D + and "renesas,rzn1-clocks" as a fallback.
Is "clocks" how the chip reference manual refers to this block?
+ - reg: Base address and length of the memory resource used by the driver
+ - #clock-cells: Must be 1
+
+Examples
+--------
+
+ - Clock driver device node:
+
+ clock: clocks@4000c000 {clock-controller@...
+ compatible = "renesas,r9a06g032-clocks", + "renesas,rzn1-clocks"; + reg = <0x4000c000 0x1000>; + status = "okay";
Don't show status in examples. (Plus, I doubt you ever want to have this disabled, so you don't need the property in your dts files either).
+ #clock-cells = <1>; + }; + + + - Other drivers can use the clocks as in:
s/drivers/nodes/
+
+ uart0: serial@40060000 {
+ compatible = "snps,dw-apb-uart";
+ reg = <0x40060000 0x400>;
+ interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ clocks = <&clock RZN1_CLK_UART0>;
+ clock-names = "baudclk";
+ };
+ Note the use of RZN1_CLK_UART0 -- these constants are declared in
+ the rzn1-clocks.h header file. These are not hardware based constants
+ and are Linux specific.No, they are not Linux specific. They are part of the DT ABI. While it is not a requirement to base them on some h/w numbering, it is preferred if you can. That usually only works if you can base them on bit positions or register offsets. Rob