[PATCH 00/45] media: qcom: camss: add IFE pixel path support

From: Gjorgji . Rosikopulos . gjorgji . rosikopulos

Date: Tue Oct 06 2026 - 18:41:08 EST


From: Gjorgji Rosikopulos <gjorgji.rosikopulos@xxxxxxxxxxxxxxxx>

This series adds pixel-path support for three platforms: SM8250,
SA8775P, and QCS8300.

To keep the implementation manageable across platforms, instead of a
single monolithic VFE abstraction, more granular hardware abstractions
are introduced: ife-top, ife-camif, ife-bus, and ife-modules.

We initially attempted to modify and extend the existing VFE code, but
the changes touched every file and led to a third generation of VFE
support (multiple pads, etc.) being added on top of the existing two.
The result was a crowded, hard-to-review camss-vfe.c carrying three
hardware generations in a single file. Because of this, we introduced
a new sub-device, IFE (the new name for what was called VFE on older
platforms). The IFE sub-device supports the multistream API and
multiple source/sink pads for handling parameters and statistics.
Stream routing to each output is handled through the streams API. It
also defines, per pad, the basic configuration shared across all
platforms (WM IDs, composite IRQs, etc.), as described in the patches
that follow.

On the CSID side, a single source pad can now expose several hardware
outputs as separate streams, and the gen2 CSID backend gains a routed
pixel path (IPP) alongside the existing RDI paths. The TPG internal
path is also fixed to use one CSI-2 lane, avoiding packet header ECC
errors, and gains explicit links into the new IFE topology.

QCS8300 shares the same IFE/CSID pixel path hardware as SA8775P, with
the only difference being that QCS8300 has 3 CSIPHYs (0-2) instead of
SA8775P's 4 (0-3).

The IFE parameter and statistics blocks are now built on top of the
generic v4l2-isp parameter/statistics block validation introduced for
the OPE driver.

The selection of pixel path topology is done using a different
compatible for the same platform. This will most probably not be
accepted, but as of today it is the only way to support both
topologies.

NOTE: Bryan has posted RFC changes for pixel path params and
statistics. This series was ready to be posted at that time, so it is
not rebased on top of Bryan's implementation. Both implementations
share common parts, but take a different direction towards enabling
the pixel path: Bryan's series extends camss-vfe, while this series
introduces the new camss-ife sub-device described above.

Depends-on:
https://lore.kernel.org/all/20260925-camss-isp-ope-v10-0-2622411034cb@xxxxxxxxxxxxxxxx/
https://lore.kernel.org/all/20260911062213.195007-1-gjorgji.rosikopulos@xxxxxxxxxxxxxxxx/

Atanas Filipov (33):
media: qcom: camss: report probe failures
dt-bindings: media: qcom,sm8250-camss: add pixel path variant
media: qcom: camss: keep CSIPHY lanes active while streaming
media: qcom: camss: add IFE subdevice interface
media: qcom: camss: sm8250: add IFE BUS v20x
media: qcom: camss: sm8250: add IFE CamIF v10x
media: qcom: camss: sm8250: add IFE scaler v10x
media: qcom: camss: sm8250: add IFE module engine v10x
media: qcom: camss: sm8250: add IFE top v20x
media: qcom: camss: sm8250: add IFE Lite top v10x
media: qcom: camss: sm8250: add IFE pad descriptors
media: qcom: camss: formats: add pixel format lookup helpers
media: qcom: camss: video: use helpers for line-based formats
media: qcom: camss: video: add managed streaming callbacks
media: qcom: camss: add common IFE subdevice core
media: qcom: camss: integrate IFE devices
media: qcom: camss: sm8250: add pixel path resources
media: uapi: add Qualcomm IFE statistics
media: v4l2: add Qualcomm IFE statistics format
media: qcom: camss: add IFE statistics output
media: uapi: add Qualcomm IFE parameters
media: v4l2: add Qualcomm IFE parameters format
media: qcom: camss: sm8250: apply IFE parameters
dt-bindings: media: qcom,sa8775p-camss: add pixel path variant
media: qcom: camss: sa8775p: add IFE BUS v3.1x
media: qcom: camss: sa8775p: add IFE scaler v2.3x
media: qcom: camss: sa8775p: add IFE top v4.1x
media: qcom: camss: sa8775p: add IFE lite top v3.0x
media: qcom: camss: sa8775p: add IFE pad descriptors
media: qcom: camss: sa8775p: add IFE completion groups
media: qcom: camss: sa8775p: add CSID pixel path
media: qcom: camss: sa8775p: add IFE modules v4.1x
media: qcom: camss: sa8775p: add pixel path resources

