From: Atanas Filipov <atanas.filipov@oss.qualcomm.com>
To: Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: atanas.filipov@oss.qualcomm.com,
Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>,
Loic Poulain <loic.poulain@oss.qualcomm.com>,
Gjorgji Rosikopulos <gjorgji.rosikopulos@oss.qualcomm.com>,
linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/6] media: qcom: camss: share VFE clock sources on SM8250
Date: Sat, 24 Oct 2026 12:40:21 +0300 [thread overview]
Message-ID: <20261024094027.3095475-1-atanas.filipov@oss.qualcomm.com> (raw)
On SM8250 several VFE clocks are fed by one clock source: the AREG
clocks of the two full VFEs share the fast AHB source, the two VFE Lite
share one core clock source, and all four VFEs share the camera NoC AXI
source. Each VFE sets such a source to its own rate, so the last VFE to
power on wins and can lower the rate under a VFE that is still running.
The CSID also sets the VFE core clocks to their lowest level when it
powers on after the VFE, and nothing sets the camera NoC AXI rate, so
the camera NoC runs from XO and two concurrent streams stall.
Two examples on RB5 (QRB5165):
- VFE0 streams the CSID test pattern and VFE1 then starts an imx577
stream. Nothing sets the camera NoC AXI rate, so the camera NoC stays
at XO (19.2 MHz) and one of the two streams stalls. With the series
the VFEs set it to 300 or 400 MHz and both streams complete.
- VFE Lite 0 streams the CSID test pattern at 480 MHz and VFE Lite 1
then starts an imx577 stream that needs 400 MHz. The two share one
core clock source, so VFE Lite 1 lowers it to 400 MHz under the
running VFE Lite 0. With the series the source stays at 480 MHz until
VFE Lite 0 stops.
This series lets the VFE own its clock rates and aggregates the shared
sources within CAMSS:
- Patch 1 moves the minimum rate computation out of the VFE clock
loops, with no functional change.
- Patch 2 clamps each VFE clock to its highest listed rate instead of
failing, as the VFE clock rate tables need not have the same number
of levels.
- Patch 3 stops the CSID from setting the VFE core clock rates.
- Patch 4 groups the VFE clocks by clock source, so that a shared
source runs at the highest rate requested by the running VFEs. It is
enabled per SoC, so far only on SM8250.
- Patch 5 lets the VFE set the AREG clock rate.
- Patch 6 drops the unused camera NoC AXI RCG from the VFE clocks and
lets the VFE set the camera NoC AXI rate.
The camera NoC AXI clock is also used by drivers outside CAMSS, and how
to aggregate their requests with the CAMSS one is still being discussed
on the CAMNOC interconnect series. Patch 6 does not depend on that
choice: it only aggregates the CAMSS VFEs, which share one source, and
fixes the concurrent stall today. Once the shared camera NoC clock is
represented, the VFE will request its rate through that interface
instead of setting the clock directly.
Tested on RB5 (QRB5165) with imx577 and ov9282 sensors and the CSID test
pattern generator, on single, concurrent test pattern plus sensor, and
concurrent dual sensor RDI captures on all four VFEs: all streams
complete, the shared sources stay at the highest requested rate while
another VFE runs, dedicated clocks drop to XO on power off, and the
camera NoC AXI clock runs at 300 or 400 MHz while streaming, without
the concurrent capture stalls seen before the series.
Changes in v2:
- Split the minimum rate computation out of the clock loops into its
own patch (Loic Poulain)
- Add the Fixes tag to the CSID patch (Bryan O'Donoghue)
- Split the clock grouping from the AREG clock change and add an
example to the grouping commit message (Bryan O'Donoghue)
- Rename the per-clock entries of a clock domain from user to vote
(Bryan O'Donoghue)
Atanas Filipov (6):
media: qcom: camss: factor out the VFE minimum clock rate
media: qcom: camss: clamp VFE clock rates to the highest level
media: qcom: camss: sm8250: do not set VFE core clock rates from CSID
media: qcom: camss: share VFE clock sources by the highest rate
media: qcom: camss: sm8250: set the VFE AREG clock rate from the VFE
media: qcom: camss: sm8250: set the camera NoC AXI rate from the VFE
drivers/media/platform/qcom/camss/camss-vfe.c | 138 ++++++-----
drivers/media/platform/qcom/camss/camss.c | 215 ++++++++++++++++--
drivers/media/platform/qcom/camss/camss.h | 13 ++
3 files changed, 272 insertions(+), 94 deletions(-)
base-commit: bd1ecbb61afefc6a8b876ccbc31e9228b44e9eab
--
2.34.1
next reply other threads:[~2026-10-24 9:40 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-24 9:40 Atanas Filipov [this message]
2026-10-24 9:40 ` [PATCH v2 1/6] media: qcom: camss: factor out the VFE minimum clock rate Atanas Filipov
2026-10-26 9:07 ` Bryan O'Donoghue
2026-10-24 9:40 ` [PATCH v2 2/6] media: qcom: camss: clamp VFE clock rates to the highest level Atanas Filipov
2026-10-26 9:08 ` Bryan O'Donoghue
2026-10-26 9:28 ` Loic Poulain
2026-10-26 13:18 ` Atanas Filipov
2026-10-24 9:40 ` [PATCH v2 3/6] media: qcom: camss: sm8250: do not set VFE core clock rates from CSID Atanas Filipov
2026-10-26 9:08 ` Bryan O'Donoghue
2026-10-24 9:40 ` [PATCH v2 4/6] media: qcom: camss: share VFE clock sources by the highest rate Atanas Filipov
2026-10-26 9:13 ` Bryan O'Donoghue
2026-10-26 13:18 ` Atanas Filipov
2026-10-24 9:40 ` [PATCH v2 5/6] media: qcom: camss: sm8250: set the VFE AREG clock rate from the VFE Atanas Filipov
2026-10-26 9:22 ` Bryan O'Donoghue
2026-10-26 13:18 ` Atanas Filipov
2026-10-24 9:40 ` [PATCH v2 6/6] media: qcom: camss: sm8250: set the camera NoC AXI " Atanas Filipov
2026-10-26 9:25 ` Bryan O'Donoghue
2026-10-26 13:18 ` Atanas Filipov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261024094027.3095475-1-atanas.filipov@oss.qualcomm.com \
--to=atanas.filipov@oss.qualcomm.com \
--cc=bryan.odonoghue@linaro.org \
--cc=gjorgji.rosikopulos@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=loic.poulain@oss.qualcomm.com \
--cc=mchehab@kernel.org \
--cc=vladimir.zapolskiy@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®