From nobody Fri Dec 19 13:47:17 2025 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3EAA2DEA7B for ; Mon, 13 Oct 2025 05:56:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760334977; cv=none; b=T4B/QoXHs3oOL0fbc6zhTBzK0aVam6XHJildck7+jaAGv9iXZEfeOT2EHQ6iY4I+kt1eK70apMbB9sUeK+82ZCt25wGCgXpWEbFYoq6j5fRDfgCgbxLD/A/ZkYzMU1ZAgAm4GuD6FfiOoZ4hgwnqlFOYShUFWh/vR4DPBXtRO/s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760334977; c=relaxed/simple; bh=M+TtnNRlKxmwNkWjOrflCvsVUhdbfnUnfwwEyraGfY0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jHCuCi5Cu2u2LgC9TMFGZAxpIv1v3dVRLnS7wjAeGAoir4nLJdPk7IK3OdQ7/ysDqnG4XbjxqGnAngBz/pPdby/5h3vOeDJRL40i/OM5DyTY5QhVqOJfgsJXQPUfCSkAsTFqpg3uuTZslOdf7+e2FAa/xo5U3w/+kShEMAAEOJk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mgPzDZ3H; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mgPzDZ3H" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-639102bba31so7903863a12.2 for ; Sun, 12 Oct 2025 22:56:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760334974; x=1760939774; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MmVeYmdQG39CjbFRBoggArBt69tBLOMtXANeqHPySaA=; b=mgPzDZ3HAHGC3lbyh6ymSMn5R0mryNTIn4t1Qy6W2C5mxbuZrnX0vhriVhGhknCDW5 J9d8mehe4BLjWtry5jX+U3GVX4uNn6K4Uo2VO9NvXphqOAsdZgF90nhIYsJCjgtkwECF U+v9S7YDKfixfh2zPttXx+rLyzChxLMWM227TCFqj+b+y+knkDbGH2Hfe+j+jZguBzfC W7XbEB7UBBJBg8sRqwHagWQked6xqld7RdK+e1X6mSU9cT7JRF1oeaUu1ZG9N6qPAxDH 9EBrPAwcOYwYc6OC3NOu5IqAlnb7JKoIXfYPu+9kJHSZmfblpmXJQaswP4amq1wwD1do LuYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760334974; x=1760939774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MmVeYmdQG39CjbFRBoggArBt69tBLOMtXANeqHPySaA=; b=SoDckPJGgDturxh1P5mtQrjPa5iVltsQQ651Ib75nltbx/eb5WGB3OSlxsc54R5lp9 LVvUAtbpmj3SeQShfHaLOK5tQDd4pSzyOBHUKIa1GrDUXTW9Urq5T0d1E15BF9N78gs9 5WR8UA9+b3nngHEMHEs3QSWtZxNSIlVjWPjfyk9YJoPidg+aif8SxQSBWdayUtNwaV7z +tvKmFH1XWuTqowN0r7+kZMtaJ7p+rt2Q85V84Xiz7RZx+7cSUWvf8DXE6PVJh/wtVEZ byG7gGCiYShQegvJMzj9MrZwv7J5hR2mXTe3UytUreMTYggpzf7ZuafmnK0DsNdwBH2N H25g== X-Forwarded-Encrypted: i=1; AJvYcCWluT64GOSORyEy5+Q7zdzQqmjD6mhOAFcvfp2bYAE9KfL+N373prCYUzn5Dp+Ssip2S58FtKGg8e3l7dU=@vger.kernel.org X-Gm-Message-State: AOJu0YyObLnj5fOOZM+BiRxH1hVYLtiUyjMJwdEtaRrl2AH1rwa0Dwg2 DAgr8Kj8gO/qC4aGHc7bbIdAeOCxdIU8imub4iczedc+n0jdGoVSgh4p X-Gm-Gg: ASbGnctTzqwBBPCZcvqS4q3stxPYpb+qXWpqXSLkfOU50q79847bKKW6j+BPY6uh4bI Cj8lKuSgUJnSN5hA7O1V+HIL9002XNn8gKx7cLSpdybDWJilz9lxI5vFmnvMNZC87fO5wxJWx+m /oqx+JS2xZcAG9yKatYo2dts3d0F7/f9AmWV0wnTJvEkfijiTMTuWHKZYNE089EDowWnij8rPVX x5FT7g+JUtW0uoUFHvZEWIz+Xh4VJi6SN5dha8ad4+Bp6U7gndynVxjA/8s1gZTf7Y++d8WzWV2 iq8o6svEMbRVgNWoCrUhFLznFPqaRBOgSl/EMShY6OsWguLUpJ8utcawTd7kUB3RcpUcD66cOvv lny4xs1FvCwbtG2iAJbZAUPlAjIRahEkISUHcNpu7Htk= X-Google-Smtp-Source: AGHT+IH2c+24CivWPPJ/ldu3md2RU+buuXCl55Yc9ObghGW9GfGlOejHYQ5h1JhatOPelTBivJjgCA== X-Received: by 2002:a17:907:5c8:b0:b40:b6a9:f70f with SMTP id a640c23a62f3a-b50a9c5b352mr2011241866b.4.1760334973858; Sun, 12 Oct 2025 22:56:13 -0700 (PDT) Received: from xeon.. ([188.163.112.70]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d63c9a3csm860912566b.23.2025.10.12.22.56.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 22:56:13 -0700 (PDT) From: Svyatoslav Ryhel To: Neil Armstrong , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Thierry Reding , Jonathan Hunter , Douglas Anderson , Svyatoslav Ryhel , Sam Ravnborg Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org Subject: [PATCH v3 1/7] dt-bindings: display: panel: properly document LG LD070WX3 panel Date: Mon, 13 Oct 2025 08:55:36 +0300 Message-ID: <20251013055543.43185-2-clamor95@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251013055543.43185-1-clamor95@gmail.com> References: <20251013055543.43185-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable LG LD070WX3-SL01 was mistakenly documented as a simple DSI panel, which it clearly is not. Address this by adding the proper schema for this panel. There is only one user of this panel binding in the mainline Linux kernel, which is the Nvidia tablet Tegra Note 7. Its panel is broken anyway since it cannot initialize properly if the bootloader does not leave a pre-initialized panel. It also cannot suspend or re-initialize properly, since no DSI configuration is set and it has a loose regulator which relies on an always-on property rather than being hooked to the panel where it belongs. Tegra Note 7 device tree is adjusted as a part of this series. Signed-off-by: Svyatoslav Ryhel Acked-by: Conor Dooley --- .../display/panel/lg,ld070wx3-sl01.yaml | 60 +++++++++++++++++++ .../display/panel/panel-simple-dsi.yaml | 2 - 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/panel/lg,ld07= 0wx3-sl01.yaml diff --git a/Documentation/devicetree/bindings/display/panel/lg,ld070wx3-sl= 01.yaml b/Documentation/devicetree/bindings/display/panel/lg,ld070wx3-sl01.= yaml new file mode 100644 index 000000000000..0f0b9079f199 --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/lg,ld070wx3-sl01.yaml @@ -0,0 +1,60 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/lg,ld070wx3-sl01.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: LG Corporation 7" WXGA TFT LCD panel + +maintainers: + - Svyatoslav Ryhel + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + items: + - const: lg,ld070wx3-sl01 + + reg: + maxItems: 1 + + vdd-supply: true + vcc-supply: true + + backlight: true + port: true + +required: + - compatible + - vdd-supply + - vcc-supply + +additionalProperties: false + +examples: + - | + #include + + dsi { + #address-cells =3D <1>; + #size-cells =3D <0>; + + panel@0 { + compatible =3D "lg,ld070wx3-sl01"; + reg =3D <0>; + + vdd-supply =3D <&vdd_3v3_lcd>; + vcc-supply =3D <&vcc_1v8_lcd>; + + backlight =3D <&backlight>; + + port { + endpoint { + remote-endpoint =3D <&dsi0_out>; + }; + }; + }; + }; +... diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple-d= si.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple-dsi.= yaml index 9b92a05791cc..f9f1e76a810c 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-simple-dsi.yaml +++ b/Documentation/devicetree/bindings/display/panel/panel-simple-dsi.yaml @@ -42,8 +42,6 @@ properties: - kingdisplay,kd097d04 # LG ACX467AKM-7 4.95" 1080=C3=971920 LCD Panel - lg,acx467akm-7 - # LG Corporation 7" WXGA TFT LCD panel - - lg,ld070wx3-sl01 # LG Corporation 5" HD TFT LCD panel - lg,lh500wx1-sd03 # Lincoln LCD197 5" 1080x1920 LCD panel --=20 2.48.1 From nobody Fri Dec 19 13:47:17 2025 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B04E2DF137 for ; Mon, 13 Oct 2025 05:56:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760334979; cv=none; b=UJBiP301/7O6lLhbtrZJyD/TtQTtlBPF6EZxVPsWCJevyV2XRJUf5eWts7P12eb7dUR4OR9fwu8pEBZbwcnYKPDk5fMdeqR9VYXi/McmMZ5jE7Fq971Az5xtNfvMk03hhs/xjFjWWXqwxmh0VZNZdaytV3cAIGqbqm9M7JqBsTM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760334979; c=relaxed/simple; bh=/CXzj5jTIsG6xjXWB8a3Ddy3m9DDciOJ66r1kBk8d4s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D4H0nbHrIMtHWSonMDJnLJGCn9tij+GDpoJuKAxLNGcg0elsczZbqTOyeAfQulQ0Ymn2jNHcKZjKNyA7Vaf2LhKr+a4A53JcdD0jWfqhpHBZR9i1FMXvziEenSJNjRVVPxE5adEg/5cB8mrqDof72Xu94KhEriOiD7M0p1QAWSY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iF/SAkae; arc=none smtp.client-ip=209.85.218.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iF/SAkae" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-b3d50882cc2so703013766b.2 for ; Sun, 12 Oct 2025 22:56:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760334975; x=1760939775; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=veHv/uRfxtfoSVQhbpvYC1/mXF+mOr0qW/T/KMequQ0=; b=iF/SAkae7kiIuuKiXNp/FrMk+pTFGk0ahfh0taOylI7WvGmEf3J2zLSTEBLam6dXkS 3O5XEMMckcRlhCom38CddW++QrQwk/Sg88R285nFDml56ZAELu7q6U69hEzibwHC30N0 +pD3Dutl8EfCORg0/Qe7IcdJp3xZ1yvhKynFbCpJx4QzIXthgBb8ZTWfRSjymnTkXu/e c4gWRSqyq2hIpKFDywZC5rfB3jddSzLHDFCcATiGiNIVtXKFvXPlhfSGB7zV0EcgrAAy vEhoYkY6I20+qj1+ioDFt333tQW/I6y1uvMESWI5sO1qly+CTVIKMGChjaDNACcf4+O2 FrFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760334975; x=1760939775; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=veHv/uRfxtfoSVQhbpvYC1/mXF+mOr0qW/T/KMequQ0=; b=wzIihyZg7v4BpeNxRTjax2mV73ZSUqqS3ArH7OnsWae3gWlCv/lhsuphAa4eE+IOF/ z1zdKfWV+4g9+lgvmrXPpeLpLZb3HN8Cr48VH2JLnmA5b0HN+8rpAf3bq0Ot+UAbEEg2 l65KPiDZT+igXgojOvXOnY2HjYT8PVJJiP3PFC6idwSElQb2nuFrZTZm43H/GWcnZtPh i6DbNhQBHw8goDH/1BrLbAe/GYd1L6cATRmAhiwH81MDnutPnu4XoUbyXdx6ct9PDlLM qCsRRGgmmWhWLsOMS4VUOcHsu3lBcyImcyKzQ9Pkrl8icE+01RzeKS2YlprfvwLUEPjv vfzw== X-Forwarded-Encrypted: i=1; AJvYcCXSkHDVlZH6MoJBQxUGtRzMv5VvJDlNCDdmQrZldqfDiWdk0IRxNwIKr/ehDo4rojDg5wp1LHqa62mWsfA=@vger.kernel.org X-Gm-Message-State: AOJu0YwEK6yMOzrRLtOpXLlFrjy1G1pLgo4OsWfUY+znDiYKWDX+llk4 9svvTbAYJV5jt2AGP1Zh5crMnq8wbzb1UBy0avtZycOZ0GiFIa5htJKL X-Gm-Gg: ASbGnctIIQLvoB+ryo9/XQC5Qanj60vklJYqBadYBfcYynbk6GJ9SQMBSS0DDCthxdi u57Wx1wxULbY0TDKveUicbO5p5eXj8oHyLR0Sy4u4qw5xX+56kbw9CZhaDvKufE+kN+TXuV62xw U92zMkLOyJWiy+6EJo06OIB8/Qx+606aeSeNgt1KC4HfghlOAd3L+NM7BYbASopD64psur0ArD4 9Jc0HbwUPZRrUaUB3BSax+vQYeqUnzvlMZ2rTcnfFxReygNcbCEymiDaAcoh6sX9X4L/5t3el93 eDo66VInSULmSquJSW/0DH7hSk+2Ow5AlVDXNC5Nku7Cz4f6yvqMeHN2eJF7vIWf+8SjUgdbD4Y LfaW322A/7SCEqKhOE6e6P01pjtioLOAT X-Google-Smtp-Source: AGHT+IH7TM/DlElUoihXEeDLUHaWPx5ed3M2hUtcfp8Bh480rAmLf/q5ifK33dhqwSEU7RCMnMzl2A== X-Received: by 2002:a17:906:7949:b0:b3c:31c2:b57d with SMTP id a640c23a62f3a-b50ac5d1e30mr2192754866b.55.1760334975045; Sun, 12 Oct 2025 22:56:15 -0700 (PDT) Received: from xeon.. ([188.163.112.70]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d63c9a3csm860912566b.23.2025.10.12.22.56.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 22:56:14 -0700 (PDT) From: Svyatoslav Ryhel To: Neil Armstrong , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Thierry Reding , Jonathan Hunter , Douglas Anderson , Svyatoslav Ryhel , Sam Ravnborg Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org Subject: [PATCH v3 2/7] gpu/drm: panel: add support for LG LD070WX3-SL01 MIPI DSI panel Date: Mon, 13 Oct 2025 08:55:37 +0300 Message-ID: <20251013055543.43185-3-clamor95@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251013055543.43185-1-clamor95@gmail.com> References: <20251013055543.43185-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The LD070WX3 is a Color Active Matrix Liquid Crystal Display with an integral Light Emitting Diode (LED) backlight system. The matrix employs a-Si Thin Film Transistor as the active element. It is a transmissive type display operating in the normally Black mode. This TFT-LCD has 7.0 inches diagonally measured active display area with WXGA resolution (800 by 1280 pixel array). LG LD070WX3-SL01 MIPI DSI panel was treated as simple DSI panel when it is actually not and requires proper setup for correct work. Simple panel work relied on preliminary configuration done by bootloader. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Douglas Anderson --- drivers/gpu/drm/panel/Kconfig | 13 ++ drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-lg-ld070wx3.c | 184 ++++++++++++++++++++++ drivers/gpu/drm/panel/panel-simple.c | 31 ---- 4 files changed, 198 insertions(+), 31 deletions(-) create mode 100644 drivers/gpu/drm/panel/panel-lg-ld070wx3.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 045ffb2ccd0f..1f660ba065a1 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -408,6 +408,19 @@ config DRM_PANEL_LG_LB035Q02 (found on the Gumstix Overo Palo35 board). To compile this driver as a module, choose M here. =20 +config DRM_PANEL_LG_LD070WX3 + tristate "LG LD070WX3 MIPI DSI panel" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + select VIDEOMODE_HELPERS + help + Say Y here if you want to enable support for the LD070WX3 MIPI DSI + panel found in the NVIDIA Tegra Note 7 tablet. + + To compile this driver as a module, choose M here: the module will + be called panel-lg-ld070wx3. + config DRM_PANEL_LG_LG4573 tristate "LG4573 RGB/SPI panel" depends on OF && SPI diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 0356775a443a..9281221183ac 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -41,6 +41,7 @@ obj-$(CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W) +=3D panel-l= eadtek-ltk050h3146w.o obj-$(CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829) +=3D panel-leadtek-ltk500hd18= 29.o obj-$(CONFIG_DRM_PANEL_LINCOLNTECH_LCD197) +=3D panel-lincolntech-lcd197.o obj-$(CONFIG_DRM_PANEL_LG_LB035Q02) +=3D panel-lg-lb035q02.o +obj-$(CONFIG_DRM_PANEL_LG_LD070WX3) +=3D panel-lg-ld070wx3.o obj-$(CONFIG_DRM_PANEL_LG_LG4573) +=3D panel-lg-lg4573.o obj-$(CONFIG_DRM_PANEL_LG_SW43408) +=3D panel-lg-sw43408.o obj-$(CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966) +=3D panel-magnachip-d53e6ea= 8966.o diff --git a/drivers/gpu/drm/panel/panel-lg-ld070wx3.c b/drivers/gpu/drm/pa= nel/panel-lg-ld070wx3.c new file mode 100644 index 000000000000..00cbfc5518a5 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-lg-ld070wx3.c @@ -0,0 +1,184 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include +#include +#include +#include +#include +#include +#include +#include + +#include