From patchwork Wed Aug 5 10:48:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 9207 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id ECB2ABD86F for ; Wed, 5 Aug 2020 10:49:12 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 615ED60564; Wed, 5 Aug 2020 12:49:12 +0200 (CEST) Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D25496039D for ; Wed, 5 Aug 2020 12:49:10 +0200 (CEST) X-Halon-ID: 4811e39b-d709-11ea-a39b-005056917f90 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de [84.172.82.168]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA id 4811e39b-d709-11ea-a39b-005056917f90; Wed, 05 Aug 2020 12:49:09 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Wed, 5 Aug 2020 12:48:51 +0200 Message-Id: <20200805104900.2172763-1-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v8 0/9] libcamera: Generate unique and stable camera IDs X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 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