Re: [PATCH v3 3/3] arm64: dts: qcom: sm8250: add camcc interconnect cells

From: Atanas Filipov

Date: Tue Oct 20 2026 - 04:33:49 EST


On 10/19/2026 5:50 PM, Dmitry Baryshkov wrote:
On Fri, Oct 16, 2026 at 08:07:01PM +0300, Atanas Filipov wrote:
Add #interconnect-cells to the camera clock controller so camera
consumers can request camera NoC AXI bandwidth through the
interconnect framework.

I guess currently we have only one consumer, camss. Could you please
include patches converting it to the bus voting? Be sure to retain
compatibility with older DTs, which don't have ICC provided by the camcc
node.


Before converting CAMSS I would like to agree on the approach, since it
cannot simply follow JPEG. In either case the camcc path would be
optional, so older DTs keep working as before.

OPP is per device, and CAMSS is a single device containing several VFEs, each with its own core clock and its own load. If CAMSS used dev_pm_opp_set_opp() on its device like JPEG does, every VFE would overwrite the clock and bandwidth votes of the others, which is the same last-writer-wins problem in a different place.

I see two ways to keep the VFEs independent:

1. One OPP table in the CAMSS node, used only as a lookup. Each VFE
finds the OPP for its own required rate, sets its own clock and
votes the bandwidth from that OPP on its own ICC path. The driver
requests a separate path per VFE from the same "interconnects"
entry, so DT describes the hardware connection once and the
interconnect core aggregates the VFE requests with the other
consumers. The rail level is not applied by the OPP core in this
case, so CAMSS keeps handling it as today.

2. An OPP table per VFE, attached to the per-VFE power domain device
that CAMSS already creates, so each VFE calls dev_pm_opp_set_opp()
on its own device. This applies the rail level as well, but the
virtual device shares the CAMSS of_node, so it would pick up all
CAMSS interconnect paths and need indexed OPP tables in DT, which I
have not seen used for such devices.

Which one would you prefer, or do you see a better way?

Best regards,
Atanas


Signed-off-by: Atanas Filipov <atanas.filipov@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/sm8250.dtsi | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index f975c2183269a..e923c74dc1435 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -4675,6 +4675,7 @@ camcc: clock-controller@ad00000 {
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
+ #interconnect-cells = <1>;
};
mdss: display-subsystem@ae00000 {
--
2.34.1