Re: [PATCH RFC 1/2] dt-bindings: interconnect: qcom: add msm8974 bindings

2019-09-04 Thread Bjorn Andersson
On Wed 04 Sep 03:20 PDT 2019, Brian Masney wrote:

> On Tue, Sep 03, 2019 at 10:01:03PM -0700, Bjorn Andersson wrote:
> > On Mon 02 Sep 14:19 PDT 2019, Brian Masney wrote:
> > > +  mmssnoc: interconnect@fc478000 {
> > > +  reg = <0xfc478000 0x4000>;
> > > +  compatible = "qcom,msm8974-mmssnoc";
> > > +  #interconnect-cells = <1>;
> > > +  clock-names = "bus", "bus_a";
> > > +  clocks = < RPM_SMD_MMSSNOC_AHB_CLK>,
> > > +   < RPM_SMD_MMSSNOC_AHB_A_CLK>;
> > 
> > Isn't MMSS_S0_AXI_CLK the bus clock of the mmssnoc (which somehow seems
> > to depend on mmssnoc_ahb_clk)?
> 
> I'll give that a try. Do you know which clock I should use for bus_a
> here? On the mmcc, I see the following mmss clocks available:
> 
> MMSS_AHB_CLK_SRC
> MMSS_AXI_CLK_SRC
> MMSS_RBCPR_CLK_SRC
> MMSS_MISC_AHB_CLK
> MMSS_MMSSNOC_AHB_CLK
> MMSS_MMSSNOC_BTO_AHB_CLK
> MMSS_MMSSNOC_AXI_CLK
> MMSS_S0_AXI_CLK
> 
> I'm also unsure of what's going on at the hardware level that the second
> clock (bus_a) is needed.
> 

In msm-3.4 clock-8974.c both bus and bus_a is defined as
mmss_s0_axi_clk. But iirc I also needed mmssnoc_axi_clk to get DSI
working on my devices, which is listed as .depends of the s0_axi clock.

So that probably needs some more investigation...But easiest would
probably be to just have the mmss_noc use them both listed as bus
clocks?

Regards,
Bjorn

