From patchwork Mon Aug 3 21:17:24 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: 9154 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 4EF5FBD87A for ; Mon, 3 Aug 2020 21:18:01 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id C0A7E6194A; Mon, 3 Aug 2020 23:18:00 +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 72C1260398 for ; Mon, 3 Aug 2020 23:17:59 +0200 (CEST) X-Halon-ID: 99e78a39-d5ce-11ea-86ee-0050569116f7 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de [84.172.82.168]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA id 99e78a39-d5ce-11ea-86ee-0050569116f7; Mon, 03 Aug 2020 23:16:34 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Mon, 3 Aug 2020 23:17:24 +0200 Message-Id: <20200803211733.1037019-1-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v6 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 IDs 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 IDs 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@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 VIMC Sensor B Niklas Söderlund (9): libcamera: device_enumerator: Add method to lookup sysfs path libcamera: device_enumerator_udev: Add specialization for sysfs path libcamera: v4l2_device: Add method to lookup device path libcamera: utils: Add method to lookup firmware ID in sysfs libcamera: camera_sensor: Generate a 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 | 3 + .../libcamera/internal/device_enumerator.h | 2 + .../internal/device_enumerator_udev.h | 2 + include/libcamera/internal/utils.h | 2 + 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 | 40 ++++++++++ src/libcamera/device_enumerator.cpp | 14 ++++ src/libcamera/device_enumerator_udev.cpp | 24 ++++++ src/libcamera/framebuffer_allocator.cpp | 2 +- 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 | 76 ++++++++++++++++++- src/libcamera/pipeline/vimc/vimc.cpp | 23 +++++- src/libcamera/utils.cpp | 61 +++++++++++++++ src/libcamera/v4l2_device.cpp | 27 +++++++ src/qcam/dng_writer.cpp | 4 +- src/qcam/main_window.cpp | 18 ++--- src/v4l2/v4l2_camera_proxy.cpp | 2 +- test/camera-sensor.cpp | 3 +- test/libtest/vimc_sensor_test.h | 29 +++++++ test/pipeline/ipu3/ipu3_pipeline_test.cpp | 2 +- test/pipeline/rkisp1/rkisp1_pipeline_test.cpp | 2 +- .../v4l2_videodevice_test.cpp | 4 +- 33 files changed, 387 insertions(+), 81 deletions(-) create mode 100644 test/libtest/vimc_sensor_test.h