Skip to content

Commit

Permalink
Merge tag 'icc-6.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/…
Browse files Browse the repository at this point in the history
…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: Georgi 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
  ...
  • Loading branch information
Greg Kroah-Hartman committed Oct 27, 2023
2 parents 40ea89f + d4c720a commit 800dce4
Show file tree
Hide file tree
Showing 40 changed files with 1,916 additions and 337 deletions.
74 changes: 74 additions & 0 deletions Documentation/devicetree/bindings/interconnect/qcom,msm8939.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# 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 changes: 126 additions & 0 deletions Documentation/devicetree/bindings/interconnect/qcom,msm8996.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# 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>;
};
60 changes: 8 additions & 52 deletions Documentation/devicetree/bindings/interconnect/qcom,qcm2290.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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]+$':
Expand All @@ -44,42 +34,26 @@ 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:
- qcom,qcm2290-qup-virt
- 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:
- |
Expand All @@ -89,49 +63,31 @@ 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>;
};
};
cnoc: interconnect@1900000 {
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>;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 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
Loading

0 comments on commit 800dce4

Please sign in to comment.