Re: [PATCH v3 1/2] dt-bindings: interconnect: qcom: add msm8660 NoC
From: me
Date: Sat Jun 06 2026 - 10:33:22 EST
On 2026-06-06 15:23, Dmitry Baryshkov wrote:
On Sat, Jun 06, 2026 at 02:34:50PM +0200, Herman van Hazendonk wrote: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.
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.
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 :)
As always there are multiple roads that lead to Rome :)
Thanks,
Herman
+ clock-names = "bus", "bus_a";
+ qcom,rpm = <&rpm>;
+ #interconnect-cells = <1>;
+ };
+...