Re: [PATCH v4 0/3] Add CAMSS support for SM6350

From: Vladimir Zapolskiy

Date: Fri Apr 03 2026 - 06:21:26 EST


Hi Luca.

On 4/3/26 11:09, Luca Weiss wrote:
Hi Vladimir,

On Tue Mar 31, 2026 at 12:49 AM CEST, Vladimir Zapolskiy wrote:
Hi Luca,

On 2/16/26 10:54, Luca Weiss wrote:
Add bindings, driver and dts to support the Camera Subsystem on the
SM6350 SoC.

These patches were tested on a Fairphone 4 smartphone with WIP sensor
drivers (Sony IMX576 and IMX582), the camera pipeline works properly as
far as I can tell.

Though when stopping the camera stream, the following clock warning
appears in dmesg. But it does not interfere with any functionality,
starting and stopping the stream works and debugcc is showing 426.4 MHz
while the clock is on, and 'off' while it's off.

Any suggestion how to fix this, is appreciated.

I've looked at CAMCC recently, and I do notice that SM6350 CAMCC does not
set '.use_rpm = true' flag for whatever reason.

If you find a free minute, can you test the change below?..

Unfortunately that change does not resolve the "gcc_camera_axi_clk
status stuck at 'on'" warning.

fairphone-fp4:~$ cat /sys/bus/platform/drivers/sm6350-camcc/ad00000.clock-controller/power/runtime_status
active

fairphone-fp4:~$ cat /sys/bus/platform/drivers/sm6350-camcc/ad00000.clock-controller/power/runtime_status
suspended


So it seems to be a technically deeper issue, once given insights by Imran
likely to be very relevant:
https://lore.kernel.org/linux-arm-msm/caa870e2-3795-40bc-9f0e-c93e313c8c6e@xxxxxxxxxxxxxxxx/


----8<----
diff --git a/drivers/clk/qcom/camcc-sm6350.c b/drivers/clk/qcom/camcc-sm6350.c
index 7df12c1311c6..ba880e4edcaf 100644
--- a/drivers/clk/qcom/camcc-sm6350.c
+++ b/drivers/clk/qcom/camcc-sm6350.c
@@ -1880,6 +1880,7 @@ static const struct qcom_cc_desc camcc_sm6350_desc = {
.num_clks = ARRAY_SIZE(camcc_sm6350_clocks),
.gdscs = camcc_sm6350_gdscs,
.num_gdscs = ARRAY_SIZE(camcc_sm6350_gdscs),
+ .use_rpm = true,
};
static const struct of_device_id camcc_sm6350_match_table[] = {
----8<----

This change could be considered to be included in any case, I believe.

I guess this change is now the way to enable pm_runtime, I had this
series 3 years ago in February 2023:
https://lore.kernel.org/linux-arm-msm/20230213-sm6350-camcc-runtime_pm-v3-0-d35e0d833cc4@xxxxxxxxxxxxx/

But I never followed up due to me not understanding pm_runtime well and
no direct need for it.

But I guess reviving that with use_rpm = true, add power-domains &
required-opps to dt-bindings and sm6350.dtsi should be a good idea?


It should be, if SM6350 CAMCC is known to belong to an on-SoC power domain,
then devm_pm_runtime_enable() will be called on .probe to embed the
controller driver into the runtime PM framework, see commit c0b6627369bc.
Power domain management of devices is handled inside the runtime PM.

--
Best wishes,
Vladimir