public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v3 0/4] video: simple_panel support for am335x evm panel
@ 2025-12-04  8:31 Markus Schneider-Pargmann (TI.com)
  2025-12-04  8:31 ` [PATCH v3 1/4] panel: Add missing comment for the timing argument Markus Schneider-Pargmann (TI.com)
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Markus Schneider-Pargmann (TI.com) @ 2025-12-04  8:31 UTC (permalink / raw)
  To: u-boot
  Cc: Anatolij Gustschin, Tom Rini, Yannick Fertre, Patrice Chotard,
	Raphael Gallais-Pou, Sukrut Bellary, Fabio Estevam,
	Markus Schneider-Pargmann (TI.com)

Hi,

this series adds the capability to define hardcoded panel settings to
the simple_panel driver similar to the Linux Kernel and adds the panel
used on am335x evm. panel-uclass.c is extended to support get_modes()
for panels and drm_display_mode conversion. In a second step the tilcdc
is extended to support OF graph to be able to connect to the simple
panel devicetree node.

Best
Markus

Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
---
Changes in v3:
- Fix typo in first patch timining -> timing
- Link to v2: https://lore.kernel.org/r/20251203-topic-am33-evm-lcd-v2026-01-v2-0-262cf4f34eb5@baylibre.com

Changes in v2:
- Add support for struct drm_display_mode in u-boot and in particular
  the simple panel driver to make copying definitions from Linux easier
  as suggested by Fabio
- Link to v1: https://lore.kernel.org/r/20251128-topic-am33-evm-lcd-v2026-01-v1-0-ef75d4330d3d@baylibre.com

---
Markus Schneider-Pargmann (TI.com) (4):
      panel: Add missing comment for the timing argument
      panel: Lightweight support of get_modes()
      video: simple_panel: Add tfc_s9700rtwv43tr_01b
      video: ti: am335x: Support OF graph

 drivers/video/panel-uclass.c | 38 +++++++++++++++++++++--
 drivers/video/simple_panel.c | 62 ++++++++++++++++++++++++++++++++++----
 drivers/video/ti/tilcdc.c    | 46 +++++++++++++++++++++++-----
 include/panel.h              | 72 +++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 200 insertions(+), 18 deletions(-)
---
base-commit: c5e6d2ab7eba68cbfb600cdc131c0c375ced2ec9
change-id: 20251128-topic-am33-evm-lcd-v2026-01-004f74a2ccfc

Best regards,
-- 
Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v3 1/4] panel: Add missing comment for the timing argument
  2025-12-04  8:31 [PATCH v3 0/4] video: simple_panel support for am335x evm panel Markus Schneider-Pargmann (TI.com)
@ 2025-12-04  8:31 ` Markus Schneider-Pargmann (TI.com)
  2025-12-04  8:31 ` [PATCH v3 2/4] panel: Lightweight support of get_modes() Markus Schneider-Pargmann (TI.com)
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Markus Schneider-Pargmann (TI.com) @ 2025-12-04  8:31 UTC (permalink / raw)
  To: u-boot
  Cc: Anatolij Gustschin, Tom Rini, Yannick Fertre, Patrice Chotard,
	Raphael Gallais-Pou, Sukrut Bellary, Fabio Estevam,
	Markus Schneider-Pargmann (TI.com)

For completeness add it.

Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
---
 include/panel.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/panel.h b/include/panel.h
index ab417bc91ed1d23aadc64e861bb721418199fb0f..e2764d72c57dcc4ae11d5f1553f1bfcd98996138 100644
--- a/include/panel.h
+++ b/include/panel.h
@@ -29,7 +29,7 @@ struct panel_ops {
 	 * get_timings() - Get display timings from panel.
 	 *
 	 * @dev:	Panel device containing the display timings
-	 * @tim:	Place to put timings
+	 * @timing:	Pointer to the timing for storing
 	 * @return 0 if OK, -ve on error
 	 */
 	int (*get_display_timing)(struct udevice *dev,
@@ -60,6 +60,7 @@ int panel_set_backlight(struct udevice *dev, int percent);
  * panel_get_display_timing() - Get display timings from panel.
  *
  * @dev:	Panel device containing the display timings
+ * @timing:	Pointer to the timing for storing
  * Return: 0 if OK, -ve on error
  */
 int panel_get_display_timing(struct udevice *dev,

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 2/4] panel: Lightweight support of get_modes()
  2025-12-04  8:31 [PATCH v3 0/4] video: simple_panel support for am335x evm panel Markus Schneider-Pargmann (TI.com)
  2025-12-04  8:31 ` [PATCH v3 1/4] panel: Add missing comment for the timing argument Markus Schneider-Pargmann (TI.com)
