[libcamera-devel] [PATCH v7 0/9] libcamera: Generate unique and stable camera IDs

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Aug 4 21:47:12 CEST 2020


Hi Niklas,

Thank you for the patches.

On Tue, Aug 04, 2020 at 06:13:49PM +0200, Niklas Söderlund wrote:
> Hello,
> 
> This series aims to make and enforce unique camera names that are static
> between system resets. This version is a complete rewrite of previous 
> versions and centers around on firmware descriptions. Biggest chance in 
> this version is that the UVC ides are reworked from scratch.
> 
> Before this series camera names on different systems looked like this (I
> do not have access to a simple pipeline device):
> 
> - ipu3
>     ov13858 8-0010
>     ov5670 10-0036
> - raspberrypi
>     imx219
> - rkisp1
>     ov5695 7-0036
>     ov2685 7-003c
> - uvcvideo
>     Venus USB2.0 Camera: Venus USB2
>     Logitech Webcam C930e
> - vimc
>     VIMC Sensor B
> 
> With this series applied camera names on the same systems:
> 
> - ipu3
>     \_SB_.PCI0.I2C2.CAM0
>     \_SB_.PCI0.I2C4.CAM1
> - raspberrypi
>     base/soc/i2c0mux/i2c at 1/imx219 at 10
> - rkisp1
>     base/i2c at ff160000/camera at 36
>     base/i2c at ff160000/camera at 3c
> - uvcvideo
>     \_SB_.PCI0.RP05.PXSX-2.1.1:1.0-0ac8:3420
>     \_SB_.PCI0.RP05.PXSX-2.4:1.0-046d:0843
> - vimc
>     platform:vimc Sensor B

That's really nice :-)

I've tested the patches with the simple pipeline handler:

- Before: imx296 2-0036
- After: base/soc/bus at 30800000/i2c at 30a40000/camera at 36

> Niklas Söderlund (9):
>   libcamera: sysfs: Add new namespace to interact with sysfs
>   libcamera: sysfs: Add method to lookup firmware ID
>   libcamera: v4l2_device: Add method to lookup device path
>   libcamera: camera_sensor: Generate a sensor ID
>   libcamera: camera_sensor: Add accessors for sensor ID
>   libcamera: pipelines: Use sensor ID as camera name
>   libcamera: pipeline: uvcvideo: Generate unique camera names
>   libcamera: camera: Rename name() to id()
>   libcamera: camera_manager: Enforce unique camera IDs
> 
>  include/libcamera/camera.h                    |   6 +-
>  include/libcamera/internal/camera_sensor.h    |   4 +
>  include/libcamera/internal/meson.build        |   1 +
>  include/libcamera/internal/sysfs.h            |  24 ++++
>  include/libcamera/internal/v4l2_device.h      |   1 +
>  src/android/camera_device.cpp                 |   4 +-
>  src/cam/main.cpp                              |   8 +-
>  src/gstreamer/gstlibcameraprovider.cpp        |   4 +-
>  src/gstreamer/gstlibcamerasrc.cpp             |   6 +-
>  src/libcamera/camera.cpp                      |  40 ++++---
>  src/libcamera/camera_controls.cpp             |   2 +-
>  src/libcamera/camera_manager.cpp              |  20 ++--
>  src/libcamera/camera_sensor.cpp               |  48 ++++++++
>  src/libcamera/framebuffer_allocator.cpp       |   2 +-
>  src/libcamera/meson.build                     |   1 +
>  src/libcamera/pipeline/ipu3/ipu3.cpp          |  12 +-
>  .../pipeline/raspberrypi/raspberrypi.cpp      |   7 +-
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp      |  16 +--
>  src/libcamera/pipeline/simple/simple.cpp      |   2 +-
>  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  |  77 ++++++++++++-
>  src/libcamera/pipeline/vimc/vimc.cpp          |   4 +-
>  src/libcamera/sysfs.cpp                       | 105 ++++++++++++++++++
>  src/libcamera/v4l2_device.cpp                 |  28 +++++
>  src/qcam/dng_writer.cpp                       |   4 +-
>  src/qcam/main_window.cpp                      |  18 +--
>  src/v4l2/v4l2_camera_proxy.cpp                |   2 +-
>  test/camera/buffer_import.cpp                 |   2 +-
>  test/camera/capture.cpp                       |   2 +-
>  test/camera/configuration_default.cpp         |   2 +-
>  test/camera/configuration_set.cpp             |   2 +-
>  test/camera/statemachine.cpp                  |   2 +-
>  test/controls/control_info_map.cpp            |   2 +-
>  test/controls/control_list.cpp                |   2 +-
>  test/pipeline/ipu3/ipu3_pipeline_test.cpp     |   2 +-
>  test/pipeline/rkisp1/rkisp1_pipeline_test.cpp |   2 +-
>  test/serialization/serialization_test.h       |   2 +-
>  36 files changed, 381 insertions(+), 85 deletions(-)
>  create mode 100644 include/libcamera/internal/sysfs.h
>  create mode 100644 src/libcamera/sysfs.cpp
> 

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list