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

Andrea della Porta
2024-11-15T11:31:19Z

Hi Krzysztof,

On 10:16 Thu 31 Oct , Andrea della Porta wrote:
> 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?

Since I'm on the verge of producing a new patchset revision, may I kindly ask
some comments on this? Is it ok for you?

Many thanks,
Andrea

>
> >
> >
> > > + 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
> >