Commit 5a5470dd authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

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

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

 into char-misc-next

Georgi writes:

interconnect changes for 6.13

This pull request contains the interconnect changes for the 6.13-rc1 merge
window. It contains new drivers and clean-ups with the following highlights:

Core changes:
- Remove a useless kfree_const() usage
- Switch back to struct platform_driver::remove()
- Use of_property_present() for non-boolean properties

Driver changes:
- New driver for QCS615 platforms
- New driver for SAR2130P platforms
- New driver for QCS8300 platforms
- Probe defer incase of missing QoS clock dependency in rpmh driver
- Rename qos_clks_required flag to qos_requires_clocks in rpmh driver
- Constify pointers to qcom_icc_node in msm8937 driver

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

* tag 'icc-6.13-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc:
  interconnect: Use of_property_present() for non-boolean properties
  dt-bindings: interconnect: qcom-bwmon: Document QCS8300 bwmon compatibles
  interconnect: qcom: add QCS8300 interconnect provider driver
  interconnect: Switch back to struct platform_driver::remove()
  interconnect: qcom: add support for SAR2130P
  dt-bindings: interconnect: qcom: document SAR2130P NoC
  interconnect: qcom: add QCS615 interconnect provider driver
  dt-bindings: interconnect: document the RPMh Network-On-Chip interconnect in QCS615 SoC
  dt-bindings: interconnect: document the RPMh Network-On-Chip interconnect in QCS8300 SoC
  interconnect: Remove a useless kfree_const() usage
  interconnect: qcom: msm8937: constify pointer to qcom_icc_node
  interconnect: qcom: icc-rpmh: rename qos_clks_required flag
  interconnect: qcom: icc-rpmh: probe defer incase of missing QoS clock dependency
parents ab5bcaf1 b1fd28da
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ properties:
      - items:
          - enum:
              - qcom,qcm2290-cpu-bwmon
              - qcom,qcs8300-cpu-bwmon
              - qcom,sa8775p-cpu-bwmon
              - qcom,sc7180-cpu-bwmon
              - qcom,sc7280-cpu-bwmon
@@ -40,6 +41,7 @@ properties:
          - const: qcom,sdm845-bwmon    # BWMON v4, unified register space
      - items:
          - enum:
              - qcom,qcs8300-llcc-bwmon
              - qcom,sa8775p-llcc-bwmon
              - qcom,sc7180-llcc-bwmon
              - qcom,sc8280xp-llcc-bwmon
+73 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,qcs615-rpmh.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm RPMh Network-On-Chip Interconnect on QCS615

maintainers:
  - Raviteja Laggyshetty <quic_rlaggysh@quicinc.com>

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.

  See also: include/dt-bindings/interconnect/qcom,qcs615-rpmh.h

properties:
  compatible:
    enum:
      - qcom,qcs615-aggre1-noc
      - qcom,qcs615-camnoc-virt
      - qcom,qcs615-config-noc
      - qcom,qcs615-dc-noc
      - qcom,qcs615-gem-noc
      - qcom,qcs615-ipa-virt
      - qcom,qcs615-mc-virt
      - qcom,qcs615-mmss-noc
      - qcom,qcs615-system-noc

  reg:
    maxItems: 1

required:
  - compatible

allOf:
  - $ref: qcom,rpmh-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,qcs615-camnoc-virt
              - qcom,qcs615-ipa-virt
              - qcom,qcs615-mc-virt
    then:
      properties:
        reg: false
    else:
      required:
        - reg

unevaluatedProperties: false

examples:
  - |
    gem_noc: interconnect@9680000 {
        compatible = "qcom,qcs615-gem-noc";
        reg = <0x9680000 0x3e200>;
        #interconnect-cells = <2>;
        qcom,bcm-voters = <&apps_bcm_voter>;
    };

    mc_virt: interconnect-2 {
        compatible = "qcom,qcs615-mc-virt";
        #interconnect-cells = <2>;
        qcom,bcm-voters = <&apps_bcm_voter>;
    };
+72 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,qcs8300-rpmh.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm RPMh Network-On-Chip Interconnect on QCS8300

maintainers:
  - Raviteja Laggyshetty <quic_rlaggysh@quicinc.com>

description: |
  RPMh interconnect providers support system bandwidth requirements through
  RPMh hardware accelerators known as Bus Clock Manager (BCM).

  See also: include/dt-bindings/interconnect/qcom,qcs8300-rpmh.h

properties:
  compatible:
    enum:
      - qcom,qcs8300-aggre1-noc
      - qcom,qcs8300-aggre2-noc
      - qcom,qcs8300-clk-virt
      - qcom,qcs8300-config-noc
      - qcom,qcs8300-dc-noc
      - qcom,qcs8300-gem-noc
      - qcom,qcs8300-gpdsp-anoc
      - qcom,qcs8300-lpass-ag-noc
      - qcom,qcs8300-mc-virt
      - qcom,qcs8300-mmss-noc
      - qcom,qcs8300-nspa-noc
      - qcom,qcs8300-pcie-anoc
      - qcom,qcs8300-system-noc

  reg:
    maxItems: 1

required:
  - compatible

allOf:
  - $ref: qcom,rpmh-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,qcs8300-clk-virt
              - qcom,qcs8300-mc-virt
    then:
      properties:
        reg: false
    else:
      required:
        - reg

unevaluatedProperties: false

examples:
  - |
    gem_noc: interconnect@9100000 {
        compatible = "qcom,qcs8300-gem-noc";
        reg = <0x9100000 0xf7080>;
        #interconnect-cells = <2>;
        qcom,bcm-voters = <&apps_bcm_voter>;
    };

    clk_virt: interconnect-0 {
        compatible = "qcom,qcs8300-clk-virt";
        #interconnect-cells = <2>;
        qcom,bcm-voters = <&apps_bcm_voter>;
    };
+117 −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,sar2130p-rpmh.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm RPMh Network-On-Chip Interconnect on SAR2130P

maintainers:
  - Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  - Georgi Djakov <djakov@kernel.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.

  See also:: include/dt-bindings/interconnect/qcom,sar2130p-rpmh.h

properties:
  compatible:
    enum:
      - qcom,sar2130p-clk-virt
      - qcom,sar2130p-config-noc
      - qcom,sar2130p-gem-noc
      - qcom,sar2130p-lpass-ag-noc
      - qcom,sar2130p-mc-virt
      - qcom,sar2130p-mmss-noc
      - qcom,sar2130p-nsp-noc
      - qcom,sar2130p-pcie-anoc
      - qcom,sar2130p-system-noc

  reg:
    maxItems: 1

  clocks:
    minItems: 1
    maxItems: 2

required:
  - compatible

allOf:
  - $ref: qcom,rpmh-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sar2130p-clk-virt
              - qcom,sar2130p-mc-virt
    then:
      properties:
        reg: false
    else:
      required:
        - reg

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sar2130p-pcie-anoc
    then:
      properties:
        clocks:
          items:
            - description: aggre-NOC PCIe AXI clock
            - description: cfg-NOC PCIe a-NOC AHB clock

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sar2130p-system-noc
    then:
      properties:
        clocks:
          items:
            - description: aggre USB3 PRIM AXI clock

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sar2130p-system-noc
              - qcom,sar2130p-pcie-anoc
    then:
      required:
        - clocks
    else:
      properties:
        clocks: false

unevaluatedProperties: false

examples:
  - |
    clk_virt: interconnect-0 {
      compatible = "qcom,sar2130p-clk-virt";
      #interconnect-cells = <2>;
      qcom,bcm-voters = <&apps_bcm_voter>;
    };

    aggre1_noc: interconnect@1680000 {
      compatible = "qcom,sar2130p-system-noc";
      reg = <0x01680000 0x29080>;
      #interconnect-cells = <2>;
      clocks = <&gcc_prim_axi_clk>;
      qcom,bcm-voters = <&apps_bcm_voter>;
    };
+2 −2
Original line number Diff line number Diff line
@@ -808,7 +808,7 @@ void icc_put(struct icc_path *path)
	mutex_unlock(&icc_bw_lock);
	mutex_unlock(&icc_lock);

	kfree_const(path->name);
	kfree(path->name);
	kfree(path);
}
EXPORT_SYMBOL_GPL(icc_put);
@@ -1081,7 +1081,7 @@ static int of_count_icc_providers(struct device_node *np)
	int count = 0;

	for_each_available_child_of_node(np, child) {
		if (of_property_read_bool(child, "#interconnect-cells") &&
		if (of_property_present(child, "#interconnect-cells") &&
		    likely(!of_match_node(ignore_list, child)))
			count++;
		count += of_count_icc_providers(child);
Loading