Gjorgji Rosikopulos (8):
media: qcom: camss: support CSID streams on one source pad
media: qcom: camss: add CSID gen2 pixel path
media: qcom: camss: sa8775p: add CCM parameters
media: qcom: camss: sa8775p: add LSC parameters
media: qcom: camss: sa8775p: add gamma parameters
media: qcom: camss: sa8775p: add white balance parameters
media: qcom: camss: sa8775p: add AWB BG parameters
media: qcom: camss: ife: queue params buffers in FIFO order

Prashant Shrotriya (4):
media: qcom: camss: create TPG links for IFE
media: qcom: camss: use one lane for TPG internal path
dt-bindings: media: qcom,qcs8300-camss: add pixel path variant
media: qcom: camss: sa8775p: add pixel path resources for QCS8300

.../bindings/media/qcom,qcs8300-camss.yaml | 4 +-
.../bindings/media/qcom,sa8775p-camss.yaml | 4 +-
.../bindings/media/qcom,sm8250-camss.yaml | 4 +-
drivers/media/platform/qcom/camss/Kconfig | 1 +
drivers/media/platform/qcom/camss/Makefile | 14 +
.../platform/qcom/camss/camss-csid-gen2.c | 158 +-
.../platform/qcom/camss/camss-csid-gen3.c | 265 ++-
.../media/platform/qcom/camss/camss-csid.c | 148 +-
.../media/platform/qcom/camss/camss-csid.h | 10 +
.../media/platform/qcom/camss/camss-csiphy.c | 12 +-
.../media/platform/qcom/camss/camss-csiphy.h | 1 +
.../media/platform/qcom/camss/camss-format.c | 31 +
.../media/platform/qcom/camss/camss-format.h | 3 +
.../platform/qcom/camss/camss-ife-bus-v20x.c | 287 +++
.../platform/qcom/camss/camss-ife-bus-v31x.c | 267 +++
.../qcom/camss/camss-ife-camif-v10x.c | 59 +
.../qcom/camss/camss-ife-camif-v10x.h | 42 +
.../qcom/camss/camss-ife-lite-top-v10x.c | 387 ++++
.../qcom/camss/camss-ife-lite-top-v30x.c | 265 +++
.../platform/qcom/camss/camss-ife-mod-v10x.c | 603 ++++++
.../platform/qcom/camss/camss-ife-mod-v41x.c | 739 +++++++
.../platform/qcom/camss/camss-ife-pads.c | 607 ++++++
.../platform/qcom/camss/camss-ife-params.c | 74 +
.../platform/qcom/camss/camss-ife-params.h | 75 +
.../qcom/camss/camss-ife-scale-v10x.c | 148 ++
.../qcom/camss/camss-ife-scale-v10x.h | 15 +
.../qcom/camss/camss-ife-scale-v23x.c | 203 ++
.../qcom/camss/camss-ife-scale-v23x.h | 19 +
.../platform/qcom/camss/camss-ife-top-v20x.c | 570 ++++++
.../platform/qcom/camss/camss-ife-top-v41x.c | 384 ++++
drivers/media/platform/qcom/camss/camss-ife.c | 1812 +++++++++++++++++
drivers/media/platform/qcom/camss/camss-ife.h | 413 ++++
.../platform/qcom/camss/camss-tpg-gen1.c | 2 +-
drivers/media/platform/qcom/camss/camss-tpg.h | 1 +
.../media/platform/qcom/camss/camss-video.c | 299 ++-
.../media/platform/qcom/camss/camss-video.h | 5 +
drivers/media/platform/qcom/camss/camss.c | 1362 ++++++++++++-
drivers/media/platform/qcom/camss/camss.h | 47 +
drivers/media/v4l2-core/v4l2-ioctl.c | 6 +
include/uapi/linux/qcom-camss-config.h | 157 +-
include/uapi/linux/qcom-camss-stats.h | 62 +
include/uapi/linux/videodev2.h | 4 +
42 files changed, 9355 insertions(+), 214 deletions(-)
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-bus-v20x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-bus-v31x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-camif-v10x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-camif-v10x.h
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-lite-top-v10x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-lite-top-v30x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-mod-v10x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-mod-v41x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-pads.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-params.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-params.h
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-scale-v10x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-scale-v10x.h
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-scale-v23x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-scale-v23x.h
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-top-v20x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife-top-v41x.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife.c
create mode 100644 drivers/media/platform/qcom/camss/camss-ife.h
create mode 100644 include/uapi/linux/qcom-camss-stats.h

--
2.34.1