Re: [PATCH 1/3] dt-bindings: bus: simple-pm-bus: Make clocks and power-domains optional

From: Geert Uytterhoeven
Date: Thu Oct 07 2021 - 09:26:59 EST


Hi Tony,

Thanks for your patch!

On Thu, Oct 7, 2021 at 2:49 PM Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> Clocks and power domains are not required by the simple-pm-bus driver.
> There are buses with read-only registers for clocks and power domains
> that are always on.

The presence of clocks or power-domains properties is the only
distinguishing factor between simple-pm-bus and simple-bus, from a
DT point of view. So if there has to be a distinguishment, the
properties should be required

If you don't have clocks and power-domains, you should use simple-bus.

> Even without clocks and power domains configured, simple-pm-bus is still
> different from simple-bus as simple-pm-bus enables runtime PM for the bus
> driver.

Which you need to have working Runtime PM for child devices, right? ;-)

This is not specific to DT, but to Linux.
One more reason to let Linux treat simple-pm-bus and simple-bus exactly
the same. Linux handles the clocks and power-domains (if present)
transparently anyway, through PM Domains

> Let's update the binding accordingly as this remove the related warnings
> for dt_binding_check for omaps.
>
> Cc: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
> Cc: Rob Herring <robh@xxxxxxxxxx>
> Cc: Simon Horman <horms+renesas@xxxxxxxxxxxx>
> Cc: Suman Anna <s-anna@xxxxxx>
> Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>

> --- a/Documentation/devicetree/bindings/bus/simple-pm-bus.yaml
> +++ b/Documentation/devicetree/bindings/bus/simple-pm-bus.yaml
> @@ -13,10 +13,9 @@ description: |
> A Simple Power-Managed Bus is a transparent bus that doesn't need a real
> driver, as it's typically initialized by the boot loader.
>
> - However, its bus controller is part of a PM domain, or under the control
> - of a functional clock. Hence, the bus controller's PM domain and/or
> - clock must be enabled for child devices connected to the bus (either
> - on-SoC or externally) to function.
> + However, its bus controller is typically part of a PM domain, or under
> + the control of a functional clock. Without PM domain or functional clock,
> + it still enables runtime PM for the bus driver unlike "simple-bus".
>
> While "simple-pm-bus" follows the "simple-bus" set of properties, as
> specified in the Devicetree Specification, it is not an extension of
> @@ -43,10 +42,10 @@ properties:
>
> clocks: true
> # Functional clocks
> - # Required if power-domains is absent, optional otherwise
> + # Typically used if power-domains is absent
>
> power-domains:
> - # Required if clocks is absent, optional otherwise
> + # Typically used if clocks is absent
> minItems: 1
>
> required:
> @@ -55,12 +54,6 @@ required:
> - '#size-cells'
> - ranges
>
> -anyOf:
> - - required:
> - - clocks
> - - required:
> - - power-domains
> -
> additionalProperties: true
>
> examples:

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

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