Commit 800dce42 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'icc-6.7-rc1' of...

Merge tag 'icc-6.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc

 into char-misc-next

Georgi writes:

interconnect changes for 6.7

This pull request contains the interconnect changes for the 6.7-rc1 merge
window which contains just driver changes with the following highlights:

Driver changes:
- New interconnect driver for the SDX75 platform.
- Support for coefficients to allow node-specific rate adjustments.
- Update DT bindings according to the recent changes of how we
  represent the SMD and RPM bus clocks on Qualcomm platforms.
- Misc fixes and cleanups.

Signed-off-by: default avatarGeorgi Djakov <djakov@kernel.org>

* tag 'icc-6.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc: (36 commits)
  interconnect: qcom: Convert to platform remove callback returning void
  dt-bindings: interconnect: qcom,rpmh: do not require reg on SDX65 MC virt
  interconnect: imx: Replace inclusion of kernel.h in the header
  interconnect: fix error handling in qnoc_probe()
  interconnect: qcom: osm-l3: Replace custom implementation of COUNT_ARGS()
  interconnect: msm8974: Replace custom implementation of COUNT_ARGS()
  interconnect: imx: Replace custom implementation of COUNT_ARGS()
  interconnect: qcom: Add SDX75 interconnect provider driver
  dt-bindings: interconnect: Add compatibles for SDX75
  interconnect: qcom: sm8350: Set ACV enable_mask
  interconnect: qcom: sm8250: Set ACV enable_mask
  interconnect: qcom: sm8150: Set ACV enable_mask
  interconnect: qcom: sm6350: Set ACV enable_mask
  interconnect: qcom: sdm845: Set ACV enable_mask
  interconnect: qcom: sdm670: Set ACV enable_mask
  interconnect: qcom: sc8280xp: Set ACV enable_mask
  interconnect: qcom: sc8180x: Set ACV enable_mask
  interconnect: qcom: sc7280: Set ACV enable_mask
  interconnect: qcom: sc7180: Set ACV enable_mask
  interconnect: qcom: qdu1000: Set ACV enable_mask
  ...
parents 40ea89fb d4c720a1
Loading
Loading
Loading
Loading
+74 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,msm8939.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm MSM8939 Network-On-Chip interconnect

maintainers:
  - Konrad Dybcio <konradybcio@kernel.org>

description: |
  The Qualcomm MSM8939 interconnect providers support adjusting the
  bandwidth requirements between the various NoC fabrics.

allOf:
  - $ref: qcom,rpm-common.yaml#

properties:
  compatible:
    enum:
      - qcom,msm8939-bimc
      - qcom,msm8939-pcnoc
      - qcom,msm8939-snoc

  reg:
    maxItems: 1

patternProperties:
  '^interconnect-[a-z0-9\-]+$':
    type: object
    $ref: qcom,rpm-common.yaml#
    description:
      The interconnect providers do not have a separate QoS register space,
      but share parent's space.

    allOf:
      - $ref: qcom,rpm-common.yaml#

    properties:
      compatible:
        const: qcom,msm8939-snoc-mm

    required:
      - compatible

    unevaluatedProperties: false

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/qcom,rpmcc.h>

    snoc: interconnect@580000 {
        compatible = "qcom,msm8939-snoc";
        reg = <0x00580000 0x14000>;
        #interconnect-cells = <1>;
    };

    bimc: interconnect@400000 {
        compatible = "qcom,msm8939-bimc";
        reg = <0x00400000 0x62000>;
        #interconnect-cells = <1>;

          snoc_mm: interconnect-snoc {
              compatible = "qcom,msm8939-snoc-mm";
              #interconnect-cells = <1>;
          };
    };
+126 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,msm8996.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm MSM8996 Network-On-Chip interconnect

maintainers:
  - Konrad Dybcio <konradybcio@kernel.org>

description: |
  The Qualcomm MSM8996 interconnect providers support adjusting the
  bandwidth requirements between the various NoC fabrics.

properties:
  compatible:
    enum:
      - qcom,msm8996-a0noc
      - qcom,msm8996-a1noc
      - qcom,msm8996-a2noc
      - qcom,msm8996-bimc
      - qcom,msm8996-cnoc
      - qcom,msm8996-mnoc
      - qcom,msm8996-pnoc
      - qcom,msm8996-snoc

  reg:
    maxItems: 1

  clock-names:
    minItems: 1
    maxItems: 3

  clocks:
    minItems: 1
    maxItems: 3

  power-domains:
    maxItems: 1

