162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/interconnect/qcom,bcm-voter.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Qualcomm BCM-Voter Interconnect
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Georgi Djakov <georgi.djakov@linaro.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The Bus Clock Manager (BCM) is a dedicated hardware accelerator that manages
1462306a36Sopenharmony_ci  shared system resources by aggregating requests from multiple Resource State
1562306a36Sopenharmony_ci  Coordinators (RSC). Interconnect providers are able to vote for aggregated
1662306a36Sopenharmony_ci  thresholds values from consumers by communicating through their respective
1762306a36Sopenharmony_ci  RSCs.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    enum:
2262306a36Sopenharmony_ci      - qcom,bcm-voter
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  qcom,tcs-wait:
2562306a36Sopenharmony_ci    description: |
2662306a36Sopenharmony_ci      Optional mask of which TCSs (Triggered Command Sets) wait for completion
2762306a36Sopenharmony_ci      upon triggering. If not specified, then the AMC and WAKE sets wait for
2862306a36Sopenharmony_ci      completion. The mask bits are available in the QCOM_ICC_TAG_* defines.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci      The AMC TCS is triggered immediately when icc_set_bw() is called. The
3162306a36Sopenharmony_ci      WAKE/SLEEP TCSs are triggered when the RSC transitions between active and
3262306a36Sopenharmony_ci      sleep modes.
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci      In most cases, it's necessary to wait in both the AMC and WAKE sets to
3562306a36Sopenharmony_ci      ensure resources are available before use. If a specific RSC and its use
3662306a36Sopenharmony_ci      cases can ensure sufficient delay by other means, then this can be
3762306a36Sopenharmony_ci      overridden to reduce latencies.
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cirequired:
4262306a36Sopenharmony_ci  - compatible
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciadditionalProperties: false
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciexamples:
4762306a36Sopenharmony_ci  # Example 1: apps bcm_voter on SDM845 SoC should be defined inside &apps_rsc node
4862306a36Sopenharmony_ci  # as defined in Documentation/devicetree/bindings/soc/qcom/qcom,rpmh-rsc.yaml
4962306a36Sopenharmony_ci  - |
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci    apps_bcm_voter: bcm-voter {
5262306a36Sopenharmony_ci        compatible = "qcom,bcm-voter";
5362306a36Sopenharmony_ci    };
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  # Example 2: disp bcm_voter on SDM845 should be defined inside &disp_rsc node
5662306a36Sopenharmony_ci  # as defined in Documentation/devicetree/bindings/soc/qcom/qcom,rpmh-rsc.yaml
5762306a36Sopenharmony_ci  - |
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci    #include <dt-bindings/interconnect/qcom,icc.h>
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci    disp_bcm_voter: bcm-voter {
6262306a36Sopenharmony_ci        compatible = "qcom,bcm-voter";
6362306a36Sopenharmony_ci        qcom,tcs-wait = <QCOM_ICC_TAG_AMC>;
6462306a36Sopenharmony_ci    };
6562306a36Sopenharmony_ci...
66