Show a patch.

GET /api/patches/18721/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 18721,
    "url": "https://patchwork.libcamera.org/api/patches/18721/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/18721/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20230609-empty-devnode-v1-1-e2c37c7b7dc9@skidata.com>",
    "date": "2023-06-09T05:58:16",
    "name": "[libcamera-devel] libcamera: device_enumerator: ensure deviceNode is not empty",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "6b95a506d0b2c472c1dff0e3a062ff7a8664d484",
    "submitter": {
        "id": 163,
        "url": "https://patchwork.libcamera.org/api/people/163/?format=api",
        "name": "Benjamin Bara",
        "email": "bbara93@gmail.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/18721/mbox/",
    "series": [
        {
            "id": 3915,
            "url": "https://patchwork.libcamera.org/api/series/3915/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3915",
            "date": "2023-06-09T05:58:16",
            "name": "[libcamera-devel] libcamera: device_enumerator: ensure deviceNode is not empty",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/3915/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/18721/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/18721/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>",
        "X-Original-To": "parsemail@patchwork.libcamera.org",
        "Delivered-To": "parsemail@patchwork.libcamera.org",
        "Received": [
            "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 86A00C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  9 Jun 2023 05:58:22 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BDD8361E69;\n\tFri,  9 Jun 2023 07:58:21 +0200 (CEST)",
            "from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com\n\t[IPv6:2a00:1450:4864:20::62a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4057861E4D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  9 Jun 2023 07:58:20 +0200 (CEST)",
            "by mail-ej1-x62a.google.com with SMTP id\n\ta640c23a62f3a-9745baf7c13so213802766b.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 08 Jun 2023 22:58:20 -0700 (PDT)",
            "from [127.0.1.1] ([91.230.2.244]) by smtp.gmail.com with ESMTPSA id\n\ty21-20020a170906471500b00974564fa7easm853681ejq.5.2023.06.08.22.58.18\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 08 Jun 2023 22:58:19 -0700 (PDT)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1686290301;\n\tbh=hUjcz+JotkNmiVSBTn2a6SkiTlUD2e3xCOhKgETAjuI=;\n\th=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:Cc:From;\n\tb=0qNzboQsJIXv0bRwaJaPJJFam5lBtByCpVG7XiX5jAUj3MWzjvhjiSN5MGl0SBNl+\n\tFXl3OKHIDM0+3IE9HKsRLSOcEXVGWWnM30O4vtG9l7iLoG8oXcZ2RRj4g/RD8+Y1/A\n\t+cjVLZFOgU4YTupZLge954K4C7QpvRk5zn/oc/x0cq92Aq1LnC05GW5j20cpZ1R6wV\n\tQs0zDNgXig+53uyupCtwqmYB2sHfvZ0+twEeS4ifOTuZnYv+P9U9ubSrWn9JSgYgO8\n\tJAAA8yhMMG5cnHicfYIiyktao7eDPeT65OvZ8olvZyR0qPg93CuNV2TlRo4xOMCtXy\n\toR49F8MvYs0Cg==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20221208; t=1686290299; x=1688882299;\n\th=cc:to:message-id:content-transfer-encoding:mime-version:subject\n\t:date:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Ezb00DyzjDxbAEuL5Up5vHyUtGg3rVvktPuyFH+G06o=;\n\tb=DZpeIHIk3d6r6j+4Nl+27QA+8JHIFVBlApSoUfPjfIIY2/rMTbImfSdgUi+BOjHzlL\n\ttH6+NiA0zpe8W2ww/kj7PIy++KGiZdNYLC2v9QHiIldfYotfHZKwpNyjXuNp1j7uGAmR\n\tkoU74UH2zZgBZ6QfP2N3OriVvs/rzZnpV6wFauFlKODTKV/kEuDGDbghvX+Gz8W7CfA+\n\tPOx5R6a1SRTlaqXTvvxc8tBK0jNVAR0U28T5Xf/qHgWCbHbxve0bzRqfqeMjstyyqZH0\n\tcnLUJVILcjy1Yvb7O1lkLY+/4Sbs4X26DZEFbw00o/UlOydUvZgZTOAnLE6l3AD3SR/Q\n\t83RQ=="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"DZpeIHIk\"; dkim-atps=neutral",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20221208; t=1686290299; x=1688882299;\n\th=cc:to:message-id:content-transfer-encoding:mime-version:subject\n\t:date:from:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=Ezb00DyzjDxbAEuL5Up5vHyUtGg3rVvktPuyFH+G06o=;\n\tb=Gia6tg9WzAIsLrwu93fWg7GzDfA2odOzQEPi0ecjlKDJIOcLGVlMwYvLYkeLmtJFgR\n\tFEFu7kbkKV0TUxTfLk8cI83JmzcSDy2EpE8J/g6qsos9Me6avHcDg3k/aeykvZmvu120\n\titDSLs/m5aIFFafKe/UhO4Zdmqfqvmv8L0KXWjDhz4LxADekmS40rKF3cgHe58CGnsLE\n\tjOuUZZo4tk5Dz76WHLpj6Uxm3yLwYCy5bFLCJpkogaYhR/c2V9/M4QKc4YZ59Yjs5D4o\n\tGcQzDzMPXlLYjZVLn8xC4ha2TEEtkQ2ESPykY4+VsC0NgX6KAIfnJV/FragxBQqijwVN\n\tLh+A==",
        "X-Gm-Message-State": "AC+VfDy52hVavkDjI/Br5izb/+HDDg23cXbc912JS91BIjUrzTK4DOzn\n\t+RHD3bJstmqNJN+OCtd5pjiiW71ZwFY=",
        "X-Google-Smtp-Source": "ACHHUZ5QYK1aHJsRMg3tR6DDHhLglZ5GaXpOUBi9q9qIWJYgiR2ryrzGAz5UHwoNDUQTX7sT2zvOfA==",
        "X-Received": "by 2002:a17:907:84a:b0:96b:4ed5:a1c9 with SMTP id\n\tww10-20020a170907084a00b0096b4ed5a1c9mr683675ejb.51.1686290299277; \n\tThu, 08 Jun 2023 22:58:19 -0700 (PDT)",
        "Date": "Fri, 09 Jun 2023 07:58:16 +0200",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "7bit",
        "Message-Id": "<20230609-empty-devnode-v1-1-e2c37c7b7dc9@skidata.com>",
        "X-B4-Tracking": "v=1; b=H4sIAHi/gmQC/x2NwQqDMBAFf0X23IU0Skr7K6WHmH2tORhlV6RF/\n\tHdjj8MwzEYGzTB6NBsp1mx5KhWul4bSEMsHnKUyeedbF9ydMc7LjwVrmQTcBhEfulsSOKpNHw3\n\tcayxpOKsx2gI9xax45+9/9Hzt+wGcqAY1eAAAAA==",
        "To": "libcamera-devel@lists.libcamera.org",
        "X-Mailer": "b4 0.12.2",
        "Subject": "[libcamera-devel] [PATCH] libcamera: device_enumerator: ensure\n\tdeviceNode is not empty",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "From": "Benjamin Bara via libcamera-devel <libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Benjamin Bara <bbara93@gmail.com>",
        "Cc": "Benjamin Bara <benjamin.bara@skidata.com>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "From: Benjamin Bara <benjamin.bara@skidata.com>\n\nWhen activating both ISP nodes on the i.MX8MP, but only connecting one\ncamera sensor, libcamera aborts because it couldn't find the chosen\nentity's device node:\n\n[37:54:40.779902250] [3631] DEBUG DeviceEnumerator device_enumerator.cpp:252 Added device /dev/media1: rkisp1\n[37:54:40.780196750] [3631] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media0 found\n[37:54:40.780237875] [3631] DEBUG DeviceEnumerator device_enumerator.cpp:252 Added device /dev/media0: rkisp1\n[37:54:40.780505125] [3631] DEBUG Camera camera_manager.cpp:152 Found registered pipeline handler 'PipelineHandlerRkISP1'\n[37:54:40.780599875] [3631] DEBUG DeviceEnumerator device_enumerator.cpp:312 Successful match for media device \"rkisp1\"\n[37:54:40.780731375] [3631] ERROR V4L2 v4l2_device.cpp:93 'rkisp1_isp': Failed to open V4L2 device '': No such file or directory\n\nFix this by skipping empty device nodes:\n\n[37:49:05.172672000] [3603] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media1 found                       [37:49:05.172720625] [3603] DEBUG DeviceEnumerator device_enumerator.cpp:256 Added device /dev/media1: rkisp1                                               [37:49:05.172973875] [3603] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media0 found                       [37:49:05.173012125] [3603] DEBUG DeviceEnumerator device_enumerator.cpp:256 Added device /dev/media0: rkisp1                                               [37:49:05.173281625] [3603] DEBUG Camera camera_manager.cpp:152 Found registered pipeline handler 'PipelineHandlerRkISP1'                                   [37:49:05.173376875] [3603] DEBUG DeviceEnumerator device_enumerator.cpp:107 Skip rkisp1_isp: no device node                                                [37:49:05.173414375] [3603] DEBUG DeviceEnumerator device_enum\n erator.cpp:316 Successful match for media device \"rkisp1\"                                     [37:49:05.173671250] [3603] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video1[15:cap]: Opened device platform:rkisp1: rkisp1: rkisp1_stats                    [37:49:05.173775125] [3603] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video2[16:out]: Opened device platform:rkisp1: rkisp1: rkisp1_params                   [37:49:05.173880500] [3603] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video0[18:cap]: Opened device platform:rkisp1: rkisp1: rkisp1\n\nSigned-off-by: Benjamin Bara <benjamin.bara@skidata.com>\n---\n src/libcamera/device_enumerator.cpp | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\n\n---\nbase-commit: 0ee9339331c648232e87d2de2ccd5a92cc61cab2\nchange-id: 20230609-empty-devnode-36dd2647cde0\n\nBest regards,",
    "diff": "diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp\nindex f2e055de..f2d943d1 100644\n--- a/src/libcamera/device_enumerator.cpp\n+++ b/src/libcamera/device_enumerator.cpp\n@@ -100,9 +100,13 @@ bool DeviceMatch::match(const MediaDevice *device) const\n \t\tbool found = false;\n \n \t\tfor (const MediaEntity *entity : device->entities()) {\n-\t\t\tif (name == entity->name()) {\n+\t\t\tif (name == entity->name() && !entity->deviceNode().empty()) {\n \t\t\t\tfound = true;\n \t\t\t\tbreak;\n+\t\t\t} else if (name == entity->name()) {\n+\t\t\t\tLOG(DeviceEnumerator, Debug)\n+\t\t\t\t\t<< \"Skip \" << entity->name()\n+\t\t\t\t\t<< \": no device node\";\n \t\t\t}\n \t\t}\n \n",
    "prefixes": [
        "libcamera-devel"
    ]
}