@ 2025-12-04  8:31 ` Markus Schneider-Pargmann (TI.com)
  2025-12-04  8:31 ` [PATCH v3 3/4] video: simple_panel: Add tfc_s9700rtwv43tr_01b Markus Schneider-Pargmann (TI.com)
  2025-12-04  8:31 ` [PATCH v3 4/4] video: ti: am335x: Support OF graph Markus Schneider-Pargmann (TI.com)
  3 siblings, 0 replies; 7+ messages in thread
From: Markus Schneider-Pargmann (TI.com) @ 2025-12-04  8:31 UTC (permalink / raw)
  To: u-boot
  Cc: Anatolij Gustschin, Tom Rini, Yannick Fertre, Patrice Chotard,
	Raphael Gallais-Pou, Sukrut Bellary, Fabio Estevam,
	Markus Schneider-Pargmann (TI.com)

Linux uses get_modes() to fetch all available panel modes from the
driver. This is also used to fetch the modes from Linux's simple panel
implementation where a list of drm_display_mode structs is used to
define the different possible panels.

To make our work easier, create a compatible way of fetching and
defining these modes in u-boot. get_modes() fetches the available modes
from the panel driver. The get_display_timing() call maps the
drm_display_mode properties to the display_timing struct. This call now
uses whatever panel operation is available, get_display_timing() or
get_modes().

Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
---
 drivers/video/panel-uclass.c | 38 ++++++++++++++++++++++--
 include/panel.h              | 69 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 104 insertions(+), 3 deletions(-)

diff --git a/drivers/video/panel-uclass.c b/drivers/video/panel-uclass.c
index 52a3466dc8c1203731dfcb62ebf4e63ed390bbb4..82e8339dde1bcd2cb8d93c7f7d75a29790089fb3 100644
--- a/drivers/video/panel-uclass.c
+++ b/drivers/video/panel-uclass.c
@@ -37,15 +37,47 @@ int panel_set_backlight(struct udevice *dev, int percent)
 	return ops->set_backlight(dev, percent);
 }
 
+static void drm_mode_to_display_timing(const struct drm_display_mode *mode,
+				       struct display_timing *timing)
+{
+	timing->pixelclock.typ = mode->clock * 1000; /* kHz to Hz */
+	timing->hactive.typ = mode->hdisplay;
+	timing->hfront_porch.typ = mode->hsync_start - mode->hdisplay;
+	timing->hsync_len.typ = mode->hsync_end - mode->hsync_start;
+	timing->hback_porch.typ = mode->htotal - mode->hsync_end;
+	timing->vactive.typ = mode->vdisplay;
+	timing->vfront_porch.typ = mode->vsync_start - mode->vdisplay;
+	timing->vsync_len.typ = mode->vsync_end - mode->vsync_start;
+	timing->vback_porch.typ = mode->vtotal - mode->vsync_end;
+
+	/* DRM_MODE_FLAG_* defines are already mapped to u-boot DISPLAY_FLAGS */
+	timing->flags = mode->flags;
+}
+
 int panel_get_display_timing(struct udevice *dev,
 			     struct display_timing *timings)
 {
 	struct panel_ops *ops = panel_get_ops(dev);
+	const struct drm_display_mode *modes;
+	int ret = -ENOSYS;
 
-	if (!ops->get_display_timing)
-		return -ENOSYS;
+	if (ops->get_display_timing) {
+		ret = ops->get_display_timing(dev, timings);
+		if (ret != -ENODEV)
+			return ret;
+	}
 
-	return ops->get_display_timing(dev, timings);
+	if (!ops->get_modes)
+		return ret;
+
+	ret = ops->get_modes(dev, &modes);
+	if (ret < 0)
+		return ret;
+	else if (ret == 0)
+		return -ENODEV;
+
+	drm_mode_to_display_timing(&modes[0], timings);
+	return 0;
 }
 
 UCLASS_DRIVER(panel) = {
diff --git a/include/panel.h b/include/panel.h
index e2764d72c57dcc4ae11d5f1553f1bfcd98996138..8d46fb26a07c2b1886a38f922eb6a90c3762ca38 100644
--- a/include/panel.h
+++ b/include/panel.h
@@ -7,6 +7,62 @@
 #ifndef _PANEL_H
 #define _PANEL_H
 
+#include <video.h>
+#include <fdtdec.h>
+
+/* DRM mode flags mapped to U-Boot DISPLAY_FLAGS for direct compatibility */
+#define DRM_MODE_FLAG_NHSYNC		DISPLAY_FLAGS_HSYNC_LOW
+#define DRM_MODE_FLAG_PHSYNC		DISPLAY_FLAGS_HSYNC_HIGH
+#define DRM_MODE_FLAG_NVSYNC		DISPLAY_FLAGS_VSYNC_LOW
+#define DRM_MODE_FLAG_PVSYNC		DISPLAY_FLAGS_VSYNC_HIGH
+#define DRM_MODE_FLAG_INTERLACE		DISPLAY_FLAGS_INTERLACED
+#define DRM_MODE_FLAG_DBLSCAN		DISPLAY_FLAGS_DOUBLESCAN
+#define DRM_MODE_FLAG_DBLCLK		DISPLAY_FLAGS_DOUBLECLK
+
+/**
+ * struct drm_display_mode - DRM kernel-internal display mode structure
+ *			     simplified for U-Boot
+ * @hdisplay: horizontal display size
+ * @hsync_start: horizontal sync start
+ * @hsync_end: horizontal sync end
+ * @htotal: horizontal total size
+ * @vdisplay: vertical display size
+ * @vsync_start: vertical sync start
+ * @vsync_end: vertical sync end
+ * @vtotal: vertical total size
+ *
+ * The horizontal and vertical timings are defined per the following diagram.
+ *
+ * ::
+ *
+ *
+ *               Active                 Front           Sync           Back
+ *              Region                 Porch                          Porch
+ *     <-----------------------><----------------><-------------><-------------->
+ *       //////////////////////|
+ *      ////////////////////// |
+ *     //////////////////////  |..................               ................
+ *                                                _______________
+ *     <----- [hv]display ----->
+ *     <------------- [hv]sync_start ------------>
+ *     <--------------------- [hv]sync_end --------------------->
+ *     <-------------------------------- [hv]total ----------------------------->*
+ */
+struct drm_display_mode {
+	unsigned int clock; /* in kHz */
+
+	u16 hdisplay;
+	u16 hsync_start;
+	u16 hsync_end;
+	u16 htotal;
+	u16 vdisplay;
+	u16 vsync_start;
+	u16 vsync_end;
+	u16 vtotal;
+
+	u32 flags;
+};
+
 struct panel_ops {
 	/**
 	 * enable_backlight() - Enable the panel backlight
@@ -34,6 +90,19 @@ struct panel_ops {
 	 */
 	int (*get_display_timing)(struct udevice *dev,
 				  struct display_timing *timing);
+
+	/**
+	 * get_modes() - Get display modes from panel
+	 *
+	 * Returns an array of display modes supported by the panel.
+	 * Similar to Linux's drm_panel_funcs->get_modes().
+	 *
+	 * @dev:	Panel device
+	 * @modes:	Pointer to an array of modes
+	 * @return number of modes if OK, -ve on error
+	 */
+	int (*get_modes)(struct udevice *dev,
+			 const struct drm_display_mode **modes);
 };
 
 #define panel_get_ops(dev)	((struct panel_ops *)(dev)->driver->ops)

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 3/4] video: simple_panel: Add tfc_s9700rtwv43tr_01b
  2025-12-04  8:31 [PATCH v3 0/4] video: simple_panel support for am335x evm panel Markus Schneider-Pargmann (TI.com)
  2025-12-04  8:31 ` [PATCH v3 1/4] panel: Add missing comment for the timing argument Markus Schneider-Pargmann (TI.com)
  2025-12-04  8:31 ` [PATCH v3 2/4] panel: Lightweight support of get_modes() Markus Schneider-Pargmann (TI.com)
@ 2025-12-04  8:31 ` Markus Schneider-Pargmann (TI.com)
  2025-12-30 17:30   ` Tom Rini
  2025-12-04  8:31 ` [PATCH v3 4/4] video: ti: am335x: Support OF graph Markus Schneider-Pargmann (TI.com)
  3 siblings, 1 reply; 7+ messages in thread
