mbox series

[0/7] Update RPM ICC bindings

Message ID 20230721-topic-icc_bindings-v1-0-93e2bc728fb7@linaro.org
Headers show
Series Update RPM ICC bindings | expand

Message

Konrad Dybcio July 21, 2023, 1:54 p.m. UTC
The recent necessary overhaul [1] of how we represent SMD ICC and RPM
bus clocks changed the way they're connected. The bindings however were
not updated to reflect that. This series tries to address that, while
also making the relevant bindings less convoluted.

Now, instead of referencing RPM SMD bus clocks via clocks=<>, they're
handled internally within the interconnect framework (via direct RPM
calls from there). We still need to allow some "interface" clocks,
which are necessary to access some registers and not managed for us.

[1] https://lore.kernel.org/linux-arm-msm/20230526-topic-smd_icc-v7-0-09c78c175546@linaro.org/

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
Konrad Dybcio (7):
      dt-bindings: interconnect: qcom: Introduce qcom,rpm-common
      dt-bindings: interconnect: qcom: qcm2290: Remove RPM bus clocks
      dt-bindings: interconnect: qcom: Fix and separate out MSM8916
      dt-bindings: interconnect: qcom: Fix and separate out QCS404
      dt-bindings: interconnect: qcom: Fix and separate out SDM660
      dt-bindings: interconnect: qcom: Fix and separate out MSM8996
      dt-bindings: interconnect: qcom: Fix and separate out MSM8939

 .../bindings/interconnect/qcom,msm8916.yaml        |  52 ++++
 .../bindings/interconnect/qcom,msm8939.yaml        |  74 ++++++
 .../bindings/interconnect/qcom,msm8996.yaml        | 165 ++++++++++++
 .../bindings/interconnect/qcom,qcm2290.yaml        |  54 +---
 .../bindings/interconnect/qcom,qcs404.yaml         |  52 ++++
 .../bindings/interconnect/qcom,rpm-common.yaml     |  31 +++
 .../devicetree/bindings/interconnect/qcom,rpm.yaml | 281 ---------------------
 .../bindings/interconnect/qcom,sdm660.yaml         | 131 ++++++++++
 8 files changed, 509 insertions(+), 331 deletions(-)
---
base-commit: ae867bc97b713121b2a7f5fcac68378a0774739b
change-id: 20230721-topic-icc_bindings-72917016f595

Best regards,

Comments

Krzysztof Kozlowski July 22, 2023, 9:38 a.m. UTC | #1
On 21/07/2023 15:54, Konrad Dybcio wrote:
> Separate out MSM8916 icc bindings and fix the clocks description by
> removing the wrong internal RPM bus clock representation that we've
> been carrying for years.
> 
> Replace the example in qcom,rpm.yaml with MSM8939 to keep it relevant
> to the file.
> 
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>  .../bindings/interconnect/qcom,msm8916.yaml        | 52 ++++++++++++++++++++++
>  .../devicetree/bindings/interconnect/qcom,rpm.yaml | 24 +++++-----
>  2 files changed, 65 insertions(+), 11 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/interconnect/qcom,msm8916.yaml b/Documentation/devicetree/bindings/interconnect/qcom,msm8916.yaml
> new file mode 100644
> index 000000000000..49baf808c087
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/interconnect/qcom,msm8916.yaml
> @@ -0,0 +1,52 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/interconnect/qcom,msm8916.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm MSM8916 Network-On-Chip interconnect
> +
> +maintainers:
> +  - Konrad Dybcio <konradybcio@kernel.org>
> +
> +description: |
> +  The Qualcomm MSM8916 interconnect providers support adjusting the
> +  bandwidth requirements between the various NoC fabrics.
> +
> +allOf:
> +  - $ref: qcom,rpm-common.yaml#
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,msm8916-bimc
> +      - qcom,msm8916-pcnoc
> +      - qcom,msm8916-snoc
> +

Keeping reg here also makes it nicely aligned with required: (property
and required are both in one file)

> +required:
> +  - compatible
> +  - reg
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/qcom,rpmcc.h>
> +
> +    snoc: interconnect@580000 {
> +        compatible = "qcom,msm8916-snoc";
> +        reg = <0x00580000 0x14000>;
> +        #interconnect-cells = <1>;
> +    };
> +
> +    pcnoc: interconnect@500000 {
> +        compatible = "qcom,msm8916-pcnoc";
> +        reg = <0x00500000 0x11000>;
> +        #interconnect-cells = <1>;
> +    };
> +
> +    bimc: interconnect@400000 {
> +        compatible = "qcom,msm8916-bimc";
> +        reg = <0x00400000 0x62000>;
> +        #interconnect-cells = <1>;
> +    };

