[libcamera-devel] [PATCH 00/11] Support OV7251 in IPU3 pipeline and qcam

Daniel Scally dan.scally at ideasonboard.com
Sun Mar 19 00:40:03 CET 2023


Hello all

This series is an attempt at adding support for the OV7251 camera on Microsoft
Surface platforms to libcamera. The sensor outputs data in MEDIA_BUS_FMT_Y10_1X10
format, which is packed by the CIO2 CSI-2 reciever into V4L2_PIX_FMT_IPU3_Y10. As
far as I know, these data are not intended to run through the Imgu at all. Certainly
the kernel's ipu3-imgu driver does not support that format, but given the simplicity
of the format we can simply use the CIO2 device's capture-capable devnode as the
source of the image data.

To facilitate that, I'm identifying sensors which don't have a format that needs
the Imgu and simply skipping the Imgu/IPA processing in the IPU3 pipeline for
them.

What I don't particularly like about the way that I've done things here is that
the stream only works for the Raw role, which feels wrong. The advantage is that
it's contained within the existing IPU3 pipeline without too much disruption,
but I do wonder whether a separate CIO2-only pipeline might not be better. In
that case PipelineHandlerIPU3::match() would need amending to check whether the
sensor for each "ipu3-csi-2 n" instance needed hooking into the Imgu and not adding
those to the device match if it found that they didn't need it, so that a new
CIO2-only pipeline could claim the media devices. I'd love to hear other people's
thoughts about the best way to handle this.

Thanks
Dan

Daniel Scally (11):
  pipeline: ipu3: Check if sensor supports test pattern control
  include: drm_fourcc: Add Y10 format
  libcamera/formats: Add IPU3_Y10 format
  pipeline: ipu3: Identify sensors that do not need the Imgu
  pipeline: ipu3: Add needsImgu flag to IPU3Frames
  pipeline: ipu3: Support sensors using only CIO2
  pipeline: ipu3: Allow raw-only streams in IPU3 pipeline
  pipeline: ipu3: Support IPU3_Y10 format
  apps: qcam: Add support for IPU3_Y10
  apps: qcam: Remove restriction on raw-only streams
  pipeline: ipu3: Increase maximum connected cameras

 include/linux/drm_fourcc.h             |   3 +
 src/apps/qcam/format_converter.cpp     |  50 +++++
 src/apps/qcam/format_converter.h       |   2 +
 src/apps/qcam/main_window.cpp          |   6 -
 src/libcamera/formats.cpp              |  10 +
 src/libcamera/formats.yaml             |   3 +
 src/libcamera/pipeline/ipu3/cio2.cpp   |  21 +++
 src/libcamera/pipeline/ipu3/cio2.h     |   4 +
 src/libcamera/pipeline/ipu3/frames.cpp |  45 +++--
 src/libcamera/pipeline/ipu3/frames.h   |   3 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp   | 242 ++++++++++++++-----------
 11 files changed, 255 insertions(+), 134 deletions(-)

-- 
2.34.1



More information about the libcamera-devel mailing list