Re: [PATCH v3 1/3] dt-bindings: clock: qcom,camcc-sm8250: add interconnect provider
From: Atanas Filipov
Date: Tue Oct 20 2026 - 08:52:17 EST
On 10/20/2026 10:12 AM, Krzysztof Kozlowski wrote:
On Fri, Oct 16, 2026 at 08:06:59PM +0300, Atanas Filipov wrote:Agreed, the problem is in the drivers. Today each CAMSS VFE calls
CAM_CC_CAMNOC_AXI_CLK is shared by several camera blocks. Setting its
Clock is not an interconnect, although AXI suggests this could be
something with bus, but it seems you solve driver problem with
interconnect description.
clk_set_rate() on camnoc_axi based on its own load only. The last
caller wins, and the rate is never lowered after streaming stops.
If you only need to solve "last writer" problem, why not fixing the
clock framework to accept the votes? Otherwise this should have
description why it is an interconnect.
Best regards,
Krzysztof
I checked clk_set_min_rate() and clk_set_rate_range(). The clock core
takes the highest minimum of all users, but when a user drops its
request, the core only clamps the last requested rate to the new
range. The RCG keeps that rate and does not go to the lowest allowed
one, so the clock stays high. Fixing this needs a change in the clock
core.
icc-clk already does this: the interconnect core aggregates the
requests and icc-clk is the only one that sets the clock rate. The
camnoc AXI clock drives the camera NoC, the bus between the camera
blocks and the MMSS NoC, so a bandwidth request matches the hardware.
gcc-ipq9574 uses icc-clk for its NoC clocks in the same way.
Which direction do you prefer? If icc-clk stays, I will add this
explanation to the commit message in v4.
Best regards,
Atanas