Re: [PATCH v4 03/12] dt-bindings: clock: renesas,r9a08g045-vbattb: Document VBATTB
From: Krzysztof Kozlowski
Date: Mon Oct 21 2024 - 03:32:50 EST
On Sat, Oct 19, 2024 at 11:47:29AM +0300, Claudiu wrote:
> From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
>
> The VBATTB IP of the Renesas RZ/G3S SoC controls the clock for RTC,
> the tamper detector and a small general usage memory of 128B.
>
> The VBATTB controller controls the clock for the RTC on the Renesas
> RZ/G3S. The HW block diagram for the clock logic is as follows:
>
> +----------+ XC `\
> RTXIN --->| |----->| \ +----+ VBATTCLK
> | 32K clock| | |----->|gate|----------->
> | osc | XBYP | | +----+
Messed indent. Switch to spaces.
> RTXOUT --->| |----->| /
> +----------+ ,/
>
> One could connect as input to this HW block either a crystal or
> an external clock device.
>
> After discussions w/ Stephen Boyd the clock tree associated with this
> hardware block was exported in Linux as:
>
> input-xtal
> xbyp
> xc
> mux
> vbattclk
>
> where:
> - input-xtal is the input clock (connected to RTXIN, RTXOUT pins)
> - xc, xbyp are mux inputs
> - mux is the internal mux
> - vbattclk is the gate clock that feeds in the end the RTC
>
> to allow selecting the input of the MUX though assigned-clock DT
> properties, using the already existing clock drivers and avoid adding
> other DT properties.
>
> This allows select the input of the mux based on the type of the
> connected input clock:
> - if the 32768 crystal is connected as input for the VBATTB,
> the input of the mux should be xc
> - if an external clock device is connected as input for the VBATTB the
> input of the mux should be xbyp
> + clocks:
> + items:
> + - description: VBATTB module clock
> + - description: RTC input clock (crystal or external clock device)
> +
> + clock-names:
> + items:
> + - const: bclk
> + - const: rtx
> +
> + '#clock-cells':
> + const: 1
> +
> + power-domains:
> + maxItems: 1
> +
> + resets:
> + items:
> + - description: VBATTB module reset
> +
> + quartz-load-femtofarads:
> + description: load capacitance of the on board crystal
> + enum: [ 4000, 7000, 9000, 12500 ]
It's not required, so:
default: ?
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - clocks
> + - clock-names
> + - '#clock-cells'
> + - power-domains
> + - resets
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/r9a08g045-cpg.h>
> + #include <dt-bindings/clock/renesas,r9a08g045-vbattb.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/interrupt-controller/irq.h>
> +
> + clock-controller@1005c000 {
> + compatible = "renesas,r9a08g045-vbattb";
> + reg = <0x1005c000 0x1000>;
> + interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&cpg CPG_MOD R9A08G045_VBAT_BCLK>, <&vbattb_xtal>;
> + clock-names = "bclk", "rtx";
> + assigned-clocks = <&vbattb VBATTB_MUX>;
> + assigned-clock-parents = <&vbattb VBATTB_XC>;
Why are you configuring internal clocks to internal parents? That's part
internal to this device, not DTS... or at least some explanation would
be useful.
Best regards,
Krzysztof