> > > +  mdss: mdss@fd90 {
> > 
> > I think you can omit the client, as this adheres to the standard binding
> > for interconnect clients. And you don't need to have an example that
> > covers all compatibles either...
> 
> OK, I'll drop some of these.
> 
> > > diff --git a/include/dt-bindings/interconnect/qcom,msm8974.h 
> > > b/include/dt-bindings/interconnect/qcom,msm8974.h
> > > new file mode 100644
> > > index ..58acf7196410
> > > --- /dev/null
> > > +++ b/include/dt-bindings/interconnect/qcom,msm8974.h
> > > @@ -0,0 +1,146 @@
> > > +/* SPDX-License-Identifier: GPL-2.0 */
> > 
> > Would you mind dual licensing this part as well?
> 
> Sure, that was an oversight on my part.
> 
> > Apart from that, I think this binding looks good.
> 
> Thanks,
> 
> Brian


Re: [PATCH RFC 1/2] dt-bindings: interconnect: qcom: add msm8974 bindings

2019-09-04 Thread Brian Masney
On Tue, Sep 03, 2019 at 10:01:03PM -0700, Bjorn Andersson wrote:
> On Mon 02 Sep 14:19 PDT 2019, Brian Masney wrote:
> > +  mmssnoc: interconnect@fc478000 {
> > +  reg = <0xfc478000 0x4000>;
> > +  compatible = "qcom,msm8974-mmssnoc";
> > +  #interconnect-cells = <1>;
> > +  clock-names = "bus", "bus_a";
> > +  clocks = < RPM_SMD_MMSSNOC_AHB_CLK>,
> > +   < RPM_SMD_MMSSNOC_AHB_A_CLK>;
> 
> Isn't MMSS_S0_AXI_CLK the bus clock of the mmssnoc (which somehow seems
> to depend on mmssnoc_ahb_clk)?

I'll give that a try. Do you know which clock I should use for bus_a
here? On the mmcc, I see the following mmss clocks available:

MMSS_AHB_CLK_SRC
MMSS_AXI_CLK_SRC
MMSS_RBCPR_CLK_SRC
MMSS_MISC_AHB_CLK
MMSS_MMSSNOC_AHB_CLK
MMSS_MMSSNOC_BTO_AHB_CLK
MMSS_MMSSNOC_AXI_CLK
MMSS_S0_AXI_CLK

I'm also unsure of what's going on at the hardware level that the second
clock (bus_a) is needed.

> > +  mdss: mdss@fd90 {
> 
> I think you can omit the client, as this adheres to the standard binding
> for interconnect clients. And you don't need to have an example that
> covers all compatibles either...

OK, I'll drop some of these.

> > diff --git a/include/dt-bindings/interconnect/qcom,msm8974.h 
> > b/include/dt-bindings/interconnect/qcom,msm8974.h
> > new file mode 100644
> > index ..58acf7196410
> > --- /dev/null
> > +++ b/include/dt-bindings/interconnect/qcom,msm8974.h
> > @@ -0,0 +1,146 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> 
> Would you mind dual licensing this part as well?

Sure, that was an oversight on my part.

> Apart from that, I think this binding looks good.

Thanks,

Brian


Re: [PATCH RFC 1/2] dt-bindings: interconnect: qcom: add msm8974 bindings

2019-09-03 Thread Bjorn Andersson
On Mon 02 Sep 14:19 PDT 2019, Brian Masney wrote:

> Add device tree bindings for the Qualcomm MSM8974 interconnect providers
> that support setting system bandwidth requirements between various
> network-on-chip fabrics.
> 
> Signed-off-by: Brian Masney 
> ---
>  .../bindings/interconnect/qcom,msm8974.yaml   | 163 ++
>  .../dt-bindings/interconnect/qcom,msm8974.h   | 146 
>  2 files changed, 309 insertions(+)
>  create mode 100644 
> Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml
>  create mode 100644 include/dt-bindings/interconnect/qcom,msm8974.h
> 
> diff --git a/Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml 
> b/Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml
> new file mode 100644
> index ..fbf440f5ffe0
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml
> @@ -0,0 +1,163 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/interconnect/qcom,msm8974.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm MSM8974 Network-On-Chip Interconnect
> +
> +maintainers:
> +  - Brian Masney 
> +
> +description: |
> +   The Qualcomm MSM8974 interconnect providers support setting system
> +   bandwidth requirements between various network-on-chip fabrics.
> +
> +properties:
> +  reg:
> +maxItems: 1
> +
> +  compatible:
> +enum:
> +  - qcom,msm8974-bimc
> +  - qcom,msm8974-cnoc
> +  - qcom,msm8974-mmssnoc
> +  - qcom,msm8974-ocmemnoc
> +  - qcom,msm8974-pnoc
> +  - qcom,msm8974-snoc
> +
> +  '#interconnect-cells':
> +const: 1
> +
> +  clock-names:
> +items:
> +  - const: bus
> +  - const: bus_a
> +
> +  clocks:
> +items:
> +  - description: Bus Clock
> +  - description: Bus A Clock
> +
> +required:
> +  - compatible
> +  - reg
> +  - '#interconnect-cells'
> +  - clock-names
> +  - clocks
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +  #include 
> +  #include 
> +  #include 
> +  #include 
> +
> +  bimc: interconnect@fc38 {
> +  reg = <0xfc38 0x6a000>;
> +  compatible = "qcom,msm8974-bimc";
> +  #interconnect-cells = <1>;
> +  clock-names = "bus", "bus_a";
> +  clocks = < RPM_SMD_BIMC_CLK>,
> +   < RPM_SMD_BIMC_A_CLK>;
> +  };
> +
> +  cnoc: interconnect@fc48 {
> +  reg = <0xfc48 0x4000>;
> +  compatible = "qcom,msm8974-cnoc";
> +  #interconnect-cells = <1>;
> +  clock-names = "bus", "bus_a";
> +  clocks = < RPM_SMD_CNOC_CLK>,
> +   < RPM_SMD_CNOC_A_CLK>;
> +  };
> +
> +  mmssnoc: interconnect@fc478000 {
> +  reg = <0xfc478000 0x4000>;
> +  compatible = "qcom,msm8974-mmssnoc";
> +  #interconnect-cells = <1>;
> +  clock-names = "bus", "bus_a";
> +  clocks = < RPM_SMD_MMSSNOC_AHB_CLK>,
> +   < RPM_SMD_MMSSNOC_AHB_A_CLK>;

Isn't MMSS_S0_AXI_CLK the bus clock of the mmssnoc (which somehow seems
to depend on mmssnoc_ahb_clk)?

> +  };
> +
> +  ocmemnoc: interconnect@fc47 {
> +  reg = <0xfc47 0x4000>;
> +  compatible = "qcom,msm8974-ocmemnoc";
> +  #interconnect-cells = <1>;
> +  clock-names = "bus", "bus_a";
> +  clocks = < RPM_SMD_OCMEMGX_CLK>,
> +   < RPM_SMD_OCMEMGX_A_CLK>;
> +  };
> +
> +  pnoc: interconnect@fc468000 {
> +  reg = <0xfc468000 0x4000>;
> +  compatible = "qcom,msm8974-pnoc";
> +  #interconnect-cells = <1>;
> +  clock-names = "bus", "bus_a";
> +  clocks = < RPM_SMD_PNOC_CLK>,
> +   < RPM_SMD_PNOC_A_CLK>;
> +  };
> +
> +  snoc: interconnect@fc46 {
> +  reg = <0xfc46 0x4000>;
> +  compatible = "qcom,msm8974-snoc";
> +  #interconnect-cells = <1>;
> +  clock-names = "bus", "bus_a";
> +  clocks = < RPM_SMD_SNOC_CLK>,
> +   < RPM_SMD_SNOC_A_CLK>;
> +  };
> +
> +  mdss: mdss@fd90 {

I think you can omit the client, as this adheres to the standard binding
for interconnect clients. And you don't need to have an example that
covers all compatibles either...


> +  compatible = "qcom,mdss";
> +  reg = <0xfd90 0x100>, <0xfd924000 0x1000>;
> +  reg-names = "mdss_phys", "vbif_phys";
> +
> +  power-domains = < MDSS_GDSC>;
> +
> +  clocks = < MDSS_AHB_CLK>,
> +   < MDSS_AXI_CLK>,
> +   < MDSS_VSYNC_CLK>;
> +  clock-names = "iface", "bus", "vsync";
> +
> +  interrupts = ;
> +
> +  interrupt-controller;
> +   

[PATCH RFC 1/2] dt-bindings: interconnect: qcom: add msm8974 bindings

2019-09-02 Thread Brian Masney
Add device tree bindings for the Qualcomm MSM8974 interconnect providers
that support setting system bandwidth requirements between various
network-on-chip fabrics.

Signed-off-by: Brian Masney 
---
 .../bindings/interconnect/qcom,msm8974.yaml   | 163 ++
 .../dt-bindings/interconnect/qcom,msm8974.h   | 146 
 2 files changed, 309 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml
 create mode 100644 include/dt-bindings/interconnect/qcom,msm8974.h

diff --git a/Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml 
b/Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml
new file mode 100644
index ..fbf440f5ffe0
--- /dev/null
+++ b/Documentation/devicetree/bindings/interconnect/qcom,msm8974.yaml
@@ -0,0 +1,163 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interconnect/qcom,msm8974.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm MSM8974 Network-On-Chip Interconnect
+
+maintainers:
+  - Brian Masney 
+
+description: |
+   The Qualcomm MSM8974 interconnect providers support setting system
+   bandwidth requirements between various network-on-chip fabrics.
+
+properties:
+  reg:
+maxItems: 1
+
+  compatible:
+enum:
+  - qcom,msm8974-bimc
+  - qcom,msm8974-cnoc
+  - qcom,msm8974-mmssnoc
+  - qcom,msm8974-ocmemnoc
+  - qcom,msm8974-pnoc
+  - qcom,msm8974-snoc
+
+  '#interconnect-cells':
+const: 1
+
+  clock-names:
+items:
+  - const: bus
+  - const: bus_a
+
+  clocks:
+items:
+  - description: Bus Clock
+  - description: Bus A Clock
+
+required:
+  - compatible
+  - reg
+  - '#interconnect-cells'
+  - clock-names
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+  #include 
+  #include 
+  #include 
+  #include 
+
+  bimc: interconnect@fc38 {
+  reg = <0xfc38 0x6a000>;
+  compatible = "qcom,msm8974-bimc";
+  #interconnect-cells = <1>;
+  clock-names = "bus", "bus_a";
+  clocks = < RPM_SMD_BIMC_CLK>,
+   < RPM_SMD_BIMC_A_CLK>;
+  };
+
+  cnoc: interconnect@fc48 {
+  reg = <0xfc48 0x4000>;
+  compatible = "qcom,msm8974-cnoc";
+  #interconnect-cells = <1>;
+  clock-names = "bus", "bus_a";
+  clocks = < RPM_SMD_CNOC_CLK>,
+   < RPM_SMD_CNOC_A_CLK>;
+  };
+
+  mmssnoc: interconnect@fc478000 {
+  reg = <0xfc478000 0x4000>;
+  compatible = "qcom,msm8974-mmssnoc";
+  #interconnect-cells = <1>;
+  clock-names = "bus", "bus_a";
+  clocks = < RPM_SMD_MMSSNOC_AHB_CLK>,
+   < RPM_SMD_MMSSNOC_AHB_A_CLK>;
+  };
+
+  ocmemnoc: interconnect@fc47 {
+  reg = <0xfc47 0x4000>;
+  compatible = "qcom,msm8974-ocmemnoc";
+  #interconnect-cells = <1>;
+  clock-names = "bus", "bus_a";
+  clocks = < RPM_SMD_OCMEMGX_CLK>,
+   < RPM_SMD_OCMEMGX_A_CLK>;
+  };
+
+  pnoc: interconnect@fc468000 {
+  reg = <0xfc468000 0x4000>;
+  compatible = "qcom,msm8974-pnoc";
+  #interconnect-cells = <1>;
+  clock-names = "bus", "bus_a";
+  clocks = < RPM_SMD_PNOC_CLK>,
+   < RPM_SMD_PNOC_A_CLK>;
+  };
+
+  snoc: interconnect@fc46 {
+  reg = <0xfc46 0x4000>;
+  compatible = "qcom,msm8974-snoc";
+  #interconnect-cells = <1>;
+  clock-names = "bus", "bus_a";
+  clocks = < RPM_SMD_SNOC_CLK>,
+   < RPM_SMD_SNOC_A_CLK>;
+  };
+
+  mdss: mdss@fd90 {
+  compatible = "qcom,mdss";
+  reg = <0xfd90 0x100>, <0xfd924000 0x1000>;
+  reg-names = "mdss_phys", "vbif_phys";
+
+  power-domains = < MDSS_GDSC>;
+
+  clocks = < MDSS_AHB_CLK>,
+   < MDSS_AXI_CLK>,
+   < MDSS_VSYNC_CLK>;
+  clock-names = "iface", "bus", "vsync";
+
+  interrupts = ;
+
+  interrupt-controller;
+  #interrupt-cells = <1>;
+
+  #address-cells = <1>;
+  #size-cells = <1>;
+  ranges;
+
+  mdp: mdp@fd90 {
+  compatible = "qcom,mdp5";
+  reg = <0xfd900100 0x22000>;
+  reg-names = "mdp_phys";
+
+  interrupt-parent = <>;
+  interrupts = <0 0>;
+
+  clocks = < MDSS_AHB_CLK>,
+   < MDSS_AXI_CLK>,
+   < MDSS_MDP_CLK>,
+   < MDSS_VSYNC_CLK>;
+