| From: |
| Herman van Hazendonk <github.com-AT-herrie.org> |
| To: |
| djakov-AT-kernel.org |
| Subject: |
| [PATCH v2 0/2] interconnect: qcom: add MSM8x60 NoC driver |
| Date: |
| Thu, 04 Jun 2026 20:43:58 +0200 |
| Message-ID: |
| <20260604184400.801543-1-github.com@herrie.org> |
| Cc: |
| dmitry.baryshkov-AT-oss.qualcomm.com, konrad.dybcio-AT-oss.qualcomm.com, odelu.kukatla-AT-oss.qualcomm.com, raviteja.laggyshetty-AT-oss.qualcomm.com, luca.weiss-AT-fairphone.com, abel.vesa-AT-oss.qualcomm.com, jie.gan-AT-oss.qualcomm.com, robh-AT-kernel.org, krzk+dt-AT-kernel.org, conor+dt-AT-kernel.org, linux-arm-msm-AT-vger.kernel.org, linux-pm-AT-vger.kernel.org, devicetree-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, Herman van Hazendonk <github.com-AT-herrie.org> |
| Archive-link: |
| Article |
v2 addresses Jie's, Sashiko's and Dmitry's review of v1:
Binding (PATCH 1/2):
- Add the dt-binding schema (qcom,msm8660.yaml). v1 only shipped
the ID header (Jie flagged the missing schema). The schema
covers all four compatibles, 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) with descriptions for each clock
(Dmitry), the required qcom,rpm phandle, and
#interconnect-cells = <1>.
- Drop the SFPB/CFPB mention from the header commit message;
those fabrics aren't modelled by the driver (Sashiko Low).
Driver (PATCH 2/2):
- Fix the bandwidth aggregation in msm8660_icc_set() (Sashiko
High). v1 walked provider->nodes and re-summed n->avg_bw
across all nodes, which double-counts: the framework already
writes each path's bw to every node it traverses, so summing
here gives e.g. master_bw + slave_bw for the same flow. v2
takes the max per-node rate across the provider (matches the
qcom_icc_bus_aggregate() convention in icc-rpm.c).
- Switch to dynamic ICC node IDs via icc_node_create_dyn() and
pointer-based linking via icc_link_nodes(), matching the
icc-rpmh-style pattern (Dmitry). Drop the internal MSM8660_*
enum entirely; struct msm8660_icc_node now carries a struct
icc_node *node and a flexible link_nodes[] array of qnode
pointers.
- Expand the DEFINE_QNODE macro (Dmitry); each of the 63 qnodes
is now an explicit static struct definition, with forward
declarations grouped at the top.
- Use dev_err_ptr_probe() in msm8660_get_rpm()'s deferred-probe
paths (Dmitry).
- Limit the clock-bulk-get fallback to -ENOENT only (Dmitry);
propagate every other error including -EPROBE_DEFER instead
of "any non-DEFER continues without clock scaling".
- Kconfig: depend on MFD_QCOM_RPM=y so a built-in interconnect
provider can't link against a modular RPM (Sashiko Low).
- struct msm8660_icc_node: const char *name (Sashiko Low).
On-device validation (HP TouchPad / APQ8060):
All four fabric providers probe cleanly:
qnoc-msm8660 soc:interconnect@0: RPM fabric ARB enabled
(4 masters, 4 slaves, 2 tiered) [AFAB]
qnoc-msm8660 soc:interconnect@1: RPM fabric ARB enabled
(17 masters, 9 slaves, 2 tiered) [SFAB]
qnoc-msm8660 soc:interconnect@2: RPM fabric ARB enabled
(14 masters, 4 slaves, 3 tiered) [MMFAB]
qnoc-msm8660 soc:interconnect@3: MSM8660 interconnect provider
registered [DFAB]
mmcc-msm8660: MMSS fabric: unhalted all master ports (0-13)
msm_hsusb 12500000.usb: USB HS: Setting interconnect
bandwidth avg=61440 peak=61440 kBps
interconnect_summary shows the expected per-node aggregation
(e.g. slv_ebi_ch0 sums MMC + MDP + DMA + USB consumer requests)
and msm8660_icc_set() then derives a single fabric clock rate
from the per-node max rather than the per-node sum (the v1
double-count is gone in v2).
The companion DTS patches that enable the providers for the
HP TouchPad will be sent separately to the ARM/DTS tree.
Herman van Hazendonk (2):
dt-bindings: interconnect: qcom: add msm8660 NoC
interconnect: qcom: add MSM8x60 NoC driver
.../bindings/interconnect/qcom,msm8660.yaml | 157 ++
drivers/interconnect/qcom/Kconfig | 14 +
drivers/interconnect/qcom/Makefile | 2 +
drivers/interconnect/qcom/msm8660.c | 1619 +++++++++++++++++
.../dt-bindings/interconnect/qcom,msm8660.h | 156 ++
5 files changed, 1948 insertions(+)
create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,msm8660.yaml
create mode 100644 drivers/interconnect/qcom/msm8660.c
create mode 100644 include/dt-bindings/interconnect/qcom,msm8660.h
base-commit: 944125b4c454b58d2fe6e35f1087a932b2050dff
--
2.43.0