Re: [PATCH v3 1/2] dt-bindings: interconnect: qcom: add msm8660 NoC

From: Dmitry Baryshkov

Date: Sun Jun 07 2026 - 07:11:38 EST


On Sat, Jun 06, 2026 at 04:32:21PM +0200, me@xxxxxxxxxx wrote:
> On 2026-06-06 15:23, Dmitry Baryshkov wrote:
> > On Sat, Jun 06, 2026 at 02:34:50PM +0200, Herman van Hazendonk wrote:
> > > Add a dt-binding schema and an interconnect master/slave ID header for
> > > the MSM8x60 family (MSM8260/MSM8660/APQ8060) Network-on-Chip. The
> > > chip exposes four NoC fabrics that the qnoc-msm8660 driver models:
> > >
> > > AFAB - Applications fabric (Scorpion CPU + L2)
> > > SFAB - System fabric (DMA, SPS, security)
> > > MMFAB - Multimedia fabric (MDP, GPU, camera, video, rotator)
> > > DFAB - Daytona fabric (SDC, ADM master/slave)
> > >
> > > The schema covers all four compatible strings, per-fabric clock-name
> > > lists (bus / bus_a / ebi1 / ebi1_a for AFAB; bus / bus_a / smi /
> > > smi_a for MMFAB; bus / bus_a for SFAB and DFAB), the required
> > > qcom,rpm phandle through which the provider hands the arbitration
> > > buffer to RPM firmware, and #interconnect-cells = <1>.
> > >
> > > The ID header lists per-fabric master / slave / gateway indices
> > > derived from the legacy vendor msm_bus_board_8660.c enums,
> > > normalised to the upstream interconnect-framework naming convention.
> > >
> > > Assisted-by: Claude:claude-opus-4-7 Sashiko:claude-haiku-4-5
> > > Signed-off-by: Herman van Hazendonk <github.com@xxxxxxxxxx>
> > > ---
> > > .../bindings/interconnect/qcom,msm8660.yaml | 166
> > > +++++++++++++++++++++
> > > include/dt-bindings/interconnect/qcom,msm8660.h | 156
> > > +++++++++++++++++++
> > > 2 files changed, 322 insertions(+)
> > >
> > > diff --git
> > > a/Documentation/devicetree/bindings/interconnect/qcom,msm8660.yaml
> > > b/Documentation/devicetree/bindings/interconnect/qcom,msm8660.yaml
> > > new file mode 100644
> > > index 000000000000..ff28c7d46c32
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/interconnect/qcom,msm8660.yaml
> > > @@ -0,0 +1,166 @@
> > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/interconnect/qcom,msm8660.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Qualcomm MSM8x60 family Network-On-Chip interconnect
> > > +
> > > +maintainers:
> > > + - Herman van Hazendonk <github.com@xxxxxxxxxx>
> > > +
> > > +examples:
> > > + - |
> > > + #include <dt-bindings/clock/qcom,rpmcc.h>
> > > +
> > > + interconnect-afab {
> > > + compatible = "qcom,msm8660-apps-fabric";
> > > + clocks = <&rpmcc RPM_APPS_FABRIC_CLK>,
> > > + <&rpmcc RPM_APPS_FABRIC_A_CLK>,
> > > + <&rpmcc RPM_EBI1_CLK>,
> > > + <&rpmcc RPM_EBI1_A_CLK>;
> > > + clock-names = "bus", "bus_a", "ebi1", "ebi1_a";
> > > + qcom,rpm = <&rpm>;
> > > + #interconnect-cells = <1>;
> > > + };
> > > +
> > > + interconnect-sfab {
> > > + compatible = "qcom,msm8660-system-fabric";
> > > + clocks = <&rpmcc RPM_SYS_FABRIC_CLK>,
> > > + <&rpmcc RPM_SYS_FABRIC_A_CLK>;
> > > + clock-names = "bus", "bus_a";
> > > + qcom,rpm = <&rpm>;
> > > + #interconnect-cells = <1>;
> > > + };
> > > +
> > > + interconnect-mmfab {
> > > + compatible = "qcom,msm8660-mmss-fabric";
> > > + clocks = <&rpmcc RPM_MM_FABRIC_CLK>,
> > > + <&rpmcc RPM_MM_FABRIC_A_CLK>,
> > > + <&rpmcc RPM_SMI_CLK>,
> > > + <&rpmcc RPM_SMI_A_CLK>;
> > > + clock-names = "bus", "bus_a", "smi", "smi_a";
> > > + qcom,rpm = <&rpm>;
> > > + #interconnect-cells = <1>;
> > > + };
> > > +
> > > + interconnect-dfab {
> > > + compatible = "qcom,msm8660-daytona-fabric";
> > > + clocks = <&rpmcc RPM_DAYTONA_FABRIC_CLK>,
> > > + <&rpmcc RPM_DAYTONA_FABRIC_A_CLK>;
> >
> > Looking at it, I don't think those clocks sould be exposed here. Please
> > follow what Konrad did some time ago for smd-rpm interconnects: add
> > direct voting to the interconnect driver, them drop them from the clocks
> > driver. Ping me if you need help finding corresponding patch series (as
> > there were few more tricks.
> Feel free to send it. This is my first work on kernel ever and to be fair a
> lot of it comes from piggy backing on previous work, legacy kernels and
> insights from Claude & Gemini.
>
> I can say it "works" for my limited tests, but I haven't run a full fledged
> OS yet to stress test most things.
>
> HP TouchPad boots, audio works (though no Q6 (yet)), graphics works (Adreno
> 220), camera works (camss & vfe31), video plays via vidc, rotator, vfe
> works, sensors work (ALS, magnetometer, gyro), leds work, usb works,
> touchscreen works. Only thing I'm struggling with is wifi & bluetooth for
> the moment. It could very well be that when I rework things "properly" my
> wifi and bluetooth issues disappear and start to work. This old silicon is
> very unforgiving when it comes to bits set the wrong way.
>
> So any guidance is much appreciated :)

See https://lore.kernel.org/all/20230526-topic-smd_icc-v7-0-09c78c175546@xxxxxxxxxx/

Note, it bears some backwards compatibility quirks, which you don't
need, because we never had interconnects on those platforms. The only
issue, as I wrote, is SCM on APQ8064. But, I think, the clock was added
there only to fulfill the bindings. I'd say, ignore it for now.

>
> As always there are multiple roads that lead to Rome :)

--
With best wishes
Dmitry