Commit 2e8e9a24 authored by Peter Griffin's avatar Peter Griffin Committed by Krzysztof Kozlowski
Browse files

dt-bindings: clock: google,gs101-clock: add samsung,sysreg property as required



Each CMU (with the exception of cmu_top) has a corresponding sysreg bank
that contains the BUSCOMPONENT_DRCG_EN and optional MEMCLK registers.
The BUSCOMPONENT_DRCG_EN register enables dynamic root clock gating of
bus components and MEMCLK gates the sram clock.

Now the clock driver supports automatic clock mode, to fully enable dynamic
root clock gating it is required to configure these registers. Update the
bindings documentation so that all CMUs (with the exception of
gs101-cmu-top) have samsung,sysreg as a required property.

Note this is NOT an ABI break, as if the property isn't specified the
clock driver will fallback to the current behaviour of not initializing
the registers. The system still boots, but bus components won't benefit
from dynamic root clock gating and dynamic power will be higher (which has
been the case until now anyway).

Additionally update the DT example to included the correct CMU size as
registers in that region are used for automatic clock mode.

Acked-by: default avatarRob Herring (Arm) <robh@kernel.org>
Reviewed-by: default avatarAndré Draszik <andre.draszik@linaro.org>
Reviewed-by: default avatarRob Herring (Arm) <robh@kernel.org>
Signed-off-by: default avatarPeter Griffin <peter.griffin@linaro.org>
Link: https://patch.msgid.link/20251222-automatic-clocks-v7-1-fec86fa89874@linaro.org


Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
parent efa45bcc
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -52,6 +52,11 @@ properties:
  reg:
    maxItems: 1

  samsung,sysreg:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Phandle to system registers interface.

required:
  - compatible
  - "#clock-cells"
@@ -166,6 +171,18 @@ allOf:
            - const: bus
            - const: ip

  - if:
      properties:
        compatible:
          contains:
            const: google,gs101-cmu-top
    then:
      properties:
        samsung,sysreg: false
    else:
      required:
        - samsung,sysreg

additionalProperties: false

examples:
@@ -175,7 +192,7 @@ examples:

    cmu_top: clock-controller@1e080000 {
        compatible = "google,gs101-cmu-top";
        reg = <0x1e080000 0x8000>;
        reg = <0x1e080000 0x10000>;
        #clock-cells = <1>;
        clocks = <&ext_24_5m>;
        clock-names = "oscclk";