Re: [PATCH v3 2/2] media: qcom: camss: Enable the streams API on SC7280

From: Gjorgji Rosikopulos (Consultant)

Date: Mon Oct 12 2026 - 03:32:43 EST


Hi Hitesh,

Thanks i will try to include your changes in my next series,
it will need verification from your side as well.

~Gjorgji

On 9/16/2026 9:54 AM, Hitesh Patel wrote:
> Set streams_enable on every CSIPHY, CSID and VFE line of SC7280, as
> done for SM8250.
>
> Tested on RB3 Gen2 (QCS6490) with two GMSL cameras behind a MAX9296A
> deserializer, one camera per CSI-2 port, so two independent pipelines
> share the deserializer subdev: both cameras stream concurrently, and
> each can be started and stopped repeatedly while the other keeps
> streaming, without the WARN in call_s_stream() and without the second
> pipeline tearing the first one down that the legacy s_stream path
> produces. The CSID test pattern generator keeps working.
>
> This patch applies on top of Gjorgji Rosikopulos' series "media: qcom:
> camss: add V4L2 subdev streams API support" (see Link below); it does
> not build without it.
>
> Signed-off-by: Hitesh Patel <hitesh@xxxxxxxxxxxxxx>
> Link: https://lore.kernel.org/r/20260911062213.195007-1-gjorgji.rosikopulos@xxxxxxxxxxxxxxxx
> ---
> v3: no code change. Reference the prerequisite series with a Link: tag
> instead of a long URL in the text (checkpatch line-length warning).
> v2: no code change. Add the dependency to the commit message and as
> base-commit/prerequisite-patch-id trailers, so patchwork and the
> Media CI do not try to build the patches standalone.
>
> drivers/media/platform/qcom/camss/camss.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
> index 0201debd4..2023c0df2 100644
> --- a/drivers/media/platform/qcom/camss/camss.c
> +++ b/drivers/media/platform/qcom/camss/camss.c
> @@ -2280,6 +2280,7 @@ static const struct camss_subdev_resources csiphy_res_7280[] = {
> .reg = { "csiphy0" },
> .interrupt = { "csiphy0" },
> .csiphy = {
> + .streams_enable = true,
> .id = 0,
> .hw_ops = &csiphy_ops_3ph_1_0,
> .formats = &csiphy_formats_sdm845,
> @@ -2298,6 +2299,7 @@ static const struct camss_subdev_resources csiphy_res_7280[] = {
> .reg = { "csiphy1" },
> .interrupt = { "csiphy1" },
> .csiphy = {
> + .streams_enable = true,
> .id = 1,
> .hw_ops = &csiphy_ops_3ph_1_0,
> .formats = &csiphy_formats_sdm845,
> @@ -2316,6 +2318,7 @@ static const struct camss_subdev_resources csiphy_res_7280[] = {
> .reg = { "csiphy2" },
> .interrupt = { "csiphy2" },
> .csiphy = {
> + .streams_enable = true,
> .id = 2,
> .hw_ops = &csiphy_ops_3ph_1_0,
> .formats = &csiphy_formats_sdm845,
> @@ -2334,6 +2337,7 @@ static const struct camss_subdev_resources csiphy_res_7280[] = {
> .reg = { "csiphy3" },
> .interrupt = { "csiphy3" },
> .csiphy = {
> + .streams_enable = true,
> .id = 3,
> .hw_ops = &csiphy_ops_3ph_1_0,
> .formats = &csiphy_formats_sdm845,
> @@ -2352,6 +2356,7 @@ static const struct camss_subdev_resources csiphy_res_7280[] = {
> .reg = { "csiphy4" },
> .interrupt = { "csiphy4" },
> .csiphy = {
> + .streams_enable = true,
> .id = 4,
> .hw_ops = &csiphy_ops_3ph_1_0,
> .formats = &csiphy_formats_sdm845,
> @@ -2373,6 +2378,7 @@ static const struct camss_subdev_resources csid_res_7280[] = {
> .reg = { "csid0" },
> .interrupt = { "csid0" },
> .csid = {
> + .streams_enable = true,
> .is_lite = false,
> .hw_ops = &csid_ops_gen2,
> .parent_dev_ops = &vfe_parent_dev_ops,
> @@ -2392,6 +2398,7 @@ static const struct camss_subdev_resources csid_res_7280[] = {
> .reg = { "csid1" },
> .interrupt = { "csid1" },
> .csid = {
> + .streams_enable = true,
> .is_lite = false,
> .hw_ops = &csid_ops_gen2,
> .parent_dev_ops = &vfe_parent_dev_ops,
> @@ -2411,6 +2418,7 @@ static const struct camss_subdev_resources csid_res_7280[] = {
> .reg = { "csid2" },
> .interrupt = { "csid2" },
> .csid = {
> + .streams_enable = true,
> .is_lite = false,
> .hw_ops = &csid_ops_gen2,
> .parent_dev_ops = &vfe_parent_dev_ops,
> @@ -2430,6 +2438,7 @@ static const struct camss_subdev_resources csid_res_7280[] = {
> .reg = { "csid_lite0" },
> .interrupt = { "csid_lite0" },
> .csid = {
> + .streams_enable = true,
> .is_lite = true,
> .hw_ops = &csid_ops_gen2,
> .parent_dev_ops = &vfe_parent_dev_ops,
> @@ -2449,6 +2458,7 @@ static const struct camss_subdev_resources csid_res_7280[] = {
> .reg = { "csid_lite1" },
> .interrupt = { "csid_lite1" },
> .csid = {
> + .streams_enable = true,
> .is_lite = true,
> .hw_ops = &csid_ops_gen2,
> .parent_dev_ops = &vfe_parent_dev_ops,
> @@ -2475,6 +2485,7 @@ static const struct camss_subdev_resources vfe_res_7280[] = {
> .reg = { "vfe0" },
> .interrupt = { "vfe0" },
> .vfe = {
> + .streams_enable = true,
> .line_num = 3,
> .is_lite = false,
> .has_pd = true,
> @@ -2501,6 +2512,7 @@ static const struct camss_subdev_resources vfe_res_7280[] = {
> .reg = { "vfe1" },
> .interrupt = { "vfe1" },
> .vfe = {
> + .streams_enable = true,
> .line_num = 3,
> .is_lite = false,
> .has_pd = true,
> @@ -2527,6 +2539,7 @@ static const struct camss_subdev_resources vfe_res_7280[] = {
> .reg = { "vfe2" },
> .interrupt = { "vfe2" },
> .vfe = {
> + .streams_enable = true,
> .line_num = 3,
> .is_lite = false,
> .hw_ops = &vfe_ops_170,
> @@ -2551,6 +2564,7 @@ static const struct camss_subdev_resources vfe_res_7280[] = {
> .reg = { "vfe_lite0" },
> .interrupt = { "vfe_lite0" },
> .vfe = {
> + .streams_enable = true,
> .line_num = 4,
> .is_lite = true,
> .hw_ops = &vfe_ops_170,
> @@ -2573,6 +2587,7 @@ static const struct camss_subdev_resources vfe_res_7280[] = {
> .reg = { "vfe_lite1" },
> .interrupt = { "vfe_lite1" },
> .vfe = {
> + .streams_enable = true,
> .line_num = 4,
> .is_lite = true,
> .hw_ops = &vfe_ops_170,