required:
  - compatible
  - reg

unevaluatedProperties: false

allOf:
  - $ref: qcom,rpm-common.yaml#
  - if:
      properties:
        compatible:
          const: qcom,msm8996-a0noc

    then:
      properties:
        clocks:
          items:
            - description: Aggregate0 System NoC AXI Clock.
            - description: Aggregate0 Config NoC AHB Clock.
            - description: Aggregate0 NoC MPU Clock.

        clock-names:
          items:
            - const: aggre0_snoc_axi
            - const: aggre0_cnoc_ahb
            - const: aggre0_noc_mpu_cfg

      required:
        - power-domains

  - if:
      properties:
        compatible:
          const: qcom,msm8996-mnoc

    then:
      properties:
        clocks:
          items:
            - description: CPU-NoC High-performance Bus Clock.

        clock-names:
          const: iface

  - if:
      properties:
        compatible:
          const: qcom,msm8996-a2noc

    then:
      properties:
        clocks:
          items:
            - description: Aggregate2 NoC UFS AXI Clock
            - description: UFS AXI Clock

        clock-names:
          items:
            - const: aggre2_ufs_axi
            - const: ufs_axi

examples:
  - |
    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
    #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
    #include <dt-bindings/clock/qcom,rpmcc.h>

    bimc: interconnect@408000 {
        compatible = "qcom,msm8996-bimc";
        reg = <0x00408000 0x5a000>;
        #interconnect-cells = <1>;
    };

    a0noc: interconnect@543000 {
        compatible = "qcom,msm8996-a0noc";
        reg = <0x00543000 0x6000>;
        #interconnect-cells = <1>;
        clocks = <&gcc GCC_AGGRE0_SNOC_AXI_CLK>,
                 <&gcc GCC_AGGRE0_CNOC_AHB_CLK>,
                 <&gcc GCC_AGGRE0_NOC_MPU_CFG_AHB_CLK>;
        clock-names = "aggre0_snoc_axi",
                      "aggre0_cnoc_ahb",
                      "aggre0_noc_mpu_cfg";
        power-domains = <&gcc AGGRE0_NOC_GDSC>;
    };
+8 −52
Original line number Diff line number Diff line
@@ -13,6 +13,9 @@ description: |
  The Qualcomm QCM2290 interconnect providers support adjusting the
  bandwidth requirements between the various NoC fabrics.

allOf:
  - $ref: qcom,rpm-common.yaml#

properties:
  reg:
    maxItems: 1
@@ -23,19 +26,6 @@ properties:
      - qcom,qcm2290-cnoc
      - qcom,qcm2290-snoc

  '#interconnect-cells':
    const: 1

  clock-names:
    items:
      - const: bus
      - const: bus_a

  clocks:
    items:
      - description: Bus Clock
      - description: Bus A Clock

# Child node's properties
patternProperties:
  '^interconnect-[a-z0-9]+$':
@@ -44,6 +34,9 @@ patternProperties:
      The interconnect providers do not have a separate QoS register space,
      but share parent's space.

    allOf:
      - $ref: qcom,rpm-common.yaml#

    properties:
      compatible:
        enum:
@@ -51,35 +44,16 @@ patternProperties:
          - qcom,qcm2290-mmrt-virt
          - qcom,qcm2290-mmnrt-virt

      '#interconnect-cells':
        const: 1

      clock-names:
        items:
          - const: bus
          - const: bus_a

      clocks:
        items:
          - description: Bus Clock
          - description: Bus A Clock

    required:
      - compatible
      - '#interconnect-cells'
      - clock-names
      - clocks

    additionalProperties: false
    unevaluatedProperties: false

required:
  - compatible
  - reg
  - '#interconnect-cells'
  - clock-names
  - clocks

additionalProperties: false
unevaluatedProperties: false

examples:
  - |
