Cover Letter Detail
Show a cover letter.
GET /api/covers/27426/?format=api
{ "id": 27426, "url": "https://patchwork.libcamera.org/api/covers/27426/?format=api", "web_url": "https://patchwork.libcamera.org/cover/27426/", "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": "<20260721145958.68489-1-johannes.goede@oss.qualcomm.com>", "date": "2026-07-21T14:59:50", "name": "[v2,0/7] camss: Add CAMSS pipeline handler", "submitter": { "id": 242, "url": "https://patchwork.libcamera.org/api/people/242/?format=api", "name": "Hans de Goede", "email": "johannes.goede@oss.qualcomm.com" }, "mbox": "https://patchwork.libcamera.org/cover/27426/mbox/", "series": [ { "id": 6070, "url": "https://patchwork.libcamera.org/api/series/6070/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6070", "date": "2026-07-21T14:59:50", "name": "camss: Add CAMSS pipeline handler", "version": 2, "mbox": "https://patchwork.libcamera.org/series/6070/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/27426/comments/", "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 D764BBDE4C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Jul 2026 15:00:07 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AA98A67E63;\n\tTue, 21 Jul 2026 17:00:06 +0200 (CEST)", "from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n\t[205.220.180.131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B1ED36601C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Jul 2026 17:00:04 +0200 (CEST)", "from pps.filterd (m0279869.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n\t66LDg6kD1971464 for <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Jul 2026 15:00:03 GMT", "from mail-qt1-f199.google.com (mail-qt1-f199.google.com\n\t[209.85.160.199])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fj6861fhy-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Jul 2026 15:00:02 +0000 (GMT)", "by mail-qt1-f199.google.com with SMTP id\n\td75a77b69052e-51c21c01cf3so178059561cf.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Jul 2026 08:00:02 -0700 (PDT)", "from shalem\n\t(2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:5bfa:a036:83f0:f9ec])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-c1712a5f837sm615968066b.32.2026.07.21.07.59.59\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 21 Jul 2026 07:59:59 -0700 (PDT)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=qualcomm.com header.i=@qualcomm.com\n\theader.b=\"F/LKO6Zx\"; dkim=pass (2048-bit key;\n\tunprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n\theader.b=\"csBkZ8Ap\"; dkim-atps=neutral", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:date:from:message-id:mime-version\n\t:subject:to; s=qcppdkim1; bh=fOscw1Wh57sgqsKkzp/30KNYpsC16PRBtJR\n\tx7p0NUK8=; b=F/LKO6ZxRjEpltzlLaKF/GpA35NgTF0KdQRwK/Hofjgd7PjmffC\n\t/UnP63eGymVN4vr0F/OVsRGjuNwD0BKgbFcaSMGl78tXkEnz2i3mtDaLrcABByHd\n\tuL+e9HRHWRkO22xYDErmXsYJX5sA07hessNQaiAqhABVvc1uvPmrujpkclXAfaeo\n\tY0+2Zx9dqmrxlTxpDe+efvBI06Iwxt8nwA1gYYTE/cuPTB90hjChnaHBFlckuhrh\n\t5T6fwOV/FydW5XbYxg7n32l2C4nL2lWafgOdccbjahnj1jUa+3rlEAa7zlX45Phc\n\tMB8fQ8ZSYXCbrbPN3BfOuj1Umpps9j1xGpQ==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=oss.qualcomm.com; s=google; t=1784646002; x=1785250802;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to:content-type;\n\tbh=fOscw1Wh57sgqsKkzp/30KNYpsC16PRBtJRx7p0NUK8=;\n\tb=csBkZ8ApLfKaZgVfMFHY7swQ6Zl8h0rkGxJ63GMZtiLRpV+C7J1ljZINDZC8e31VJW\n\th3qlY6BXl9VhU2LEeWgxiovJBjBSNVOjHrHMt4NeWJp4bJhiWc+Pa+prYywdDjhBuoZp\n\traixpTVTC7WRrc93XHsCGqx2Dnw2bLsbqPva/CML3FRd8ZG+8kLtp3OFu2BGx1qjMgPn\n\tYtvGmcxZSvjtpdOmQdZe1g3vrJvNRftBwwYo9girEayW9Axjx/nHPxyB2mRbOuKMYWve\n\tnbmZ600LFzNy/cXsenjaRE5lDhxKXiaianUeIvmWzssowsP4HbLXEqR8twvcxdcI9yOk\n\ttf5Q==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1784646002; x=1785250802;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to:content-type;\n\tbh=fOscw1Wh57sgqsKkzp/30KNYpsC16PRBtJRx7p0NUK8=;\n\tb=FTaepB8g+Au+0mxNLQ88oFAKPF0NPN8FfU+s1TQ+r+pbpPNMD3to2vYBUO/i9gvnHc\n\tS3h3w/clz7GYwURY2m9P3FlE7oALL6md9kj0q2ukrWFzyanqcNeKuAerwUUhwIXJEzRP\n\taNI7KYv0Vcr0SlkjzwlL3vKT1Akg2crpoFBUGnYe5apKB419726iTtyOKeMXFdaliQWN\n\tQ0fqdFOh7sCjZAD72WqYTQfZb5NArc9IbpjwtV9rR7Jye2OkL4QV7iMfHdDYZ8ItSmh6\n\teJNPVEqeevCTFmxRbGTwuowO1dFxI2XFcYZ9uRsLxoH+EawNhVJxry6c8JCRH021L74X\n\tzXng==", "X-Gm-Message-State": "AOJu0YwuLlgwnQ3+jGuwvXPpBgeA7Ho3NSZmtkc+M6/ebCzn1YPeMrBd\n\tqb+HNd07Even+1yeD6V8vUarTWbH2e7sdky8Mj+67GUeA0LBNEuMRE54klThZIhVdwGWW78/qfh\n\t/QmrhXQ6bVDqkygNc9Xjc4NSJOJThRyCC5DO4xH+KK2i++hfvPEQyLAlsnRlQHoo3pqqj6cDNKF\n\tcl3IiFqlbf", "X-Gm-Gg": "AfdE7cnV7ZQ4f6YWank52b3lUxEI0LJAQ9yegmC1DzoT0qQh/KnpSWze2swqnL04RK2\n\tZzki6DRN10Y7GxPkQ2KXFJOU8S5M7TtD1ojBzbiPqiq590oHGYKx6csy4x1vG6BCx2/FQjhN5Lk\n\tWNjPuhQ3kDoRlPJvLQ24NMdTbzNS/4froqJLgaXGPdRvWo0FzhqJ73nHSjP2waOpkcxS37+DA38\n\tgfyTijPnqejnayRbFkPcvCggp3p5bYrh9nJAr3/zdPePS/5aAbVPTtoxnximvXGzI2DSzuIWtMA\n\tjZ6wZruUR3ei6Y5leAfzG4qM3L1N0wKfLUTT8FalM/MVkS+zhtIc9FWqojkMDoegN0VhUD1vepk\n\tOjjsZCJJRP6S7O0kYo+WnzJFFkeut+SBvbTxxDb63luOvIZlZh+fR5szWDl7/zfFeF5qem6Efd/\n\thFSO3JgUw5c3V39V0=", "X-Received": [ "by 2002:a05:622a:4110:b0:51a:8b64:69e0 with SMTP id\n\td75a77b69052e-5213d2b7109mr176630391cf.11.1784646001705; \n\tTue, 21 Jul 2026 08:00:01 -0700 (PDT)", "by 2002:a05:622a:4110:b0:51a:8b64:69e0 with SMTP id\n\td75a77b69052e-5213d2b7109mr176629721cf.11.1784646000444; \n\tTue, 21 Jul 2026 08:00:00 -0700 (PDT)" ], "From": "Hans de Goede <johannes.goede@oss.qualcomm.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Loic Poulain <loic.poulain@oss.qualcomm.com>,\n\tHans de Goede <johannes.goede@oss.qualcomm.com>", "Subject": "[PATCH v2 0/7] camss: Add CAMSS pipeline handler", "Date": "Tue, 21 Jul 2026 16:59:50 +0200", "Message-ID": "<20260721145958.68489-1-johannes.goede@oss.qualcomm.com>", "X-Mailer": "git-send-email 2.55.0", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Proofpoint-Spam-Info": "AW1haW4tMjYwNzIxMDE1OCBTYWx0ZWRfX953/gcDyR6qu\n\ticfx14faR8Bk+VEFXGtVTuaYbdaO7rxxzvTh18DzAzr6sXdRcU1E1DoTpAcnSpr2Fpo6NcUEG9g\n\tXAlTWehQHc+Y67uLOGEErRPOJPaeIxA=", "X-Proofpoint-ORIG-GUID": "0c7pXv6p1b7FQ2NsWibsVseFjVE6Vi1w", "X-Proofpoint-GUID": "0c7pXv6p1b7FQ2NsWibsVseFjVE6Vi1w", "X-Authority-Analysis": "v=2.4 cv=X75i7mTe c=1 sm=1 tr=0 ts=6a5f8972 cx=c_pps\n\ta=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=RAioF0-LDSMA:10\n\ta=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22\n\ta=_glEPmIy2e8OvE2BGh3C:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8\n\ta=YAyIRdgMAAAA:8\n\ta=NEAV23lmAAAA:8 a=RVVoqv6p0WQgywuZv4gA:9 a=kacYvNCVWA4VmyqE58fU:22\n\ta=o1rO4XtwZBNj6n05oSJ_:22", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNzIxMDE1OCBTYWx0ZWRfXyJGM2cNkxoYZ\n\tmikPM4vnsy4RyhdqBsaF9RD4CjUl6ek77/1eQ48Q31ipxBbl30PPZUPnj5OFoNiP4XKjeohUdFp\n\tAC3DRXOOtDY9SzrW0vDlNoNMzOmJJx/duCm+kJcnEwepf4hGS0t/n53VRP7peG1IVYs5M5zSGwU\n\taiW3A971Geetch+t4lCmhYMkPQfbQgi9RRnHX6uaaf0ptflqmkCyXXjyaTs0pm1ds5kOhNXeXHw\n\t2DK188FwWzoGE5lini6QTxZVAcKX1nxRXwWHEX0bjBaCmeVtbCsvjVxNWIWiqne+p1NLRAimWhH\n\ts5sNBvNbmj6HKVJwNShrCoqa/TqlbOCU9IbKVqCmT42OtRsigV1x8eoOqHbL/5v7cgXSKwMSkzK\n\tyrPZQ7YqM7IcuNAVBJbAFP/TIhmE2ptxN1xUD65eISykdB+LCBNOBMIa6yMUayx2tBz8mzbqbAi\n\tlXoASLPGd2izugt+ebA==", "X-Proofpoint-Virus-Version": "vendor=baseguard\n\tengine=ICAP:2.0.293, Aquarius:18.0.1143, Hydra:6.1.134,\n\tFMLib:17.12.100.49\n\tdefinitions=2026-07-21_03,2026-07-20_03,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\timpostorscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015\n\tspamscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 suspectscore=0\n\tpriorityscore=1501\n\tclassifier=typeunknown authscore=0 authtc= authcc= route=outbound\n\tadjust=0\n\treason=mlx scancount=1 engine=8.22.0-2606150000\n\tdefinitions=main-2607210158", "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>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Hi All,\n\nAdd a CAMSS pipeline handler. This series consists of 2 parts:\n\n1. A basic version which basically replaces the simple pipeline handler\ncamss support, while still using the softISP. Compared to the simple\npipeline handler this gains us support for streaming from multiple\ncameras at once (through pipewire) since this assigns unique csid and\nvfe resources to each camera rather then always using csid0 + vfe0 for\nall cameras.\n\nThis consists of patches 1-4 and this is necessary to support\nsimultaneous streaming of multiple cameras on the Arduino UNO Q and\nthe upcoming Arduino VENTUNO Q, as such we would like to get this\nupstream ASAP (*).\n\n2. Patches 5-7 add support for the Offline Processing Engine (OPE) offline\nISP found on the Dragonwing QRB2210 (Agatti) SoC. This is based on the v4\nOPE kernel patch-series:\nhttps://lore.kernel.org/linux-media/20260710-camss-isp-ope-v4-0-51207a0319d8@oss.qualcomm.com/\n\nThis part of the patch series is more in a RFC status, because:\na) The kernel patches are not yet accepted so the uAPI might still change\nb) ATM it (ab)uses the softISP IPA instead of using its own IPA, the plan\nis to change this for the next version, based on the ongoing libipa rework\non the list.\n\nChanges since the v1/RFC (**) series:\n- Drop fine grained locking support. This is replaced with using pipewire\n to allow simultaneous access to multiple cameras while still having only\n a single libcamera instance access, removing the need for fine grained\n locking\n- Add 2 small preperation patches + a camss_util.cpp file with some helper\n functions\n- The OPE pipeline-handling is now based on the v4 kernel series which\n introduces a proper media-controller centric ISP driver with multiple\n input queues (raw-frames + parameters) replacing the previous M2M based\n proof-of-concept kernel driver\n- Add linux/camss-config.h+camss_params.h using the generic ISP parameters\n framework (these are subject to change until the kernel driver is merged)\n\nSince this will replace the simple pipeline handler support more\ntesting on other platforms with different camera setups, e.g. various\nphones would be appreciated to avoid e.g. postmarketOS camera support\nregressing when this lands.\n\nRegards,\n\nHans\n\n\n*) This still depends on:\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=5940 +\nhttps://patchwork.libcamera.org/patch/26750/\n\nA branch with this series + the pre-requisite patches is here:\nhttps://github.com/jwrdegoede/libcamera/commits/camss_pipeline_v2/\n\nWe really need to get this resolved, I see that Jacopo has also reposted\nthis in:\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=6003\n\nSince that series also relies on having a different way to select which\nIPA to load then matching by the pipeline name.\n\nI've an idea to move this closer to what Laurent wants to see without\nneeding to make significant changes to the Rasberry Pi code. I'll to get\nsomething posted this week.\n\n**) https://lists.libcamera.org/pipermail/libcamera-devel/2026-April/058087.html\n\n\nHans de Goede (7):\n libcamera: V4L2Subdevice: Add whence argument to [get|set]Selection()\n software_isp: Rename simple IPA setIspParams signal to paramsComputed\n camss: Add cammss utility functions\n camss: Add camss pipeline handler\n camss: Add include/linux/camss-config.h\n camss: Add camss_params.h\n camss: Add Offline Processing Engine ISP support\n\n .../internal/software_isp/software_isp.h | 2 +-\n include/libcamera/internal/v4l2_subdevice.h | 14 +-\n include/libcamera/ipa/soft.mojom | 2 +-\n include/linux/camss-config.h | 161 ++++\n meson.build | 1 +\n meson_options.txt | 1 +\n src/ipa/meson.build | 1 +\n src/ipa/simple/soft_simple.cpp | 2 +-\n src/libcamera/pipeline/camss/camss.cpp | 696 ++++++++++++++++++\n src/libcamera/pipeline/camss/camss_csi.cpp | 570 ++++++++++++++\n src/libcamera/pipeline/camss/camss_csi.h | 131 ++++\n src/libcamera/pipeline/camss/camss_frames.cpp | 155 ++++\n src/libcamera/pipeline/camss/camss_frames.h | 71 ++\n src/libcamera/pipeline/camss/camss_isp.cpp | 26 +\n src/libcamera/pipeline/camss/camss_isp.h | 62 ++\n .../pipeline/camss/camss_isp_ope.cpp | 679 +++++++++++++++++\n src/libcamera/pipeline/camss/camss_isp_ope.h | 120 +++\n .../pipeline/camss/camss_isp_soft.cpp | 226 ++++++\n src/libcamera/pipeline/camss/camss_isp_soft.h | 56 ++\n src/libcamera/pipeline/camss/camss_params.h | 67 ++\n src/libcamera/pipeline/camss/camss_util.cpp | 39 +\n src/libcamera/pipeline/camss/camss_util.h | 19 +\n src/libcamera/pipeline/camss/meson.build | 13 +\n src/libcamera/pipeline/simple/simple.cpp | 1 -\n src/libcamera/software_isp/software_isp.cpp | 4 +-\n src/libcamera/v4l2_subdevice.cpp | 20 +-\n 26 files changed, 3121 insertions(+), 18 deletions(-)\n create mode 100644 include/linux/camss-config.h\n create mode 100644 src/libcamera/pipeline/camss/camss.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_csi.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_csi.h\n create mode 100644 src/libcamera/pipeline/camss/camss_frames.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_frames.h\n create mode 100644 src/libcamera/pipeline/camss/camss_isp.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_isp.h\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_ope.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_ope.h\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_soft.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_soft.h\n create mode 100644 src/libcamera/pipeline/camss/camss_params.h\n create mode 100644 src/libcamera/pipeline/camss/camss_util.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_util.h\n create mode 100644 src/libcamera/pipeline/camss/meson.build" }