[libcamera-devel,v3,0/9] Enumerate CameraLens by following sensor's ancillary links
mbox series

Message ID 20211207224512.753979-1-djrscally@gmail.com
Headers show
  • Enumerate CameraLens by following sensor's ancillary links
Related show


Daniel Scally Dec. 7, 2021, 10:45 p.m. UTC
Hello All

This series is an attempt at making the incoming VCM support a little more
agnostic, by following the new style of media links to find VCMs connected to
Sensors in libcamera. Now that Han-Lin's series is merged this is based on top
of master, plus Kate's v3 [1]

The general principle of the new links is an entity to entity link which will
be connected by the kernel between a sensor's entity and an entity for a VCM
device, where those entities have a fwnode match based on the "lens-focus"
property against the sensor. These links are then discovered by libcamera and
followed to create an instance of the CameraLens class.

With the CameraLens available to carry out the controlling of the VCM, I have
pushed the controls to the pipeline handler.

Series changes in v3: 

	- New patch #2 which splits out from #3
	- New patch #7, which renames the existing ctrls_ field to sensorCtrls_
	to make clear the distinction.


[1] https://patchwork.libcamera.org/patch/15011/

Daniel Scally (9):
  libcamera: Add members to MediaEntity to support ancillary entities
  include: linux: Add MEDIA_LNK_FL_ANCILLARY_LINK
  libcamera: media_device: Handle ancillary links in populateLinks()
  libcamera: camera_sensor: Discover VCMs through ancillary links
  libcamera: camera_lens: Add function to fetch subdev controls
  libcamera: ipa: Add lens control member to ipu3 ipa interface
  libcamera: ipa: Rename ctrls_ member
  libcamera: ipu3: Pass lens controls to config info
  ipa: ipu3: Send lens controls to pipeline handler

 include/libcamera/internal/camera_lens.h   |  4 ++
 include/libcamera/internal/camera_sensor.h |  1 +
 include/libcamera/internal/media_object.h  |  4 ++
 include/libcamera/ipa/ipu3.mojom           |  1 +
 include/linux/media.h                      |  1 +
 src/ipa/ipu3/ipu3.cpp                      | 32 ++++++++-----
 src/libcamera/camera_lens.cpp              | 11 +++++
 src/libcamera/camera_sensor.cpp            | 39 +++++++++++++++
 src/libcamera/media_device.cpp             | 55 +++++++++++++++-------
 src/libcamera/media_object.cpp             | 15 ++++++
 src/libcamera/pipeline/ipu3/ipu3.cpp       |  5 ++
 11 files changed, 141 insertions(+), 27 deletions(-)