From nobody Thu Sep 24 17:10:08 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B0434C10EF; Tue, 22 Sep 2026 06:17:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057868; cv=none; b=UQGXCOtfZMOaUeX23HT+mWFIqw96OfOM4us9XQa28W+nVXvt+xkZkl4TAjbIMwTCxw7lqyQmwjVcgbRL350L5SwZHZmdTdvGGooDGA5KxnuFA/2qHpIOUT6Q2dK+jedWyPMr9+Mjl6raiqTIhnEiDenGichKUSyLJ+qHLwCwwK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057868; c=relaxed/simple; bh=sN0jHjhiKPr+hku2Fc2l8CjScf+8Lhcf3qtojt/qNiQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QV5pM2hl95A0K8E3HqxrVkgKVpkZjB26mT8RJZ0umcAxcddzh2YjfJlu1DyzQ6xVutUfc5uVsOWQFVj/68/xr9Ra2G9U5xkRhWA5yHbruatVd1f1owg0MQcxIL2VU41bhIUM8RssqpRuFKfuvdpaRMaiNmd6BupbOub7zXLV8VY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=YTxY27pO; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="YTxY27pO" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=AwsqmmNGM1CwkfnwhjdwYP4bj/OynYd8p0qPRgSwWUk=; t=1790057865; x=1791267465; b=YTxY27pO+dDTbjKldhJdj24iZgPjiwQ/Se4ngJyJVYM14tSfeMSxomlrcwQhxlSYqfXCQXgY5Bf nlJtljXUw8Ftn1P4CIy7e1OLgBa2WmF+dcpgQCEKhx0sziXzv9HK351Gr8bBj3HD7PzlOZYY43uVG bOABaurhKhDQJlYBxSBCT+sNe6L0nmZNMZwrqPUHEQb53eDQdQFW1eWFFdXWNvLnEdLMimPnUqABl LnSKSy8M2IhGkTWW/8Pd8GU9rQ3RqjOWUbNAqyXGUlP3d9Px0VcRG8pC/GIPANoyS2TKrS3h09YA4 rinvl2yY3UTfx6E+4vD569IfugyAZaNSiXAg==; From: Andreas Kemnade Date: Tue, 22 Sep 2026 08:16:58 +0200 Subject: [PATCH RFC 1/9] dt-bindings: display: panel: Add panel for Epson Moverio BT-200 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 Message-Id: <20260922-b2-panel-via-bridge-v1-1-45ff36b364cf@kemnade.info> References: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> In-Reply-To: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Marek Vasut , Aaro Koskinen , Kevin Hilman , Roger Quadros , Tony Lindgren , hns@goldelico.com Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.16.1-dev-53874 X-Developer-Signature: v=1; a=openpgp-sha256; l=1702; i=andreas@kemnade.info; h=from:subject:message-id; bh=sN0jHjhiKPr+hku2Fc2l8CjScf+8Lhcf3qtojt/qNiQ=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFmbZBP6cuLjH32J65lfquB/cqbhhouTOW+cPpHqOdVv+ 2X2XKGFHaUsDGJcDLJiiiy/rBXcPqk8yw2eGmEPM4eVCWQIAxenAEwkZzbDX8EXm7Ma/I4c2n8j yfXl5olaq6+2bl236/Wuq+1e77a/eB/O8D/s8p427Xmf9x7bq3LnSvnv2DNxewW5b1xaFlH6I12 oqoIZAA== X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 The Epson Moverio BT200 has two DPI panels with SPI control input in its glasses. The chip is unknown and not feasible to non-destructively find out more, so just add a more generic compatible. Signed-off-by: Andreas Kemnade --- .../bindings/display/panel/epson,panel-bt200.yaml | 48 ++++++++++++++++++= ++++ 1 file changed, 48 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/epson,panel-bt= 200.yaml b/Documentation/devicetree/bindings/display/panel/epson,panel-bt20= 0.yaml new file mode 100644 index 000000000000..b3ea09d194aa --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/epson,panel-bt200.yaml @@ -0,0 +1,48 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/epson,panel-bt200.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Panels of the Epson Moverio BT-200 head unit + +maintainers: + - Andreas Kemnade + +allOf: + - $ref: panel-common.yaml# + - $ref: /schemas/spi/spi-peripheral-props.yaml# + +properties: + compatible: + const: epson,panel-bt200 + + reg: + const: 0 + +required: + - compatible + - port + - reg + +unevaluatedProperties: false + +examples: + - | + spi { + #address-cells =3D <1>; + #size-cells =3D <0>; + + panel: panel@0 { + compatible =3D "epson,panel-bt200"; + reg =3D <0>; + + port { + lcd_in: endpoint { + remote-endpoint =3D <&dpi_out>; + }; + }; + }; + }; + +... --=20 2.47.3 From nobody Thu Sep 24 17:10:08 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C83FB4C33DE; Tue, 22 Sep 2026 06:17:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057869; cv=none; b=biuW/OiuzQWsxVGgajsOG0AsoiXzry8NUwCDEyzz3v0PhhAE+jFsUCBICoso+OJCVTmeOTMFyXoilP/6oOFOvN9j92DtcJwj73Fk42oxMWXdgvovkASgBBbWUw62ETI8s30FCw2s8RqvGmY3upkpwn/HwdxaWwaZFDqG1BARa3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057869; c=relaxed/simple; bh=Dlvgd0UudJORSQnd74jpr6AQcYnRPW/gMWkWTlZoOBI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ON4kVGCnOeBU3YOm6RKEVMYyuXLgoPSjIQCR96ru7kSEOr8tJHz+SYzVkfXNT5MrNHUJikOE8Vt3RQ4lnq/EcG3DDGWAD6KKRX4dCXlOCDJn02Wrm7wzsPtQPKajbeLXXmc/qFxqreKJSHVLUxCCe3ncieUtR+0jnzmsHmupDYg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=0BL5ehbb; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="0BL5ehbb" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=gUei3VkdYe4QGVULvKFk3kc0jWO1YmCI+V/38vza53A=; t=1790057866; x=1791267466; b=0BL5ehbbWfsdD1qqR6ujjCNPEKiDNiXSn76vJRq2R+I3fMbHY+lfu18G0Oc2OCjI5ERi3+w3AXp 5dX9uZ8PHUZdeFbiaZ6CfZpEJXE4n0LcIVnNxxUeUMveaxUBN8HNmgU/hc8F7+FSN7zHz6qreJN6v vgm1tJFrRZY6V8HgPg7Yo5IgUXes96cFUTFNJAFX9kW1RejM2hfVdt4cU/2aBvc7FCQ8doPt0ZutQ MyC/n0YGcPGRzrJDZd216o5/3jn+mkXIEGGgcvJB6NnMZYERkFGAdF7Re397pPhYI8WvaXmvz5RyO /p0q75LKe/rMZ5XGcS7rHZFevBJTnVN3FYnQ==; From: Andreas Kemnade Date: Tue, 22 Sep 2026 08:16:59 +0200 Subject: [PATCH RFC 2/9] drm: panel: Add panel for Epson Moverio BT200 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 Message-Id: <20260922-b2-panel-via-bridge-v1-2-45ff36b364cf@kemnade.info> References: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> In-Reply-To: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Marek Vasut , Aaro Koskinen , Kevin Hilman , Roger Quadros , Tony Lindgren , hns@goldelico.com Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.16.1-dev-53874 X-Developer-Signature: v=1; a=openpgp-sha256; l=9695; i=andreas@kemnade.info; h=from:subject:message-id; bh=Dlvgd0UudJORSQnd74jpr6AQcYnRPW/gMWkWTlZoOBI=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFmbZBN+yR+Uke8OXSH79cjLxCXlmw6aCYcukk+cGnVij koow7OZHaUsDGJcDLJiiiy/rBXcPqk8yw2eGmEPM4eVCWQIAxenAEyk7gcjw/uFCjdfLc5ZJ6ij wX91sZHi9ln2iQslKldnB3b/kw/7aMDw32lOtRx374GXjZtsg57c7xHY2KYuq8EfkhQZ/+xmykw 3XgA= X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 Not much is known about the panel, initialisation sequence and parameters come from the vendor kernel. As it is located in glasses, it is hard to disassemble to find out more. Signed-off-by: Andreas Kemnade --- drivers/gpu/drm/panel/Kconfig | 10 ++ drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-epson-bt200.c | 251 ++++++++++++++++++++++++++= ++++ 3 files changed, 262 insertions(+) diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index cbdf7b8f7f7a..0cb56687294d 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -159,6 +159,16 @@ config DRM_PANEL_ELIDA_KD35T133 KD35T133 controller for 320x480 LCD panels with MIPI-DSI system interfaces. =20 +config DRM_PANEL_EPSON_BT200 + tristate "Epson BT200 panel driver" + depends on OF && SPI + depends on BACKLIGHT_CLASS_DEVICE + help + Say Y here if you want to enable support for the 960x540 + pixel panels used in the Epson Moverio BT200. They are used + together with the TC358762 DSI-to-DPI bridge. To compile this + driver as a module, choose M here. + config DRM_PANEL_FEIXIN_K101_IM2BA02 tristate "Feixin K101 IM2BA02 panel" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 3b523cf37833..921af234d335 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_DRM_PANEL_SIMPLE) +=3D panel-simple.o obj-$(CONFIG_DRM_PANEL_EDP) +=3D panel-edp.o obj-$(CONFIG_DRM_PANEL_EBBG_FT8719) +=3D panel-ebbg-ft8719.o obj-$(CONFIG_DRM_PANEL_ELIDA_KD35T133) +=3D panel-elida-kd35t133.o +obj-$(CONFIG_DRM_PANEL_EPSON_BT200) +=3D panel-epson-bt200.o obj-$(CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02) +=3D panel-feixin-k101-im2ba02= .o obj-$(CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D) +=3D panel-feiyang-fy07024= di26a30d.o obj-$(CONFIG_DRM_PANEL_FOCALTECH_OTA7290B) +=3D panel-focaltech-ota7290b.o diff --git a/drivers/gpu/drm/panel/panel-epson-bt200.c b/drivers/gpu/drm/pa= nel/panel-epson-bt200.c new file mode 100644 index 000000000000..c26a4f8ae15e --- /dev/null +++ b/drivers/gpu/drm/panel/panel-epson-bt200.c @@ -0,0 +1,251 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +static const struct drm_display_mode default_mode =3D { + .clock =3D 41600, /* kHz */ +#if 0 + /* values matching struct omap_video_timings in vendor kernel */ + .hdisplay =3D 960, + .hsync_start =3D 960 + 176, + .hsync_end =3D 960 + 176 + 20, + .htotal =3D 960 + 176 + 20 + 86, +#else + /* values from what is writted to LCDCTRL on vendor kernel */ + .hdisplay =3D 960, + .hsync_start =3D 960 + 33, + .hsync_end =3D 960 + 33 + 20, + .htotal =3D 960 + 33 + 20 + 86, +#endif + .vdisplay =3D 540, + .vsync_start =3D 540 + 9, + .vsync_end =3D 540 + 9 + 3, + .vtotal =3D 540 + 9 + 3 + 12, + .flags =3D 0, +}; + +struct bt200_panel { + struct drm_panel panel; + struct spi_device *spi; +}; + +static int bt200_panel_write(struct bt200_panel *ctx, u8 addr, u8 data) +{ + u8 val[2]; + + val[0] =3D addr; + val[1] =3D data; + + return spi_write(ctx->spi, val, sizeof(val)); +} + +static inline struct bt200_panel *panel_to_bt200(struct drm_panel *panel) +{ + return container_of(panel, struct bt200_panel, panel); +} + +static int bt200_disable(struct drm_panel *panel) +{ + struct bt200_panel *ctx =3D panel_to_bt200(panel); + + bt200_panel_write(ctx, 0x0A, 0); + return 0; +} + +static int bt200_unprepare(struct drm_panel *panel) +{ + return 0; +} + +/* found this table in vendor kernel */ +static struct { + u8 addr; + u8 data; +} lcddr_init[] =3D { + {0x01, 0x00}, {0x02, 0x00}, {0x03, 0x00}, {0x05, 0x01}, + {0x07, 0x00}, {0x0A, 0x00}, {0x10, 0x03}, {0x11, 0x44}, + {0x12, 0x44}, {0x13, 0x55}, {0x14, 0x03}, {0x15, 0x00}, + {0x16, 0x2A}, {0x17, 0x20}, {0x18, 0x00}, {0x19, 0x10}, + {0x1A, 0x12}, {0x1B, 0x0E}, {0x1C, 0x0F}, {0x1D, 0x10}, + {0x1E, 0x0F}, {0x1F, 0x1B}, {0x20, 0x0F}, {0x21, 0x00}, + {0x22, 0x00}, {0x23, 0x00}, {0x24, 0x00}, {0x28, 0x14}, + {0x29, 0x19}, {0x2A, 0x17}, {0x2B, 0x2B}, {0x2C, 0x99}, + {0x2D, 0x13}, {0x2E, 0x2A}, {0x30, 0x0B}, {0x31, 0x00}, + {0x32, 0x00}, {0x33, 0x01}, {0x34, 0x00}, {0x35, 0x0B}, + {0x36, 0x04}, {0x37, 0x21}, {0x38, 0x00}, {0x39, 0x46}, + {0x3A, 0x01}, {0x3B, 0x06}, {0x3C, 0x03}, {0x3D, 0x00}, + {0x3E, 0x06}, {0x3F, 0x04}, {0x40, 0x00}, {0x41, 0x0D}, + {0x42, 0x00}, {0x43, 0x2E}, {0x45, 0x08}, {0x46, 0x00}, + {0x47, 0x01}, {0x48, 0x00}, {0x49, 0x00}, {0x4A, 0x0B}, + {0x4B, 0x38}, {0x4C, 0x03}, {0x4D, 0x04}, {0x50, 0x0F}, + {0x51, 0x04}, {0x52, 0x01}, {0x53, 0x0E}, {0x54, 0x11}, + {0x55, 0x9F}, {0x56, 0x36}, {0x57, 0x00}, {0x58, 0x68}, + {0x59, 0x01}, {0x5A, 0xE0}, {0x5B, 0x00}, {0x5C, 0x00}, + {0x5D, 0x10}, {0x5E, 0x36}, {0x5F, 0x36}, {0x60, 0x00}, + {0x61, 0x04}, {0x62, 0x12}, {0x63, 0x00}, {0x64, 0x80}, + {0x65, 0x00}, {0x66, 0x80}, {0x67, 0x1C}, {0x68, 0x00}, + {0x69, 0x00}, {0x6A, 0x00}, {0x6B, 0x00}, {0x6C, 0x00}, + {0x70, 0x00}, {0x71, 0x55}, {0x72, 0x44}, {0x73, 0x33}, + {0x74, 0x22}, {0x75, 0x33}, {0x76, 0x22}, {0x77, 0x22}, + {0x78, 0x33}, {0x79, 0x22}, {0x7A, 0x44}, {0x7B, 0x55}, + {0x7C, 0x00}, {0x80, 0x00}, {0x81, 0x66}, {0x82, 0x22}, + {0x83, 0x33}, {0x84, 0x22}, {0x85, 0x33}, {0x86, 0x22}, + {0x87, 0x22}, {0x88, 0x33}, {0x89, 0x44}, {0x8A, 0x44}, + {0x8B, 0x44}, {0x8C, 0x00}, {0x90, 0x00}, {0x91, 0x77}, + {0x92, 0x66}, {0x93, 0x33}, {0x94, 0x11}, {0x95, 0x33}, + {0x96, 0x22}, {0x97, 0x22}, {0x98, 0x44}, {0x99, 0x44}, + {0x9A, 0x33}, {0x9B, 0x44}, {0x9C, 0x00}, {0xA0, 0x88}, + {0xA1, 0x88}, {0xA2, 0x88}, {0xA3, 0x88}, {0xA4, 0x88}, + {0xA5, 0x88}, {0xA6, 0x88}, {0xA7, 0x88}, {0xA8, 0x88}, + {0xA9, 0x88}, {0xAA, 0x88}, {0xAB, 0x88}, {0xAC, 0x88}, + {0xAD, 0x88}, {0xAE, 0x88}, {0xAF, 0x88}, {0xB0, 0x88}, + {0xB1, 0x88}, {0xB2, 0x88}, {0xB3, 0x88}, {0xB4, 0x88}, + {0xB5, 0x88}, {0xB6, 0x88}, {0xB7, 0x88}, {0xB8, 0x88}, + {0xB9, 0x88}, {0xBA, 0x88}, {0xBB, 0xA6}, {0xBC, 0x88}, + {0xBD, 0x88}, {0xBE, 0x88}, {0xBF, 0x88}, {0xC0, 0x88}, + {0xC1, 0x88}, {0xC2, 0x88}, {0xC3, 0x88}, {0xC4, 0x88}, + {0xC5, 0x88}, {0xC6, 0x88}, {0xC7, 0x88}, {0xC8, 0x88}, + {0xC9, 0x88}, {0xD0, 0x36}, {0xD1, 0x26}, {0xD2, 0x21}, + {0xD3, 0x1F}, {0xD4, 0x17}, {0xD5, 0x15}, {0xD6, 0x13}, + {0xD7, 0x10}, {0xD8, 0x08}, {0xD9, 0x08}, {0xDA, 0x18}, + {0xDB, 0x1D}, {0xDC, 0x1F}, {0xDD, 0x27}, {0xDE, 0x29}, + {0xDF, 0x2B}, {0xE0, 0x2E}, {0xE1, 0x36}, {0xE6, 0x00}, + {0xF1, 0x00}, {0xF2, 0x00}, {0xF3, 0x00} +}; + +static int init_lcd(struct bt200_panel *ctx) +{ + int i; + int r; + + r =3D spi_setup(ctx->spi); + if (r < 0) + return r; + + for (i =3D 0; i < ARRAY_SIZE(lcddr_init); ++i) { + r =3D bt200_panel_write(ctx, (u16)lcddr_init[i].addr, + lcddr_init[i].data); + if (r) { + dev_err(ctx->panel.dev, "failed to write initial config (write) %d\n", = i); + return r; + } + } + + return 0; +} + +static int bt200_prepare(struct drm_panel *panel) +{ + int r; + struct bt200_panel *ctx =3D panel_to_bt200(panel); + + r =3D init_lcd(ctx); + if (r) + return r; + + msleep(50); + return 0; +} + +static int bt200_enable(struct drm_panel *panel) +{ + struct bt200_panel *ctx =3D panel_to_bt200(panel); + + return bt200_panel_write(ctx, 0x0A, 1); +} + +static int bt200_get_modes(struct drm_panel *panel, struct drm_connector *= connector) +{ + struct drm_display_mode *mode; + + mode =3D drm_mode_duplicate(connector->dev, &default_mode); + if (!mode) + return -ENOMEM; + + drm_mode_set_name(mode); + mode->type =3D DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; + drm_mode_probed_add(connector, mode); + + return 1; +} + +static const struct drm_panel_funcs bt200_panel_funcs =3D { + .disable =3D bt200_disable, + .unprepare =3D bt200_unprepare, + .prepare =3D bt200_prepare, + .enable =3D bt200_enable, + .get_modes =3D bt200_get_modes, +}; + +static int bt200_probe(struct spi_device *spi) +{ + struct bt200_panel *ctx; + int ret; + + ctx =3D devm_drm_panel_alloc(&spi->dev, struct bt200_panel, panel, + &bt200_panel_funcs, DRM_MODE_CONNECTOR_DPI); + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + + spi_set_drvdata(spi, ctx); + ctx->spi =3D spi; + ctx->panel.prepare_prev_first =3D true; + + spi->bits_per_word =3D 8; + + ret =3D drm_panel_of_backlight(&ctx->panel); + if (ret) + return ret; + + drm_panel_add(&ctx->panel); + return 0; +} + +static void bt200_remove(struct spi_device *dsi) +{ + struct bt200_panel *ctx =3D spi_get_drvdata(dsi); + + drm_panel_remove(&ctx->panel); +} + +static const struct of_device_id bt200_of_match[] =3D { + { .compatible =3D "epson,panel-bt200", }, + {}, +}; + +MODULE_DEVICE_TABLE(of, bt200_of_match); + +static const struct spi_device_id bt200_ids[] =3D { + { "panel-bt200", 0 }, + { /* sentinel */ } +}; + +MODULE_DEVICE_TABLE(spi, bt200_ids); + +static struct spi_driver bt200_driver =3D { + .probe =3D bt200_probe, + .remove =3D bt200_remove, + .id_table =3D bt200_ids, + .driver =3D { + .name =3D "panel-bt200", + .of_match_table =3D bt200_of_match, + .suppress_bind_attrs =3D true, + }, +}; + +module_spi_driver(bt200_driver); + +MODULE_AUTHOR("Andreas Kemnade "); +MODULE_DESCRIPTION("bt200 panel driver"); +MODULE_LICENSE("GPL"); --=20 2.47.3 From nobody Thu Sep 24 17:10:08 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5BC6B4C10FB; Tue, 22 Sep 2026 06:17:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057867; cv=none; b=V698ufGdbERuSVSAXzoCO2iS3y9IVHRX6V4cho0MPtLbxLV5ZXdFvDmZg8zcHnMmQEwcIilklzGj494l4qxH41YY8SafW0nTXxctLKZ1tXGWlJgu5D/xdTdm+G0BUkItDl/joHkr5dEAjd+O46XYcFon7K7eBuWcQcwUTQGa5wY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057867; c=relaxed/simple; bh=FgdE4S79rUwu02PcPAK2OqiniqhAhf0hXGN4VJbaZeI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=q+lyMDT/T6Cu4hKBw1rr5gB+oGCA8eYidEAnqG1oo9kOrID/Z3nvLfuteDXn3k5Cjk0wmYuLPVM0z8biB3lmPonNlG6Mpbg+0WLHL2ZlBRlGbdeeXzj3NwGyzx3QTMDBP7PNoXHs7nSYev1fGe1TxBUFQ2aFi3yL/vq6WscZCOo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=j5CaNOd9; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="j5CaNOd9" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=HXDSp/hZMea/g/uCBirxGqC15DoS4eWxIXlEZsOk6QI=; t=1790057865; x=1791267465; b=j5CaNOd9cqXwHoWvoXnKK/k8E+39h7uwLCX/2V3WE4oAj7X1/WZkrpQWlCVcJ0KY8E7cavS8/Et 9eEjjM0V5llAtpkHpAPfCJqYmGoZZfMdjaCHGkF+/U2o9PjlW/DPlJAVyp1UlK5Ux9RkqYHSIN0VE 5E/brcBhDUaB4piaHtB8gbEe+GOjm81pCK6qTZwJ19vPGsgNMDp1CaCQmn53koG1dAWgo39fk3Z1V T32dz+5Xjqjz3WR5hzwnalddhemq1kXQoz71Fv/qfTn7l3uJjCHAyX2W1D+RVm8GwhCiwZYM3wsJC AmhtgDAV+7q7fL7mfsR/w2VwLzpH1rPIE0BQ==; From: Andreas Kemnade Date: Tue, 22 Sep 2026 08:17:00 +0200 Subject: [PATCH RFC 3/9] dt-bindings: display: bridge: tc358762: Add some missing properties 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 Message-Id: <20260922-b2-panel-via-bridge-v1-3-45ff36b364cf@kemnade.info> References: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> In-Reply-To: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Marek Vasut , Aaro Koskinen , Kevin Hilman , Roger Quadros , Tony Lindgren , hns@goldelico.com Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.16.1-dev-53874 X-Developer-Signature: v=1; a=openpgp-sha256; l=1304; i=andreas@kemnade.info; h=from:subject:message-id; bh=FgdE4S79rUwu02PcPAK2OqiniqhAhf0hXGN4VJbaZeI=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFmbZBMM2DiZ03boOdxYssnOlrXzoYTQNc4jdorbZzBEb Ph7Syu2o5SFQYyLQVZMkeWXtYLbJ5VnucFTI+xh5rAygQxh4OIUgIlMmsPwv3j75NqyZU4uYTM/ bpa4duPmRqM/X27bJc5cpV3H1vlEo4Xhv1/773nhOX9bsifymHyqcFLIYXne+Jx9evHkjKS+i2E F3AA= X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 The TC358762 can act as an SPI master with two CS for controlling DPI slave devices. Add a spi subnode for that. Add a property to describe number of DSI data lanes. If two lanes are used, an external clock is required. There is the LPTXTIMECNT register which needs to be set to a non-standard value on Epson Moverio BT-200, add a property for it. I know nothing about it besides the required value. --- .../bindings/display/bridge/toshiba,tc358762.yaml | 14 ++++++++++= ++++ 1 file changed, 14 insertions(+) diff --git a/Documentation/devicetree/bindings/display/bridge/toshiba,tc358= 762.yaml b/Documentation/devicetree/bindings/display/bridge/toshiba,tc35876= 2.yaml index 6c1de0b21722..0e380f2a56e6 100644 --- a/Documentation/devicetree/bindings/display/bridge/toshiba,tc358762.yaml +++ b/Documentation/devicetree/bindings/display/bridge/toshiba,tc358762.yaml @@ -44,6 +44,20 @@ properties: required: - port@1 =20 + spi: + $ref: /schemas/spi/spi-controller.yaml# + unevaluatedProperties: false + + dsi-lanes: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [1, 2] + + toshiba,lptxtimecnt: + $ref: /schemas/types.yaml#/definitions/uint32 + + clocks: + maxItems: 1 + required: - compatible - reg --=20 2.47.3 From nobody Thu Sep 24 17:10:08 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E2584BFE76; Tue, 22 Sep 2026 06:17:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057866; cv=none; b=HEM7XEJb+HOxhd5sgQBD+0dAs+3vFO7rh6N8esnAyDuxYiAv28wKRgTQJIn07wLfnHbjzm9PLlGo2h3ZSRHF5pExm8o0Pq0HrmhmJjbSY22tOTCFem/3PMGi2bmozjutoUYqwJAMjAOBsf9bLPaZrrbRbTPdyRSOme/2aG5AAao= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057866; c=relaxed/simple; bh=4czSwLJZTsPrde7Ae78uOhAxPABOjbRqzcFREuBtK58=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JQz5+YHf9MU/zBN/vW4GV0bJE/HqeUse7D40LgDEu/HTslkUWI9TatwYuVvPjjhTjtE9Vg+YtULLuIkx4bsgyDvhWnMbotJzVjjD5jtMiU4obuQIaCRv2d6P32Aaxt7hCGccJfRnJ3uWWWRjKCaBhtu2PV8IMYlA3HlgE3xlnrU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=OADrxjxJ; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="OADrxjxJ" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=AXgjdnDVE3P4oyz6CPuYyFf3otjEytHlCZ6PP8kE4jo=; t=1790057865; x=1791267465; b=OADrxjxJEarq6+sWLEsagEVLfYOIRR30okq2DRVsa5LNadgphnwjU2sAl2eWUzkDacU1UDwxHwn 79ATjNPb6bWlQOTKwX37D1mgOlaCtxjUZCPaIAFFaEgjWnWr6f3kryRTsrVZ/8sfKURSy6ARwoKC/ EVL9b9/2aYlrQm2WvTgU8VHUoOODJeja6W1e/Lwg5FmVngW7q2FW0qb6OLX0UZaom+vtcFGeZ3Av3 +eJA9GxW5OsyI/tKBdJwyAWRvGDVGiB3iDYXc9M+rQd/n1ar8xxMsMUzgmyU8gn/67OiL394S/sqc 1IAeJEej5JdIuTRjzD9FpB5+PaH9XZALcFvw==; From: Andreas Kemnade Date: Tue, 22 Sep 2026 08:17:01 +0200 Subject: [PATCH RFC 4/9] drm/bridge: tc358762: Move initialisation to pre_enable 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 Message-Id: <20260922-b2-panel-via-bridge-v1-4-45ff36b364cf@kemnade.info> References: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> In-Reply-To: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Marek Vasut , Aaro Koskinen , Kevin Hilman , Roger Quadros , Tony Lindgren , hns@goldelico.com Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.16.1-dev-53874 X-Developer-Signature: v=1; a=openpgp-sha256; l=2081; i=andreas@kemnade.info; h=from:subject:message-id; bh=4czSwLJZTsPrde7Ae78uOhAxPABOjbRqzcFREuBtK58=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFmbZBPaD98NTmXxXjQ96vrfZ/ZXTHsWb9Q2v79m7bmfv Cu3fNbg7yhlYRDjYpAVU2T5Za3g9knlWW7w1Ah7mDmsTCBDGLg4BWAiD6wZ/pcr75WfdHEuU3C5 +AfmW/8O5MX++2/U+nxbTqZW+4rZJw8w/LM7vTjb7OGbh18NtJROcnu8WeKSz9p/RJO7wVf68sl 97/kB X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 To allow panels to use SPI already in the prepare function, have things already setup here. Maybe setting LCDCTRL in enable might be an idea? Signed-off-by: Andreas Kemnade --- drivers/gpu/drm/bridge/tc358762.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index e73be376e33c..ec72e6e92b46 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -167,6 +167,12 @@ static void tc358762_pre_enable(struct drm_bridge *bri= dge, struct drm_atomic_commit *state) { struct tc358762 *ctx =3D bridge_to_tc358762(bridge); + struct drm_connector_state *conn_state; + struct drm_bridge_state *bridge_state; + struct drm_crtc_state *crtc_state; + struct drm_connector *connector; + struct drm_display_mode *mode; + u32 lcdctrl; int ret; =20 ret =3D regulator_enable(ctx->regulator); @@ -178,21 +184,6 @@ static void tc358762_pre_enable(struct drm_bridge *bri= dge, usleep_range(5000, 10000); } =20 - ctx->pre_enabled =3D true; -} - -static void tc358762_enable(struct drm_bridge *bridge, - struct drm_atomic_commit *state) -{ - struct tc358762 *ctx =3D bridge_to_tc358762(bridge); - struct drm_connector_state *conn_state; - struct drm_bridge_state *bridge_state; - struct drm_crtc_state *crtc_state; - struct drm_connector *connector; - struct drm_display_mode *mode; - u32 lcdctrl; - int ret; - bridge_state =3D drm_atomic_get_new_bridge_state(state, bridge); =20 connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->enc= oder); @@ -269,6 +260,13 @@ static void tc358762_enable(struct drm_bridge *bridge, ret =3D tc358762_clear_error(ctx); if (ret < 0) dev_err(ctx->dev, "error initializing bridge (%d)\n", ret); + + ctx->pre_enabled =3D true; +} + +static void tc358762_enable(struct drm_bridge *bridge, + struct drm_atomic_commit *state) +{ } =20 static int tc358762_attach(struct drm_bridge *bridge, --=20 2.47.3 From nobody Thu Sep 24 17:10:08 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C82B64BFE95; Tue, 22 Sep 2026 06:17:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057869; cv=none; b=OJ8l26UeclVjQfK0yWZ0jVimfyVRAH7lyUaMC5j9CDk8wPKvjkGd3MACPlnqdWEP0g14OkMfTT8Onk27K3TD/vEX9Ax9ggoOTI10aH2G086yQIP2rVgWkna9WLSIpXDokPzgg3U/ZKp7WQwpKpsjzMTd8Y7Kxz8TY6ZKgfbxSrY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790057869; c=relaxed/simple; bh=SZZDOxjSbhFTa00lyQhARQyw0jJ19hBFtbzPZiAJf9U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bqYumJrPzQ7pne+p8718H7vwn0Xl1nxrvQxcQBmGDCaxGSw6t0F0sj9cZwbdaPZ5W6ipHOw6WHRavJsejJnya4GowJIpgsD+jQTRVlPlGczqk9qa3jgrKuBOKn+oiAtbt3KNeShWKmNavHy64ViqX82EJVI+GkNVravqjHXrTgg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=pb4P6Nay; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="pb4P6Nay" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=+7KDxv/cOzYl/nJudk7vFNU85IqTSwiD51deVVxls2Q=; t=1790057866; x=1791267466; b=pb4P6NayGIfQTZ0xf59sGzdtgyP8SYcVq2pkhQbsCRWRh0LwclOMmqrI2XxYFKC0NG5n4uWX0PT 7LKPSxwvW6D+GEHpmmtl2QmA6/zONQkWaXP38PQp3um4mA2R+mK+WtHeaVjRJ0hGNJCfs1IgZI8tY mNeGIe5GT76rj8bTsKDNmihEfTvqrnJ/GtcCtiw2W378B6CODKNLJo42gdRUSmhQoMke5aZpEWjFn OjkYsm90mYRAOc2Ra8NRS6BErPoSTJLcaYfSMYDCvqGqO6GHRGFO03DM4pMAwVt9T1KFVfAeQTi1h 6d2Mm3vqyI5HwCGI5/af2RloKe0MzREgfK7Q==; From: Andreas Kemnade Date: Tue, 22 Sep 2026 08:17:02 +0200 Subject: [PATCH RFC 5/9] drm/bridge: tc358762: add SPI master support to control panels 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 Message-Id: <20260922-b2-panel-via-bridge-v1-5-45ff36b364cf@kemnade.info> References: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> In-Reply-To: <20260922-b2-panel-via-bridge-v1-0-45ff36b364cf@kemnade.info> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Marek Vasut , Aaro Koskinen , Kevin Hilman , Roger Quadros , Tony Lindgren , hns@goldelico.com Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.16.1-dev-53874 X-Developer-Signature: v=1; a=openpgp-sha256; l=4107; i=andreas@kemnade.info; h=from:subject:message-id; bh=SZZDOxjSbhFTa00lyQhARQyw0jJ19hBFtbzPZiAJf9U=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFmbZBNDvi1598qg3py1O2PfsTkimQ1Rvw8dFWrlmbGGd 4Hr+n7ZjlIWBjEuBlkxRZZf1gpun1Se5QZPjbCHmcPKBDKEgYtTACayKoKR4chWjaNmEtc0bWs5 v762E+ZRPu21I+x7yLqZ+eymi5PkNjD8M4o13uGv1Fq2e0/PqxABC//9TxZeWe16xviZ2M3SmI8 ebAA= X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 To allow to use panels with their SPI port connected to the bridge, add SPI master support. Due to lack of a complete datasheet, mode and speed are not configurable. It is also unclear how CS behaves. Signed-off-by: Andreas Kemnade --- drivers/gpu/drm/bridge/tc358762.c | 72 +++++++++++++++++++++++++++++++++++= +++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index ec72e6e92b46..8024e49e2868 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -16,6 +16,9 @@ #include #include #include +#include + +#include =20 #include