[PATCH v3 0/3] Use icc-clk for the SM8250 camera NoC AXI clock

From: Atanas Filipov

Date: Fri Oct 16 2026 - 13:08:37 EST


CAM_CC_CAMNOC_AXI_CLK on SM8250 is shared by several independent
camera blocks, such as CAMSS and the JPEG encoder. Each of them needs a
minimum camera NoC AXI rate, and setting the rate of the shared clock
directly from each consumer driver means the last writer wins.

Following the review of v2, this version drops the custom CAMNOC
interconnect provider. The camera clock controller instead exports the
camera NoC AXI clock through the common icc-clk support
(qcom_cc_desc.icc_hws), as gcc-ipq9574 and gcc-ipq5210 do. Consumers
request bandwidth on one master/slave path, the interconnect core
aggregates the requests, and the clock runs at the highest requested
rate. A consumer can do this through opp-peak-kBps in its OPP table,
so the vote follows its own core clock OPP.

The icc-clk path is backed by the RCG CAM_CC_CAMNOC_AXI_CLK_SRC rather
than the branch CAM_CC_CAMNOC_AXI_CLK. icc-clk enables its clock while
the provider registers, when TITAN_TOP_GDSC is still off, and enabling
the branch at that point fails with "cam_cc_camnoc_axi_clk status stuck
at 'off'". The RCG can be enabled at probe; the branch has
CLK_SET_RATE_PARENT, so the rate ends up on the RCG either way, and each
consumer keeps enabling the branch itself after powering the GDSC.

The JPEG encoder and CAMSS will use this path; their changes will be
posted separately.

Tested on RB5 (QRB5165): the camera NoC AXI clock follows the
aggregated vote, votes drop to zero when the consumer is idle, and no
clock warnings are seen at boot.

Changes since v2:
- Drop the CAMNOC interconnect provider driver, its binding and DT
node; export the camera NoC AXI clock through icc-clk in
camcc-sm8250 instead (Krzysztof Kozlowski, Konrad Dybcio)
- Drop the per-master CAMNOC port IDs; icc-clk provides one
master/slave pair per clock

Atanas Filipov (3):
dt-bindings: clock: qcom,camcc-sm8250: add interconnect provider
clk: qcom: camcc-sm8250: use icc-clk for camera NoC AXI clock
arm64: dts: qcom: sm8250: add camcc interconnect cells

.../devicetree/bindings/clock/qcom,camcc-sm8250.yaml | 4 ++++
arch/arm64/boot/dts/qcom/sm8250.dtsi | 1 +
drivers/clk/qcom/camcc-sm8250.c | 12 ++++++++++++
include/dt-bindings/interconnect/qcom,sm8250.h | 3 +++
4 files changed, 20 insertions(+)


base-commit: b810335a0699d1810683796b0e3ffe8827ddfe6c
--
2.34.1