mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 00/45] media: qcom: camss: add IFE pixel path support
@ 2026-10-06 22:39 Gjorgji.Rosikopulos.gjorgji.rosikopulos
  2026-10-06 22:39 ` [PATCH 01/45] media: qcom: camss: support CSID streams on one source pad Gjorgji.Rosikopulos.gjorgji.rosikopulos
                   ` (45 more replies)
  0 siblings, 46 replies; 57+ messages in thread
From: Gjorgji.Rosikopulos.gjorgji.rosikopulos @ 2026-10-06 22:39 UTC (permalink / raw)
  To: Bryan O'Donoghue, Mauro Carvalho Chehab
  Cc: Vladimir Zapolskiy, Loic Poulain, Dmitry Baryshkov,
	Atanas Filipov, Jigarkumar Zala, linux-media, linux-arm-msm,
	linux-kernel, Gjorgji Rosikopulos, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, hariram.purushothaman,
	pshrotri, Vikram Sharma, johannes.goede, konradybcio

From: Gjorgji Rosikopulos <gjorgji.rosikopulos@oss.qualcomm.com>

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@oss.qualcomm.com/
https://lore.kernel.org/all/20260911062213.195007-1-gjorgji.rosikopulos@oss.qualcomm.com/

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


^ permalink raw reply	[flat|nested] 57+ messages in thread

end of thread, other threads:[~2026-10-07 10:03 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-06 22:39 [PATCH 00/45] media: qcom: camss: add IFE pixel path support Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 01/45] media: qcom: camss: support CSID streams on one source pad Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 02/45] media: qcom: camss: add CSID gen2 pixel path Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 03/45] media: qcom: camss: report probe failures Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 04/45] dt-bindings: media: qcom,sm8250-camss: add pixel path variant Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-07  7:41   ` Krzysztof Kozlowski
2026-10-07  7:55     ` Gjorgji Rosikopulos (Consultant)
2026-10-07  9:52   ` Bryan O'Donoghue
2026-10-07 10:00     ` Gjorgji Rosikopulos (Consultant)
2026-10-06 22:39 ` [PATCH 05/45] media: qcom: camss: keep CSIPHY lanes active while streaming Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 06/45] media: qcom: camss: add IFE subdevice interface Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 07/45] media: qcom: camss: sm8250: add IFE BUS v20x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 08/45] media: qcom: camss: sm8250: add IFE CamIF v10x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 09/45] media: qcom: camss: sm8250: add IFE scaler v10x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 10/45] media: qcom: camss: sm8250: add IFE module engine v10x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 11/45] media: qcom: camss: sm8250: add IFE top v20x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 12/45] media: qcom: camss: sm8250: add IFE Lite top v10x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 13/45] media: qcom: camss: sm8250: add IFE pad descriptors Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 14/45] media: qcom: camss: formats: add pixel format lookup helpers Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 15/45] media: qcom: camss: video: use helpers for line-based formats Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 16/45] media: qcom: camss: video: add managed streaming callbacks Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 17/45] media: qcom: camss: add common IFE subdevice core Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-07  9:42   ` Bryan O'Donoghue
2026-10-07  9:53     ` Gjorgji Rosikopulos (Consultant)
2026-10-06 22:39 ` [PATCH 18/45] media: qcom: camss: integrate IFE devices Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 19/45] media: qcom: camss: sm8250: add pixel path resources Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 20/45] media: uapi: add Qualcomm IFE statistics Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 21/45] media: v4l2: add Qualcomm IFE statistics format Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 22/45] media: qcom: camss: add IFE statistics output Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 23/45] media: uapi: add Qualcomm IFE parameters Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 24/45] media: v4l2: add Qualcomm IFE parameters format Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 25/45] media: qcom: camss: sm8250: apply IFE parameters Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 26/45] dt-bindings: media: qcom,sa8775p-camss: add pixel path variant Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-07  9:49   ` Bryan O'Donoghue
2026-10-07  9:57     ` Gjorgji Rosikopulos (Consultant)
2026-10-06 22:39 ` [PATCH 27/45] media: qcom: camss: sa8775p: add IFE BUS v3.1x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-07  6:44   ` Gjorgji Rosikopulos (Consultant)
2026-10-06 22:39 ` [PATCH 28/45] media: qcom: camss: sa8775p: add IFE scaler v2.3x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 29/45] media: qcom: camss: sa8775p: add IFE top v4.1x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 30/45] media: qcom: camss: sa8775p: add IFE lite top v3.0x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 31/45] media: qcom: camss: sa8775p: add IFE pad descriptors Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 32/45] media: qcom: camss: sa8775p: add IFE completion groups Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 33/45] media: qcom: camss: sa8775p: add CSID pixel path Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 34/45] media: qcom: camss: sa8775p: add IFE modules v4.1x Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 35/45] media: qcom: camss: sa8775p: add pixel path resources Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 36/45] media: qcom: camss: sa8775p: add CCM parameters Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 37/45] media: qcom: camss: sa8775p: add LSC parameters Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 38/45] media: qcom: camss: sa8775p: add gamma parameters Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 39/45] media: qcom: camss: sa8775p: add white balance parameters Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 40/45] media: qcom: camss: sa8775p: add AWB BG parameters Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 41/45] media: qcom: camss: create TPG links for IFE Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 42/45] media: qcom: camss: use one lane for TPG internal path Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 43/45] media: qcom: camss: ife: queue params buffers in FIFO order Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 44/45] dt-bindings: media: qcom,qcs8300-camss: add pixel path variant Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-06 22:39 ` [PATCH 45/45] media: qcom: camss: sa8775p: add pixel path resources for QCS8300 Gjorgji.Rosikopulos.gjorgji.rosikopulos
2026-10-07  9:59 ` [PATCH 00/45] media: qcom: camss: add IFE pixel path support Bryan O'Donoghue
2026-10-07 10:03   ` Gjorgji Rosikopulos (Consultant)

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®