Commit 2be9e847 authored by Georgi Djakov's avatar Georgi Djakov
Browse files

Merge branch 'icc-sm6350' into icc-next

This series adds interconnect support for the various NoCs found on
sm6350.

A more special modification is allowing child NoC devices, like done for
rpm-based qcm2290 which was already merged, but now for rpmh-based
interconnect.

See also downstream dts:
https://android.googlesource.com/kernel/msm-extra/devicetree/+/refs/tags/android-11.0.0_r0.81/qcom/lagoon-bus.dtsi

Link: https://lore.kernel.org/r/20220525144404.200390-1-luca.weiss@fairphone.com


Signed-off-by: default avatarGeorgi Djakov <djakov@kernel.org>
parents 76a748e2 6a6eff73
Loading
Loading
Loading
Loading
+43 −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,rpmh-common.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm RPMh Network-On-Chip Interconnect

maintainers:
  - Georgi Djakov <djakov@kernel.org>
  - Bjorn Andersson <bjorn.andersson@linaro.org>

description:
  RPMh interconnect providers support system bandwidth requirements through
  RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is
  able to communicate with the BCM through the Resource State Coordinator (RSC)
  associated with each execution environment. Provider nodes must point to at
  least one RPMh device child node pertaining to their RSC and each provider
  can map to multiple RPMh resources.

properties:
  '#interconnect-cells':
    enum: [ 1, 2 ]

  qcom,bcm-voters:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      maxItems: 1
    maxItems: 2
    description:
      List of phandles to qcom,bcm-voter nodes that are required by
      this interconnect to send RPMh commands.

  qcom,bcm-voter-names:
    maxItems: 2
    description:
      Names for each of the qcom,bcm-voters specified.

required:
  - '#interconnect-cells'
  - qcom,bcm-voters

additionalProperties: true
+5 −17
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ description: |
   least one RPMh device child node pertaining to their RSC and each provider
   can map to multiple RPMh resources.

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

properties:
  reg:
    maxItems: 1
@@ -130,28 +133,13 @@ properties:
      - qcom,sm8450-pcie-anoc
      - qcom,sm8450-system-noc

  '#interconnect-cells':
    enum: [ 1, 2 ]

  qcom,bcm-voters:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      maxItems: 1
    description: |
      List of phandles to qcom,bcm-voter nodes that are required by
      this interconnect to send RPMh commands.

  qcom,bcm-voter-names:
    description: |
      Names for each of the qcom,bcm-voters specified.
  '#interconnect-cells': true

required:
  - compatible
  - reg
  - '#interconnect-cells'
  - qcom,bcm-voters

additionalProperties: false
unevaluatedProperties: false

examples:
  - |
+82 −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,sm6350-rpmh.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm SM6350 RPMh Network-On-Chip Interconnect

maintainers:
  - Luca Weiss <luca.weiss@fairphone.com>

description:
  Qualcomm RPMh-based interconnect provider on SM6350.

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

properties:
  compatible:
    enum:
      - qcom,sm6350-aggre1-noc
      - qcom,sm6350-aggre2-noc
      - qcom,sm6350-config-noc
      - qcom,sm6350-dc-noc
      - qcom,sm6350-gem-noc
      - qcom,sm6350-mmss-noc
      - qcom,sm6350-npu-noc
      - qcom,sm6350-system-noc

  reg:
    maxItems: 1

  '#interconnect-cells': true

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,rpmh-common.yaml#

    properties:
      compatible:
        enum:
          - qcom,sm6350-clk-virt
          - qcom,sm6350-compute-noc

      '#interconnect-cells': true

    required:
      - compatible

    unevaluatedProperties: false

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    config_noc: interconnect@1500000 {
        compatible = "qcom,sm6350-config-noc";
        reg = <0x01500000 0x28000>;
        #interconnect-cells = <2>;
        qcom,bcm-voters = <&apps_bcm_voter>;
    };

    system_noc: interconnect@1620000 {
        compatible = "qcom,sm6350-system-noc";
        reg = <0x01620000 0x17080>;
        #interconnect-cells = <2>;
        qcom,bcm-voters = <&apps_bcm_voter>;

        clk_virt: interconnect-clk-virt {
            compatible = "qcom,sm6350-clk-virt";
            #interconnect-cells = <2>;
            qcom,bcm-voters = <&apps_bcm_voter>;
        };
    };
+9 −0
Original line number Diff line number Diff line
@@ -155,6 +155,15 @@ config INTERCONNECT_QCOM_SDX65
	  This is a driver for the Qualcomm Network-on-Chip on sdx65-based
	  platforms.

config INTERCONNECT_QCOM_SM6350
	tristate "Qualcomm SM6350 interconnect driver"
	depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
	select INTERCONNECT_QCOM_RPMH
	select INTERCONNECT_QCOM_BCM_VOTER
	help
	  This is a driver for the Qualcomm Network-on-Chip on sm6350-based
	  platforms.

config INTERCONNECT_QCOM_SM8150
	tristate "Qualcomm SM8150 interconnect driver"
	depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ qnoc-sdm660-objs := sdm660.o
qnoc-sdm845-objs			:= sdm845.o
qnoc-sdx55-objs				:= sdx55.o
qnoc-sdx65-objs				:= sdx65.o
qnoc-sm6350-objs			:= sm6350.o
qnoc-sm8150-objs			:= sm8150.o
qnoc-sm8250-objs			:= sm8250.o
qnoc-sm8350-objs			:= sm8350.o
@@ -40,6 +41,7 @@ obj-$(CONFIG_INTERCONNECT_QCOM_SDM660) += qnoc-sdm660.o
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_SM6350) += qnoc-sm6350.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8150) += qnoc-sm8150.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8250) += qnoc-sm8250.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8350) += qnoc-sm8350.o
Loading