Re: [PATCH 1/2] dt-bindings: interconnect: Update Qualcomm SDM845 DT bindings

From: Stephen Boyd
Date: Wed Jul 24 2019 - 10:18:20 EST


Quoting David Dai (2019-07-23 14:48:42)
> On 7/23/2019 7:42 AM, Stephen Boyd wrote:
> > Quoting David Dai (2019-07-19 13:32:23)
> >> +- compatible : shall contain only one of the following:
> >> + "qcom,sdm845-bcm-voter",
> >> +
> >> +Examples:
> >> +
> >> +apps_rsc: rsc@179c0000 {
> > But there isn't a reg property.
> I'll change this to the generic example with just apps_rsc: rsc {
> >
> >> + label = "apps_rsc";
> > Is label required?

Any answer?

> >
> >> + compatible = "qcom,rpmh-rsc";
> >> +
> >> + apps_bcm_voter: bcm_voter {
> >> + compatible = "qcom,sdm845-bcm-voter";
> >> + };
> >> +}
> >> +
> >> +disp_rsc: rsc@179d0000 {
> >> + label = "disp_rsc";
> >> + compatible = "qcom,rpmh-rsc";
> >> +
> >> + disp_bcm_voter: bcm_voter {
> >> + compatible = "qcom,sdm845-bcm-voter";
> >> + };
> >> +}
> >> diff --git a/Documentation/devicetree/bindings/interconnect/qcom,sdm845.txt b/Documentation/devicetree/bindings/interconnect/qcom,sdm845.txt
> >> index 5c4f1d9..27f9ed9 100644
> >> --- a/Documentation/devicetree/bindings/interconnect/qcom,sdm845.txt
> >> +++ b/Documentation/devicetree/bindings/interconnect/qcom,sdm845.txt
[...]
> >> +
> >> +mem_noc: interconnect@1380000 {
> >> + compatible = "qcom,sdm845-mem_noc";
> >> + reg = <0 0x1380000 0 0x27200>;
> >> + #interconnect-cells = <1>;
> >> + qcom,bcm-voter = <&apps_bcm_voter>, <&disp_bcm_voter>;
> >> +};
> > How does a consumer target a particular RSC? For example, how can
> > display decide to use the disp_bcm_voter node from mem_noc here? Maybe
> > you can add that consumer to the example?
>
> I was thinking that the association between the bcm voters and the icc
> nodes would be handled by the interconnect provider, and that there
> would be a set of display specific icc nodes with their own unique IDs
> that the consumers could reference. I will mention this as part of the
> description and provide an example.
>
> Ex: interconnects = <&mmss_noc MASTER_MDP0_DISP &mem_noc SLAVE_EBI_DISP>;
>

It looks backwards to me. Don't the consumers want to consume a
particular RSC, i.e. apps or display RSC, so they can choose where to
put the bcm vote and then those RSCs want to find MMIO registers for
mmss_noc or mem_noc that they have to write to tune something else like
QoS? If the MMIO space is the provider then I'm lost how it can
differentiate between the RSCs that may be targetting the particular
NoC.

Maybe I've just completely missed something and this is all decided
already. If so, sorry, I'm just trying to understand.