Just keep one example.

> diff --git a/Documentation/devicetree/bindings/interconnect/qcom,rpm.yaml b/Documentation/devicetree/bindings/interconnect/qcom,rpm.yaml
> index 4f95d512012a..788c5e88445a 100644
> --- a/Documentation/devicetree/bindings/interconnect/qcom,rpm.yaml
> +++ b/Documentation/devicetree/bindings/interconnect/qcom,rpm.yaml
> @@ -20,9 +20,6 @@ properties:
>  
>    compatible:
>      enum:
> -      - qcom,msm8916-bimc
> -      - qcom,msm8916-pcnoc
> -      - qcom,msm8916-snoc
>        - qcom,msm8939-bimc
>        - qcom,msm8939-pcnoc
>        - qcom,msm8939-snoc
> @@ -109,9 +106,6 @@ allOf:
>          compatible:
>            contains:
>              enum:
> -              - qcom,msm8916-bimc
> -              - qcom,msm8916-pcnoc
> -              - qcom,msm8916-snoc
>                - qcom,msm8939-bimc
>                - qcom,msm8939-pcnoc
>                - qcom,msm8939-snoc
> @@ -254,7 +248,7 @@ examples:
>        #include <dt-bindings/clock/qcom,rpmcc.h>
>  
>        bimc: interconnect@400000 {
> -              compatible = "qcom,msm8916-bimc";
> +              compatible = "qcom,msm8939-bimc";
>                reg = <0x00400000 0x62000>;
>                #interconnect-cells = <1>;
>                clock-names = "bus", "bus_a";
> @@ -263,7 +257,7 @@ examples:
>        };
>  
>        pcnoc: interconnect@500000 {
> -              compatible = "qcom,msm8916-pcnoc";
> +              compatible = "qcom,msm8939-pcnoc";
>                reg = <0x00500000 0x11000>;
>                #interconnect-cells = <1>;
>                clock-names = "bus", "bus_a";

This part makes little sense since you remove the file few patches
later. I suggest reverse the order of patches. Split out first the oones
without examples (like 8939), so the last step is kind of rename.


Best regards,
Krzysztof
Krzysztof Kozlowski July 22, 2023, 9:41 a.m. UTC | #2
On 21/07/2023 15:54, Konrad Dybcio wrote:
> Separate out SDM660 icc bindings from the common file and fix the
> clocks description by removing the wrong internal RPM bus clock
> representation that we've been carrying for years.
> 
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>

...

> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/qcom,gcc-sdm660.h>
> +    #include <dt-bindings/clock/qcom,mmcc-sdm660.h>
> +    #include <dt-bindings/clock/qcom,rpmcc.h>
> +
> +    bimc: interconnect@1008000 {
> +        compatible = "qcom,sdm660-bimc";
> +        reg = <0x01008000 0x78000>;
> +        #interconnect-cells = <1>;
> +    };
> +
> +    cnoc: interconnect@1500000 {
> +        compatible = "qcom,sdm660-cnoc";
> +        reg = <0x01500000 0x10000>;
> +        #interconnect-cells = <1>;
> +    };
> +
> +    snoc: interconnect@1626000 {
> +        compatible = "qcom,sdm660-snoc";
> +        reg = <0x01626000 0x7090>;
> +        #interconnect-cells = <1>;
> +    };
> +
> +    a2noc: interconnect@1704000 {
> +        compatible = "qcom,sdm660-a2noc";
> +        reg = <0x01704000 0xc100>;
> +        #interconnect-cells = <1>;
> +        clocks = <&rpmcc RPM_SMD_IPA_CLK>,
> +                 <&gcc GCC_UFS_AXI_CLK>,
> +                 <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
> +                 <&gcc GCC_AGGRE2_USB3_AXI_CLK>,
> +                 <&gcc GCC_CFG_NOC_USB2_AXI_CLK>;
> +        clock-names = "ipa",
> +                      "ufs_axi",
> +                      "aggre2_ufs_axi",
> +                      "aggre2_usb3_axi",
> +                      "cfg_noc_usb2_axi";
> +    };

Keep only two examples.

Best regards,
Krzysztof