From patchwork Tue Feb 25 21:14:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Weiss X-Patchwork-Id: 13990993 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9B7C6C021BE for ; Tue, 25 Feb 2025 21:15:09 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 084A810E10E; Tue, 25 Feb 2025 21:15:04 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=lucaweiss.eu header.i=@lucaweiss.eu header.b="pbtrWwkA"; dkim-atps=neutral Received: from ahti.lucaweiss.eu (ahti.lucaweiss.eu [128.199.32.197]) by gabe.freedesktop.org (Postfix) with ESMTPS id 753A710E1C9 for ; Tue, 25 Feb 2025 21:15:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lucaweiss.eu; s=s1; t=1740518093; bh=g08GjdWndeD+8Od5WoeqAJLhdg02LWDKIbkAtiqenRA=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=pbtrWwkAFE299XF+2DMLKMDhQgp95omo/FkdqCLBfA6bl4WbePmzuCl7oxVyPcDVL zrv77ZaXN1cCDgkFWD0N7oY1hQPk2miGASM9AcWQ6GueSE4o082gP9qZlX/Qw7nnQT bOun2M0bFDCzutf7mn4cpKVP4L4uH6TAQMa7I694= From: Luca Weiss Date: Tue, 25 Feb 2025 22:14:29 +0100 Subject: [PATCH v2 1/4] dt-bindings: vendor-prefixes: document Shenzhen DJN Optronics Technology MIME-Version: 1.0 Message-Id: <20250225-fp3-display-v2-1-0b1f05915fae@lucaweiss.eu> References: <20250225-fp3-display-v2-0-0b1f05915fae@lucaweiss.eu> In-Reply-To: <20250225-fp3-display-v2-0-0b1f05915fae@lucaweiss.eu> To: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, Neil Armstrong , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Luca Weiss , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=918; i=luca@lucaweiss.eu; h=from:subject:message-id; bh=g08GjdWndeD+8Od5WoeqAJLhdg02LWDKIbkAtiqenRA=; b=owEBbQKS/ZANAwAIAXLYQ7idTddWAcsmYgBnvjLI6Mh3e/cZZMMQq3hcbldXzG82qfhZqWPEV 3wFJf6S7BCJAjMEAAEIAB0WIQQ5utIvCCzakboVj/py2EO4nU3XVgUCZ74yyAAKCRBy2EO4nU3X Vl3sD/wMTs6+IB3h9qvB3lAEBCrXn5gxbD+9pLzy13c4dbL7YGYLn71qXbvXD4e6L9eLzNdNEyq io+rOEuhhXnWD1S2SRQ+QSI/WQp6c+YWBmJ0BCkYzY9vQa9XzmlETHXr2dEzJpE97czJbNIYpRd bgcknY598W6aeQ7EtQnfmzgVT6Fv980+ubfXan+vS+oQaRt+SJbetm8b2OgpUMgI6ftivIChaS1 w79SLMrr1d0oqhCz0IK3PpVZeGqH2w1ujVr6DaXCG2PFiwQQFJg4cAXQJyfH+XptWGToWQCH9Dc 0nfHV5z8NA7f6U916gHj9TEbv0zu6gEUzrJ56C1JmsIxo7SauryPEFKnxw/HDtMHoihZiKw/Bxm W71v++jGgQU9IIjjgwWHY1nS4kS9r+TIE9MT9X51Jwm2hHyj65gQE7mr6R4nq5dxWe+33u2Ff1A KVsZM77UKE/9QvEYSu3ETH1/hmZU9dYHINVkkc30YomIkntqy3+2TL8x47Wl5NqHADqiiWKxUrv kH7hRVK4XgxaIR8egi5jq8FpBHXpR44ZC3tvHEI5/1mDMCa3G4in2lfRTDdLMcgfgLymRK+KY09 GG9WKk0TWOuYdZVmLIpxKGAOfBmtckxLZQX0zftUNbGhuvoxtGJuJiw/RiYNzImt5PlrgOaEyNV G6D1PvZFnh2OPTA== X-Developer-Key: i=luca@lucaweiss.eu; a=openpgp; fpr=BD04DA24C971B8D587B2B8D7FAF69CF6CD2D02CD X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Add the vendor prefix for DJN (http://en.djnlcd.com/). Acked-by: Krzysztof Kozlowski Signed-off-by: Luca Weiss --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index da01616802c76830a520594a69bd6a2e0231df0d..ee2dca4f372263c7a79ea17f4a9411939bd0531a 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -390,6 +390,8 @@ patternProperties: description: Diodes, Inc. "^dioo,.*": description: Dioo Microcircuit Co., Ltd + "^djn,.*": + description: Shenzhen DJN Optronics Technology Co., Ltd "^dlc,.*": description: DLC Display Co., Ltd. "^dlg,.*": From patchwork Tue Feb 25 21:14:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Weiss X-Patchwork-Id: 13990991 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C4E65C021B8 for ; Tue, 25 Feb 2025 21:15:06 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id F274210E091; Tue, 25 Feb 2025 21:15:03 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=lucaweiss.eu header.i=@lucaweiss.eu header.b="6vG/ZXMn"; dkim-atps=neutral Received: from ahti.lucaweiss.eu (ahti.lucaweiss.eu [128.199.32.197]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7451110E061 for ; Tue, 25 Feb 2025 21:15:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lucaweiss.eu; s=s1; t=1740518093; bh=LdSZ4472HWowhbbUl0jFJ+2G25xGFcEEysNTZYR49/E=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=6vG/ZXMnNjfoxEJzIskLk6oRi3uepub2jPhz+z4ahRbyr6+JBWqMp1KP9V5tVh16y 5ZqEjPHQGARfdL/xF7MoGJOonOHJNUSC5Dj43TGuoejeG5kRZSV39Dn/bj7fZOrljN 5gyTxrpzhymLk+HsukJCxt/4+QwvvayegwUOlnv0= From: Luca Weiss Date: Tue, 25 Feb 2025 22:14:30 +0100 Subject: [PATCH v2 2/4] dt-bindings: display: panel: Add Himax HX83112B MIME-Version: 1.0 Message-Id: <20250225-fp3-display-v2-2-0b1f05915fae@lucaweiss.eu> References: <20250225-fp3-display-v2-0-0b1f05915fae@lucaweiss.eu> In-Reply-To: <20250225-fp3-display-v2-0-0b1f05915fae@lucaweiss.eu> To: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, Neil Armstrong , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Luca Weiss X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2267; i=luca@lucaweiss.eu; h=from:subject:message-id; bh=LdSZ4472HWowhbbUl0jFJ+2G25xGFcEEysNTZYR49/E=; b=owEBbQKS/ZANAwAIAXLYQ7idTddWAcsmYgBnvjLJ/PdbuH0/bpKrqFb4TooGBfDRlKdlKo8tv ajUYSxwmkOJAjMEAAEIAB0WIQQ5utIvCCzakboVj/py2EO4nU3XVgUCZ74yyQAKCRBy2EO4nU3X VmAiEACExQx8piZN+68FzJclFiPj+KLqEehDLZy+wWGXF5iKaj5yQQFQJm9C1AoF8rcvZDkBdYx L0R6InVum2CMXOpG5ZX80VTZ8DzvFtTjwkfnrSOnLo7oCILSWTnfncPdK/qzLEI5dJh7W5fj71U lzRBinQ0tY7dWhJh/BnWqBF5plJBqvCTygn1ntIsh6gG3SB3XQX0TKgAoY44AQbkSnkQPRkOsaQ zYtetfSZMdlig3pqPkkdkLBDyE/aw0OObq6nNiExdbggUKPzkeJKAeegFxsGH/ruqaW0kqqOXKC qB1vGE3G5zjmH6defC8qMwbRidhlsgLDtFXQEQr9C4GZ/E4DPm3LT17sjSptUjqDSHS9JK1gWdB oroXArpX44Evgj4C1jTE6VdnVk4Q+wEMoSLuJh1NkVK3aEnvLuYz1xfAW23bXIRLdHyn8PME/Bj pMI7HM1fyuXemU1Hmz0svB5hTSfvS7Lw90LTQBhskK0OOdYMlwquLrrCShs8X9nKQvw6SkT/ZIt rNXdONbPDQuzolIkg1y7JvHUuWTaEPzDKrlVqdzaiXGGpvBSAAp1GeD0nFl63LfhZfqRIAcTiIS T0/IugVjCtwle4wE4e8XmcIrtFzZW1YOs+4m0Ep433ckWgZSrcYTiCXn8LtLbx41uFbNBZfVnuv ig/WDUMs+D1mRfw== X-Developer-Key: i=luca@lucaweiss.eu; a=openpgp; fpr=BD04DA24C971B8D587B2B8D7FAF69CF6CD2D02CD X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Himax HX83112B is a display driver IC used to drive LCD DSI panels. Describe it and the Fairphone 3 panel (98-03057-6598B-I) from DJN using it. Signed-off-by: Luca Weiss --- .../bindings/display/panel/himax,hx83112b.yaml | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx83112b.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx83112b.yaml new file mode 100644 index 0000000000000000000000000000000000000000..54c555c18bbe7656ec625b20e28a53fde5fe578b --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/himax,hx83112b.yaml @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/himax,hx83112b.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Himax HX83112B-based DSI display panels + +maintainers: + - Luca Weiss + +description: + The Himax HX83112B is a generic DSI Panel IC used to control + LCD panels. + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + contains: + const: djn,98-03057-6598b-i + + reg: + maxItems: 1 + + iovcc-supply: + description: I/O voltage rail + + vsn-supply: + description: Positive source voltage rail + + vsp-supply: + description: Negative source voltage rail + + port: true + +required: + - compatible + - reg + - reset-gpios + - iovcc-supply + - vsn-supply + - vsp-supply + - port + +unevaluatedProperties: false + +examples: + - | + #include + + dsi { + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "djn,98-03057-6598b-i"; + reg = <0>; + + reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; + + iovcc-supply = <&pm8953_l6>; + vsn-supply = <&pmi632_lcdb_ncp>; + vsp-supply = <&pmi632_lcdb_ldo>; + + port { + panel_in_0: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + }; + }; + +... From patchwork Tue Feb 25 21:14:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Weiss X-Patchwork-Id: 13990990 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2138BC021B2 for ; Tue, 25 Feb 2025 21:15:04 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9086010E061; Tue, 25 Feb 2025 21:15:03 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=lucaweiss.eu header.i=@lucaweiss.eu header.b="8Ak4m8kf"; dkim-atps=neutral Received: from ahti.lucaweiss.eu (ahti.lucaweiss.eu [128.199.32.197]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7541210E7F1 for ; Tue, 25 Feb 2025 21:15:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lucaweiss.eu; s=s1; t=1740518094; bh=LzC72GBUUK82fAL3bxvfOpXyG/ep/Ha3xaemd2OmV8s=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=8Ak4m8kffugv8vGfr4vrnYPQTX4+o0pcRngviI9URza//jy+jRX0R1naCKU/qPbAL Zem8RiFhmEw4dJVOG8aFVlD2rE+MESExgzZtQ92IpRIyUo44SSHeVoOoza6ZcKKti3 Ru7W3Qqbs8/m9916Msr3S8EJ85ACnVUoxOU3mC8I= From: Luca Weiss Date: Tue, 25 Feb 2025 22:14:31 +0100 Subject: [PATCH v2 3/4] drm/panel: Add driver for DJN HX83112B LCD panel MIME-Version: 1.0 Message-Id: <20250225-fp3-display-v2-3-0b1f05915fae@lucaweiss.eu> References: <20250225-fp3-display-v2-0-0b1f05915fae@lucaweiss.eu> In-Reply-To: <20250225-fp3-display-v2-0-0b1f05915fae@lucaweiss.eu> To: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, Neil Armstrong , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Luca Weiss X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=18946; i=luca@lucaweiss.eu; h=from:subject:message-id; bh=LzC72GBUUK82fAL3bxvfOpXyG/ep/Ha3xaemd2OmV8s=; b=owEBbQKS/ZANAwAIAXLYQ7idTddWAcsmYgBnvjLKZM9fkBzWEgq3sGqZ9TdS8APhr88w+fv/d 72rKACNdpSJAjMEAAEIAB0WIQQ5utIvCCzakboVj/py2EO4nU3XVgUCZ74yygAKCRBy2EO4nU3X VkhTD/9A6tF123kduryqei8FojeBZYjh872qEEfKg2Az1FfawnRMoFEDpwuOhUaYGu/mfT2qSp9 +bWJ8JZjTbEYrRFWnV/7H8l0EehE4xEEJWToeLI8NaQLFyUYzvaD9FGzSxe1m+hBQfacqVGCPL6 EcbhhR9jgs/lgbhr799W7fNKxpXDTTAM2iRHGiO5V4+RV6BsCwdt51VhJK4yYfsyK7Q0+hHlUjI ooAKqm3peFfVYHLRuRISSzFfOC8IlNpok2mO5oatm8/rfqdzhS7pgK1Kuu9Pg64QoqMwoCZeAYt z3gAOC/bTfcW9nAINkfRJnhIhd1VI8o/EhNyG4w7/6si0rsKS9aYW+JUeRoMV7pemf0xthlPEu/ 7EPpPOlucqG0JzW8YEJOid+TTakZd5FrIXviawHxx+394ZJDg1X72AQpZQtxyHy1s81vE4VepGW fOIl3B33PWwxbls/wApkIUJOgyiSvZu9dJGSZ9AjRIUuYCpPlBl8zAaubDsjWIgwNaBW9+Y4KYJ o2++NUOVpi9U1v6Ax9BBYRXnuqB8uig1HBfPo+P6+5W+6CRrdhRC+rn/VLMwi733IqoOpkIwTjK 9V4x2IA/NXVKCFdf+lVgyBpf/qIZBFiQbKGCG6Ae5SxQmoOh2g22qwt34FgW/IUDVqiydzpcZwi ZnpUPDP1mbLhWHQ== X-Developer-Key: i=luca@lucaweiss.eu; a=openpgp; fpr=BD04DA24C971B8D587B2B8D7FAF69CF6CD2D02CD X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Add support for the 2160x1080 LCD panel from DJN (98-03057-6598B-I) bundled with a HX83112B driver IC, as found on the Fairphone 3 smartphone. Signed-off-by: Luca Weiss Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/panel/Kconfig | 10 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-himax-hx83112b.c | 430 +++++++++++++++++++++++++++ 3 files changed, 441 insertions(+) diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index d7469c565d1db8b8e974dd6c45d03d9352d99d63..b32e300c563a3fd94134d61140f66cad18b4ebb6 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -173,6 +173,16 @@ config DRM_PANEL_HIMAX_HX83112A Say Y here if you want to enable support for Himax HX83112A-based display panels, such as the one found in the Fairphone 4 smartphone. +config DRM_PANEL_HIMAX_HX83112B + tristate "Himax HX83112B-based DSI panel" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + select DRM_KMS_HELPER + help + Say Y here if you want to enable support for Himax HX83112B-based + display panels, such as the one found in the Fairphone 3 smartphone. + config DRM_PANEL_HIMAX_HX8394 tristate "HIMAX HX8394 MIPI-DSI LCD panels" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 7dcf72646cacff11bab90c78e3b8b1f357e5f14a..6257c3cd48b57b808c95c2e535f5624fd0e06efa 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02) += panel-feixin-k101-im2ba02.o obj-$(CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D) += panel-feiyang-fy07024di26a30d.o obj-$(CONFIG_DRM_PANEL_HIMAX_HX83102) += panel-himax-hx83102.o obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112A) += panel-himax-hx83112a.o +obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112B) += panel-himax-hx83112b.o obj-$(CONFIG_DRM_PANEL_HIMAX_HX8394) += panel-himax-hx8394.o obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o diff --git a/drivers/gpu/drm/panel/panel-himax-hx83112b.c b/drivers/gpu/drm/panel/panel-himax-hx83112b.c new file mode 100644 index 0000000000000000000000000000000000000000..d9b37416a30a221fd956c7754e00108166f364ab --- /dev/null +++ b/drivers/gpu/drm/panel/panel-himax-hx83112b.c @@ -0,0 +1,430 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree. + * Copyright (c) 2025 Luca Weiss + */ + +#include +#include +#include +#include +#include +#include + +#include