Re: [PATCH v3 01/12] dt-bindings: clock: Add RaspberryPi RP1 clock bindings

Andrea della Porta
2024-10-31T09:15:38Z

Hi Krzysztof,

On 08:23 Tue 29 Oct , Krzysztof Kozlowski wrote:
> On Mon, Oct 28, 2024 at 03:07:18PM +0100, Andrea della Porta wrote:
> > Add device tree bindings for the clock generator found in RP1 multi
> > function device, and relative entries in MAINTAINERS file.
> >
> > Signed-off-by: Andrea della Porta <andrea.porta@suse.com>
> > ---
> > .../clock/raspberrypi,rp1-clocks.yaml | 62 +++++++++++++++++++
> > MAINTAINERS | 6 ++
> > .../clock/raspberrypi,rp1-clocks.h | 61 ++++++++++++++++++
> > 3 files changed, 129 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml
> > create mode 100644 include/dt-bindings/clock/raspberrypi,rp1-clocks.h
> >
> > diff --git a/Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml b/Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml
> > new file mode 100644
> > index 000000000000..a123dd619f8e
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml
> > @@ -0,0 +1,62 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/clock/raspberrypi,rp1-clocks.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: RaspberryPi RP1 clock generator
> > +
> > +maintainers:
> > + - Andrea della Porta <andrea.porta@suse.com>
> > +
> > +description: |
> > + The RP1 contains a clock generator designed as three PLLs (CORE, AUDIO,
> > + VIDEO), and each PLL output can be programmed though dividers to generate
> > + the clocks to drive the sub-peripherals embedded inside the chipset.
> > +
> > + Link to datasheet:
> > + https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf
> > +
> > +properties:
> > + compatible:
> > + const: raspberrypi,rp1-clocks
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + '#clock-cells':
> > + description:
> > + The index in the assigned-clocks is mapped to the output clock as per
> > + definitions in include/dt-bindings/clock/raspberrypi,rp1-clocks.h.
>
> You still describe how current driver matches assigned-clocks to your
> output clocks. That's not the property of clock-cells and that's not how
> assigned-clocks work.

This description is taken by another upstream binding, please see
Documentation/devicetree/bindings/clock/renesas,5p35023.yaml

Its purpose is to let the user know how clock-cell number specified
in assigned-clocks is mapped to the clock provided by this generator.
Since some of these clocks are shared among peripherals, their frequency
cannot be set by consumers, so it's the provider itself (i.e. the clock
device described with this binding) that should take care of them.
The renesas example has assigned-clocks specified though, please see below.

>
> There are no assigned clocks in your DTS, so this is really irrelevant
> (or not correct, choose).

In the first revision of this patchset (please see [1] and following messages)
I had the assigned-clocks setup in the example while trying to explain their
purpose, but Conor said those didn't seem to be relevant, hence I dropped them.
Maybe I had to be more incisive on that.
So, I'd be inclined to retain the description as it is and reintroduce some
assigned-clocks in the example as in the renesas one, would it be ok for you?

>
>
> > + const: 1
> > +
> > + clocks:
> > + maxItems: 1
> > +
> > + clock-names:
> > + const: xosc
>
> What is the purpose of clock-names if you do not use it? Drop.

Ack.

>
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - '#clock-cells'
> > + - clocks
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + #include <dt-bindings/clock/raspberrypi,rp1-clocks.h>
> > +
> > + rp1 {
> > + #address-cells = <2>;
> > + #size-cells = <2>;
> > +
> > + clocks@c040018000 {
> > + compatible = "raspberrypi,rp1-clocks";
> > + reg = <0xc0 0x40018000 0x0 0x10038>;
> > + #clock-cells = <1>;
> > + clocks = <&clk_rp1_xosc>;
> > + clock-names = "xosc";
>
> Only one space after '='.

I will drop the name since the driver will not refer to it via clk_get()
but will use clk_parent_data::index.

Many thanks,
Andrea

[1] - https://lore.kernel.org/all/20240822-refutable-railroad-a3f111ab1e3f@spud/

>
> Best regards,
> Krzysztof
>