Commit c9de516e authored by Georgi Djakov's avatar Georgi Djakov
Browse files

Merge branch 'icc-sm6115' into icc-next

Add DT bindings and a driver for managing NoC providers on SM6115.

* icc-sm6115
  dt-bindings: interconnect: Add Qualcomm SM6115 NoC
  interconnect: qcom: Add SM6115 interconnect provider driver
  dt-bindings: interconnect: qcom,msm8998-bwmon: Add SM6115 bwmon instance
  interconnect: qcom: sm6115: Fix up includes

Link: https://lore.kernel.org/r/20231125-topic-6115icc-v3-2-bd8907b8cfd7@linaro.org


Signed-off-by: default avatarGeorgi Djakov <djakov@kernel.org>
parents ecd34395 a9a36e4b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ properties:
              - qcom,sc7280-cpu-bwmon
              - qcom,sc8280xp-cpu-bwmon
              - qcom,sdm845-cpu-bwmon
              - qcom,sm6115-cpu-bwmon
              - qcom,sm6350-llcc-bwmon
              - qcom,sm8250-cpu-bwmon
              - qcom,sm8550-cpu-bwmon
+152 −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,sm6115.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm SM6115 Network-On-Chip interconnect

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

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

properties:
  compatible:
    enum:
      - qcom,sm6115-bimc
      - qcom,sm6115-cnoc
      - qcom,sm6115-snoc

  reg:
    maxItems: 1

  clocks:
    minItems: 1
    maxItems: 4

  clock-names:
    minItems: 1
    maxItems: 4

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

    $ref: qcom,rpm-common.yaml#

    properties:
      compatible:
        enum:
          - qcom,sm6115-clk-virt
          - qcom,sm6115-mmrt-virt
          - qcom,sm6115-mmnrt-virt

    required:
      - compatible

    unevaluatedProperties: false

required:
  - compatible
  - reg

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

    then:
      properties:
        clocks:
          items:
            - description: USB-NoC AXI clock

        clock-names:
          items:
            - const: usb_axi

  - if:
      properties:
        compatible:
          const: qcom,sm6115-snoc

    then:
      properties:
        clocks:
          items:
            - description: CPU-NoC AXI clock.
            - description: UFS-NoC AXI clock.
            - description: USB-NoC AXI clock.
            - description: IPA clock.

        clock-names:
          items:
            - const: cpu_axi
            - const: ufs_axi
            - const: usb_axi
            - const: ipa

  - if:
      properties:
        compatible:
          enum:
            - qcom,sm6115-bimc
            - qcom,sm6115-clk-virt
            - qcom,sm6115-mmrt-virt
            - qcom,sm6115-mmnrt-virt

    then:
      properties:
        clocks: false
        clock-names: false

unevaluatedProperties: false

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

    snoc: interconnect@1880000 {
        compatible = "qcom,sm6115-snoc";
        reg = <0x01880000 0x60200>;
        clocks = <&gcc GCC_SYS_NOC_CPUSS_AHB_CLK>,
                 <&gcc GCC_SYS_NOC_UFS_PHY_AXI_CLK>,
                 <&gcc GCC_SYS_NOC_USB3_PRIM_AXI_CLK>,
                 <&rpmcc RPM_SMD_IPA_CLK>;
        clock-names = "cpu_axi",
                      "ufs_axi",
                      "usb_axi",
                      "ipa";
        #interconnect-cells = <1>;

        qup_virt: interconnect-clk {
            compatible = "qcom,sm6115-clk-virt";
            #interconnect-cells = <1>;
        };

        mmnrt_virt: interconnect-mmnrt {
            compatible = "qcom,sm6115-mmnrt-virt";
            #interconnect-cells = <1>;
        };

        mmrt_virt: interconnect-mmrt {
            compatible = "qcom,sm6115-mmrt-virt";
            #interconnect-cells = <1>;
        };
    };

    cnoc: interconnect@1900000 {
        compatible = "qcom,sm6115-cnoc";
        reg = <0x01900000 0x8200>;
        #interconnect-cells = <1>;
    };
+9 −0
Original line number Diff line number Diff line
@@ -191,6 +191,15 @@ config INTERCONNECT_QCOM_SDX75
	  This is a driver for the Qualcomm Network-on-Chip on sdx75-based
	  platforms.

config INTERCONNECT_QCOM_SM6115
	tristate "Qualcomm SM6115 interconnect driver"
	depends on INTERCONNECT_QCOM
	depends on QCOM_SMD_RPM
	select INTERCONNECT_QCOM_SMD_RPM
	help
	  This is a driver for the Qualcomm Network-on-Chip on sm6115-based
	  platforms.

config INTERCONNECT_QCOM_SM6350
	tristate "Qualcomm SM6350 interconnect driver"
	depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ qnoc-sdm845-objs := sdm845.o
qnoc-sdx55-objs				:= sdx55.o
qnoc-sdx65-objs				:= sdx65.o
qnoc-sdx75-objs				:= sdx75.o
qnoc-sm6115-objs			:= sm6115.o
qnoc-sm6350-objs			:= sm6350.o
qnoc-sm8150-objs			:= sm8150.o
qnoc-sm8250-objs			:= sm8250.o
@@ -55,6 +56,7 @@ obj-$(CONFIG_INTERCONNECT_QCOM_SDM845) += qnoc-sdm845.o
obj-$(CONFIG_INTERCONNECT_QCOM_SDX55) += qnoc-sdx55.o
obj-$(CONFIG_INTERCONNECT_QCOM_SDX65) += qnoc-sdx65.o
obj-$(CONFIG_INTERCONNECT_QCOM_SDX75) += qnoc-sdx75.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM6115) += qnoc-sm6115.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM6350) += qnoc-sm6350.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8150) += qnoc-sm8150.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8250) += qnoc-sm8250.o
+1423 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading