[libcamera-devel,v8,0/9] libcamera: Generate unique and stable camera IDs
mbox series

Message ID 20200805104900.2172763-1-niklas.soderlund@ragnatech.se
Headers show
Series
  • libcamera: Generate unique and stable camera IDs
Related show

Message

Niklas Söderlund Aug. 5, 2020, 10:48 a.m. UTC
Hello,

This series aims to make and enforce unique camera names that are static
between system resets. This version is based on the previous version 
with no big changes except fixing up bugs found in the previous review 
cycle.

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@1/imx219@10
- rkisp1
    /base/i2c@ff160000/camera@36
    /base/i2c@ff160000/camera@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.0 Sensor B

Laurent reported a test from a simple pipeline device as:

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

Niklas Söderlund (9):
  libcamera: sysfs: Add helper to lookup sysfs path of a character
    device
  libcamera: sysfs: Add helper to lookup device firmware node path
  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                              |  10 +-
 src/gstreamer/gstlibcameraprovider.cpp        |   4 +-
 src/gstreamer/gstlibcamerasrc.cpp             |   6 +-
 src/libcamera/camera.cpp                      |  51 +++++---
 src/libcamera/camera_controls.cpp             |   2 +-
 src/libcamera/camera_manager.cpp              |  20 ++--
 src/libcamera/camera_sensor.cpp               |  47 ++++++++
 src/libcamera/framebuffer_allocator.cpp       |   2 +-
 src/libcamera/meson.build                     |   1 +
 src/libcamera/pipeline/ipu3/ipu3.cpp          |  14 +--
 .../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  |  75 +++++++++++-
 src/libcamera/pipeline/vimc/vimc.cpp          |   4 +-
 src/libcamera/sysfs.cpp                       | 109 ++++++++++++++++++
 src/libcamera/v4l2_device.cpp                 |  31 +++++
 src/qcam/dng_writer.cpp                       |   5 +-
 src/qcam/main_window.cpp                      |  26 ++---
 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, 403 insertions(+), 91 deletions(-)
 create mode 100644 include/libcamera/internal/sysfs.h
 create mode 100644 src/libcamera/sysfs.cpp