@@ -89,32 +63,20 @@ examples:
        compatible = "qcom,qcm2290-snoc";
        reg = <0x01880000 0x60200>;
        #interconnect-cells = <1>;
        clock-names = "bus", "bus_a";
        clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
                 <&rpmcc RPM_SMD_SNOC_A_CLK>;

        qup_virt: interconnect-qup {
            compatible = "qcom,qcm2290-qup-virt";
            #interconnect-cells = <1>;
            clock-names = "bus", "bus_a";
            clocks = <&rpmcc RPM_SMD_QUP_CLK>,
                     <&rpmcc RPM_SMD_QUP_A_CLK>;
        };

        mmnrt_virt: interconnect-mmnrt {
            compatible = "qcom,qcm2290-mmnrt-virt";
            #interconnect-cells = <1>;
            clock-names = "bus", "bus_a";
            clocks = <&rpmcc RPM_SMD_MMNRT_CLK>,
                     <&rpmcc RPM_SMD_MMNRT_A_CLK>;
        };

        mmrt_virt: interconnect-mmrt {
            compatible = "qcom,qcm2290-mmrt-virt";
            #interconnect-cells = <1>;
            clock-names = "bus", "bus_a";
            clocks = <&rpmcc RPM_SMD_MMRT_CLK>,
                     <&rpmcc RPM_SMD_MMRT_A_CLK>;
        };
    };

@@ -122,16 +84,10 @@ examples:
        compatible = "qcom,qcm2290-cnoc";
        reg = <0x01900000 0x8200>;
        #interconnect-cells = <1>;
        clock-names = "bus", "bus_a";
        clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
                 <&rpmcc RPM_SMD_CNOC_A_CLK>;
    };

    bimc: interconnect@4480000 {
        compatible = "qcom,qcm2290-bimc";
        reg = <0x04480000 0x80000>;
        #interconnect-cells = <1>;
        clock-names = "bus", "bus_a";
        clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
                 <&rpmcc RPM_SMD_BIMC_A_CLK>;
    };
+28 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,rpm-common.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm RPMh Network-On-Chip Interconnect

maintainers:
  - Konrad Dybcio <konradybcio@kernel.org>

description:
  RPM interconnect providers support for managing system bandwidth requirements
  through manual requests based on either predefined values or as indicated by
  the bus monitor hardware. Each provider node represents a NoC bus master,
  driven by a dedicated clock source.

properties:
  '#interconnect-cells':
    oneOf:
      - const: 2
      - const: 1
        deprecated: true

required:
  - '#interconnect-cells'

additionalProperties: true
+8 −242
Original line number Diff line number Diff line
@@ -7,13 +7,16 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm RPM Network-On-Chip Interconnect

maintainers:
  - Georgi Djakov <georgi.djakov@linaro.org>
  - Georgi Djakov <djakov@kernel.org>

description: |
  RPM interconnect providers support system bandwidth requirements through
  RPM processor. The provider is able to communicate with the RPM through
  the RPM shared memory device.

allOf:
  - $ref: qcom,rpm-common.yaml#

properties:
  reg:
    maxItems: 1
@@ -23,231 +26,15 @@ properties:
      - qcom,msm8916-bimc
      - qcom,msm8916-pcnoc
      - qcom,msm8916-snoc
      - qcom,msm8939-bimc
      - qcom,msm8939-pcnoc
      - qcom,msm8939-snoc
      - qcom,msm8996-a0noc
      - qcom,msm8996-a1noc
      - qcom,msm8996-a2noc
      - qcom,msm8996-bimc
      - qcom,msm8996-cnoc
      - qcom,msm8996-mnoc
      - qcom,msm8996-pnoc
      - qcom,msm8996-snoc
      - qcom,qcs404-bimc
      - qcom,qcs404-pcnoc
      - qcom,qcs404-snoc
      - qcom,sdm660-a2noc
      - qcom,sdm660-bimc
      - qcom,sdm660-cnoc
      - qcom,sdm660-gnoc
      - qcom,sdm660-mnoc
      - qcom,sdm660-snoc

  '#interconnect-cells':
    description: |
      Value: <1> is one cell in an interconnect specifier for the
      interconnect node id, <2> requires the interconnect node id and an
      extra path tag.
    enum: [ 1, 2 ]

  clocks:
    minItems: 2
    maxItems: 7

  clock-names:
    minItems: 2
    maxItems: 7

  power-domains:
    maxItems: 1

# Child node's properties
patternProperties:
  '^interconnect-[a-z0-9]+$':
    type: object
    additionalProperties: false
    description:
      snoc-mm is a child of snoc, sharing snoc's register address space.

    properties:
      compatible:
        enum:
          - qcom,msm8939-snoc-mm

      '#interconnect-cells':
        const: 1

      clock-names:
        items:
          - const: bus
          - const: bus_a

      clocks:
        items:
          - description: Bus Clock
          - description: Bus A Clock

    required:
      - compatible
      - '#interconnect-cells'
      - clock-names
      - clocks

required:
  - compatible
  - reg
  - '#interconnect-cells'
  - clock-names
  - clocks

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8916-bimc
              - qcom,msm8916-pcnoc
              - qcom,msm8916-snoc
              - qcom,msm8939-bimc
              - qcom,msm8939-pcnoc
              - qcom,msm8939-snoc
              - qcom,msm8996-a1noc
              - qcom,msm8996-bimc
              - qcom,msm8996-cnoc
              - qcom,msm8996-pnoc
              - qcom,msm8996-snoc
              - qcom,qcs404-bimc
              - qcom,qcs404-pcnoc
              - qcom,qcs404-snoc
              - qcom,sdm660-bimc
              - qcom,sdm660-cnoc
              - qcom,sdm660-gnoc
              - qcom,sdm660-snoc

    then:
      properties:
        clock-names:
          items:
            - const: bus
            - const: bus_a

        clocks:
          items:
            - description: Bus Clock
            - description: Bus A Clock

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8996-mnoc
              - qcom,sdm660-mnoc

    then:
      properties:
        clock-names:
          items:
            - const: bus
            - const: bus_a
            - const: iface

        clocks:
          items:
            - description: Bus Clock.
            - description: Bus A Clock.
            - description: CPU-NoC High-performance Bus Clock.

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8996-a0noc

    then:
      properties:
        clock-names:
          items:
            - const: aggre0_snoc_axi
            - const: aggre0_cnoc_ahb
            - const: aggre0_noc_mpu_cfg

        clocks:
          items:
            - description: Aggregate0 System NoC AXI Clock.
            - description: Aggregate0 Config NoC AHB Clock.
            - description: Aggregate0 NoC MPU Clock.

      required:
        - power-domains

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8996-a2noc

    then:
      properties:
        clock-names:
          items:
            - const: bus
            - const: bus_a
            - const: aggre2_ufs_axi
            - const: ufs_axi

        clocks:
          items:
            - description: Bus Clock
            - description: Bus A Clock
            - description: Aggregate2 NoC UFS AXI Clock
            - description: UFS AXI Clock

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sdm660-a2noc

    then:
      properties:
        clock-names:
          items:
            - const: bus
            - const: bus_a
            - const: ipa
            - const: ufs_axi
            - const: aggre2_ufs_axi
            - const: aggre2_usb3_axi
            - const: cfg_noc_usb2_axi

        clocks:
          items:
            - description: Bus Clock.
            - description: Bus A Clock.
            - description: IPA Clock.
            - description: UFS AXI Clock.
            - description: Aggregate2 UFS AXI Clock.
            - description: Aggregate2 USB3 AXI Clock.
            - description: Config NoC USB2 AXI Clock.

  - if:
      not:
        properties:
          compatible:
            contains:
              enum:
                - qcom,msm8939-snoc
    then:
      patternProperties:
        '^interconnect-[a-z0-9]+$': false
unevaluatedProperties: false

examples:
  - |
@@ -257,25 +44,4 @@ examples:
          compatible = "qcom,msm8916-bimc";
          reg = <0x00400000 0x62000>;
          #interconnect-cells = <1>;
              clock-names = "bus", "bus_a";
              clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
                       <&rpmcc RPM_SMD_BIMC_A_CLK>;
      };

      pcnoc: interconnect@500000 {
              compatible = "qcom,msm8916-pcnoc";
              reg = <0x00500000 0x11000>;
              #interconnect-cells = <1>;
              clock-names = "bus", "bus_a";
              clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
                       <&rpmcc RPM_SMD_PCNOC_A_CLK>;
      };

      snoc: interconnect@580000 {
              compatible = "qcom,msm8916-snoc";
              reg = <0x00580000 0x14000>;
              #interconnect-cells = <1>;
              clock-names = "bus", "bus_a";
              clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
                       <&rpmcc RPM_SMD_SNOC_A_CLK>;
      };
Loading