From: Markus Schneider-Pargmann (TI.com) @ 2025-12-04  8:31 UTC (permalink / raw)
  To: u-boot
  Cc: Anatolij Gustschin, Tom Rini, Yannick Fertre, Patrice Chotard,
	Raphael Gallais-Pou, Sukrut Bellary, Fabio Estevam,
	Markus Schneider-Pargmann (TI.com)

Add timing data for tfc_s9700rtwv43tr_01b from Linux to the simple-panel
driver. To support hardcoded timing data as Linux does, add a new struct
simple_panel_drv_data which holds a struct display_timing pointer as
well. The hardcoded timing data is preferred over DT parsing.

Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
---
 drivers/video/simple_panel.c | 62 +++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 56 insertions(+), 6 deletions(-)

diff --git a/drivers/video/simple_panel.c b/drivers/video/simple_panel.c
index 0f23df701bc3c40ea49380bbfa3743ee592d8bd3..987ad29995c9b0e30ec59fd56e52590b516fae52 100644
--- a/drivers/video/simple_panel.c
+++ b/drivers/video/simple_panel.c
@@ -22,6 +22,12 @@ struct simple_panel_priv {
 	struct gpio_desc enable;
 };
 
+struct simple_panel_drv_data {
+	const struct drm_display_mode *modes;
+	unsigned int num_modes;
+	const struct mipi_dsi_panel_plat *mipi_dsi;
+};
+
 static int simple_panel_enable_backlight(struct udevice *dev)
 {
 	struct simple_panel_priv *priv = dev_get_priv(dev);
@@ -104,13 +110,32 @@ static int simple_panel_get_edid_timing(struct udevice *dev,
 }
 #endif
 
+static int simple_panel_get_modes(struct udevice *dev,
+				  const struct drm_display_mode **modes)
+{
+	const struct simple_panel_drv_data *data =
+		(const struct simple_panel_drv_data *)dev_get_driver_data(dev);
+
+	if (!data || !data->modes || data->num_modes == 0)
+		return -ENODEV;
+
+	*modes = data->modes;
+	return data->num_modes;
+}
+
 static int simple_panel_get_display_timing(struct udevice *dev,
 					   struct display_timing *timings)
 {
+	const struct simple_panel_drv_data *data =
+		(const struct simple_panel_drv_data *)dev_get_driver_data(dev);
 	const void *blob = gd->fdt_blob;
 	int ret;
 
-	/* Check for timing subnode if panel node first */
+	/* Prefer the use of drm_display_mode if available */
+	if (data && data->modes && data->num_modes > 0)
+		return -ENODEV;
+
+	/* Check for timing subnode in panel node */
 	ret = fdtdec_decode_display_timing(blob, dev_of_offset(dev),
 					   0, timings);
 	if (!ret)
@@ -158,9 +183,9 @@ static int simple_panel_of_to_plat(struct udevice *dev)
 static int simple_panel_probe(struct udevice *dev)
 {
 	struct simple_panel_priv *priv = dev_get_priv(dev);
+	const struct simple_panel_drv_data *data =
+		(const struct simple_panel_drv_data *)dev_get_driver_data(dev);
 	struct mipi_dsi_panel_plat *plat = dev_get_plat(dev);
-	struct mipi_dsi_panel_plat *dsi_data =
-		(struct mipi_dsi_panel_plat *)dev_get_driver_data(dev);
 	int ret;
 
 	ret = regulator_set_enable_if_allowed(priv->reg, true);
@@ -170,8 +195,8 @@ static int simple_panel_probe(struct udevice *dev)
 		return ret;
 	}
 
-	if (dsi_data)
-		memcpy(plat, dsi_data, sizeof(struct mipi_dsi_panel_plat));
+	if (data->mipi_dsi)
+		memcpy(plat, data->mipi_dsi, sizeof(struct mipi_dsi_panel_plat));
 
 	return 0;
 }
@@ -180,6 +205,7 @@ static const struct panel_ops simple_panel_ops = {
 	.enable_backlight	= simple_panel_enable_backlight,
 	.set_backlight		= simple_panel_set_backlight,
 	.get_display_timing	= simple_panel_get_display_timing,
+	.get_modes		= simple_panel_get_modes,
 };
 
 static const struct mipi_dsi_panel_plat panasonic_vvx10f004b00 = {
@@ -189,6 +215,28 @@ static const struct mipi_dsi_panel_plat panasonic_vvx10f004b00 = {
 	.lanes = 4,
 };
 
+static const struct simple_panel_drv_data panasonic_vvx10f004b00_data = {
+	.mipi_dsi = &panasonic_vvx10f004b00,
+};
+
+static const struct drm_display_mode tfc_s9700rtwv43tr_01b_mode = {
+	.clock = 30000,
+	.hdisplay = 800,
+	.hsync_start = 800 + 39,
+	.hsync_end = 800 + 39 + 47,
+	.htotal = 800 + 39 + 47 + 39,
+	.vdisplay = 480,
+	.vsync_start = 480 + 13,
+	.vsync_end = 480 + 13 + 2,
+	.vtotal = 480 + 13 + 2 + 29,
+	.flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
+};
+
+static const struct simple_panel_drv_data tfc_s9700rtwv43tr_01b_data = {
+	.modes = &tfc_s9700rtwv43tr_01b_mode,
+	.num_modes = 1,
+};
+
 static const struct udevice_id simple_panel_ids[] = {
 	{ .compatible = "simple-panel" },
 	{ .compatible = "panel-lvds" },
@@ -200,7 +248,9 @@ static const struct udevice_id simple_panel_ids[] = {
 	{ .compatible = "sharp,lq123p1jx31" },
 	{ .compatible = "boe,nv101wxmn51" },
 	{ .compatible = "panasonic,vvx10f004b00",
-	  .data = (ulong)&panasonic_vvx10f004b00 },
+	  .data = (ulong)&panasonic_vvx10f004b00_data },
+	{ .compatible = "tfc,s9700rtwv43tr-01b",
+	  .data = (ulong)&tfc_s9700rtwv43tr_01b_data },
 	{ }
 };
 

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 4/4] video: ti: am335x: Support OF graph
  2025-12-04  8:31 [PATCH v3 0/4] video: simple_panel support for am335x evm panel Markus Schneider-Pargmann (TI.com)
                   ` (2 preceding siblings ...)
  2025-12-04  8:31 ` [PATCH v3 3/4] video: simple_panel: Add tfc_s9700rtwv43tr_01b Markus Schneider-Pargmann (TI.com)
@ 2025-12-04  8:31 ` Markus Schneider-Pargmann (TI.com)
  3 siblings, 0 replies; 7+ messages in thread
From: Markus Schneider-Pargmann (TI.com) @ 2025-12-04  8:31 UTC (permalink / raw)
  To: u-boot
  Cc: Anatolij Gustschin, Tom Rini, Yannick Fertre, Patrice Chotard,
	Raphael Gallais-Pou, Sukrut Bellary, Fabio Estevam,
	Markus Schneider-Pargmann (TI.com)

Add support for OF graph parsing. When using OF graph the default
tilcdc_panel_info is used which is the same as defined in Linux.

Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
---
 drivers/video/ti/tilcdc.c | 46 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 8 deletions(-)

diff --git a/drivers/video/ti/tilcdc.c b/drivers/video/ti/tilcdc.c
index 340c79299bacabc5a95dbeafbed3cb729afe7576..b498e81864b87464c00c1b23cb1d35394b06d9e8 100644
--- a/drivers/video/ti/tilcdc.c
+++ b/drivers/video/ti/tilcdc.c
@@ -6,6 +6,7 @@
 #include <clk.h>
 #include <dm.h>
 #include <dm/device_compat.h>
+#include <dm/ofnode_graph.h>
 #include <log.h>
 #include <panel.h>
 #include <video.h>
@@ -113,6 +114,18 @@ struct tilcdc_priv {
 
 DECLARE_GLOBAL_DATA_PTR;
 
+static const struct tilcdc_panel_info tilcdc_panel_info_default = {
+		.ac_bias                = 255,
+		.ac_bias_intrpt         = 0,
+		.dma_burst_sz           = 16,
+		.bpp                    = 16,
+		.fdd                    = 0x80,
+		.tft_alt_mode           = 0,
+		.sync_edge              = 0,
+		.sync_ctrl              = 1,
+		.raster_order           = 0,
+};
+
 static ulong tilcdc_set_pixel_clk_rate(struct udevice *dev, ulong rate)
 {
 	struct tilcdc_priv *priv = dev_get_priv(dev);
@@ -173,6 +186,8 @@ static int tilcdc_probe(struct udevice *dev)
 	struct udevice *panel, *clk_dev;
 	struct tilcdc_panel_info info;
 	struct display_timing timing;
+	bool is_legacy_panel = false;
+	ofnode remote;
 	ulong rate;
 	u32 reg;
 	int err;
@@ -181,10 +196,21 @@ static int tilcdc_probe(struct udevice *dev)
 	if (!(gd->flags & GD_FLG_RELOC))
 		return 0;
 
-	err = uclass_get_device(UCLASS_PANEL, 0, &panel);
-	if (err) {
-		dev_err(dev, "failed to get panel\n");
-		return err;
+	/* Try using remote node first, then fall back to using UCLASS_PANEL */
+	remote = ofnode_graph_get_remote_node(dev_ofnode(dev), -1, -1);
+	if (ofnode_valid(remote)) {
+		err = uclass_get_device_by_ofnode(UCLASS_PANEL, remote, &panel);
+		if (err) {
+			dev_err(dev, "failed to get panel via OF graph\n");
+			return err;
+		}
+	} else {
+		err = uclass_get_device(UCLASS_PANEL, 0, &panel);
+		if (err) {
+			dev_err(dev, "failed to get panel\n");
+			return err;
+		}
+		is_legacy_panel = true;
 	}
 
 	err = panel_get_display_timing(panel, &timing);
@@ -205,10 +231,14 @@ static int tilcdc_probe(struct udevice *dev)
 	if (timing.vactive.typ > LCDC_MAX_HEIGHT)
 		timing.vactive.typ = LCDC_MAX_HEIGHT;
 
-	err = tilcdc_panel_get_display_info(panel, &info);
-	if (err) {
-		dev_err(dev, "failed to get panel info\n");
-		return err;
+	if (is_legacy_panel) {
+		err = tilcdc_panel_get_display_info(panel, &info);
+		if (err) {
+			dev_err(dev, "failed to get panel info\n");
+			return err;
+		}
+	} else {
+		info = tilcdc_panel_info_default;
 	}
 
 	switch (info.bpp) {

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 3/4] video: simple_panel: Add tfc_s9700rtwv43tr_01b
  2025-12-04  8:31 ` [PATCH v3 3/4] video: simple_panel: Add tfc_s9700rtwv43tr_01b Markus Schneider-Pargmann (TI.com)
@ 2025-12-30 17:30   ` Tom Rini
  2026-01-04 20:21     ` Markus Schneider-Pargmann
  0 siblings, 1 reply; 7+ messages in thread
From: Tom Rini @ 2025-12-30 17:30 UTC (permalink / raw)
  To: Markus Schneider-Pargmann (TI.com)
  Cc: u-boot, Anatolij Gustschin, Yannick Fertre, Patrice Chotard,
	Raphael Gallais-Pou, Sukrut Bellary, Fabio Estevam

[-- Attachment #1: Type: text/plain, Size: 754 bytes --]

On Thu, Dec 04, 2025 at 09:31:16AM +0100, Markus Schneider-Pargmann (TI.com) wrote:

> Add timing data for tfc_s9700rtwv43tr_01b from Linux to the simple-panel
> driver. To support hardcoded timing data as Linux does, add a new struct
> simple_panel_drv_data which holds a struct display_timing pointer as
> well. The hardcoded timing data is preferred over DT parsing.
> 
> Reviewed-by: Fabio Estevam <festevam@gmail.com>
> Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
> ---
>  drivers/video/simple_panel.c | 62 +++++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 56 insertions(+), 6 deletions(-)

This leads to CI failures in test:
https://source.denx.de/u-boot/u-boot/-/jobs/1341980#L269

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 3/4] video: simple_panel: Add tfc_s9700rtwv43tr_01b
  2025-12-30 17:30   ` Tom Rini
@ 2026-01-04 20:21     ` Markus Schneider-Pargmann
  0 siblings, 0 replies; 7+ messages in thread
From: Markus Schneider-Pargmann @ 2026-01-04 20:21 UTC (permalink / raw)
  To: Tom Rini, Markus Schneider-Pargmann (TI.com)
  Cc: u-boot, Anatolij Gustschin, Yannick Fertre, Patrice Chotard,
	Raphael Gallais-Pou, Sukrut Bellary, Fabio Estevam

[-- Attachment #1: Type: text/plain, Size: 967 bytes --]

Happy new year!

On Tue Dec 30, 2025 at 6:30 PM CET, Tom Rini wrote:
> On Thu, Dec 04, 2025 at 09:31:16AM +0100, Markus Schneider-Pargmann (TI.com) wrote:
>
>> Add timing data for tfc_s9700rtwv43tr_01b from Linux to the simple-panel
>> driver. To support hardcoded timing data as Linux does, add a new struct
>> simple_panel_drv_data which holds a struct display_timing pointer as
>> well. The hardcoded timing data is preferred over DT parsing.
>> 
>> Reviewed-by: Fabio Estevam <festevam@gmail.com>
>> Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
>> ---
>>  drivers/video/simple_panel.c | 62 +++++++++++++++++++++++++++++++++++++++-----
>>  1 file changed, 56 insertions(+), 6 deletions(-)
>
> This leads to CI failures in test:
> https://source.denx.de/u-boot/u-boot/-/jobs/1341980#L269

Thank you! I missed checking if the data pointer exists before checking
if data->mipi_dsi exists. Sorry, will fix!

Best
Markus

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 289 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-01-05  0:32 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-04  8:31 [PATCH v3 0/4] video: simple_panel support for am335x evm panel Markus Schneider-Pargmann (TI.com)
2025-12-04  8:31 ` [PATCH v3 1/4] panel: Add missing comment for the timing argument Markus Schneider-Pargmann (TI.com)
2025-12-04  8:31 ` [PATCH v3 2/4] panel: Lightweight support of get_modes() Markus Schneider-Pargmann (TI.com)
2025-12-04  8:31 ` [PATCH v3 3/4] video: simple_panel: Add tfc_s9700rtwv43tr_01b Markus Schneider-Pargmann (TI.com)
2025-12-30 17:30   ` Tom Rini
2026-01-04 20:21     ` Markus Schneider-Pargmann
2025-12-04  8:31 ` [PATCH v3 4/4] video: ti: am335x: Support OF graph Markus Schneider-Pargmann (TI.com)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox