simple_panel: add support for get_display_timing
authorSvyatoslav Ryhel <clamor95@gmail.com>
Mon, 27 Mar 2023 08:11:49 +0000 (11:11 +0300)
committerAnatolij Gustschin <agust@denx.de>
Fri, 7 Apr 2023 17:53:38 +0000 (19:53 +0200)
Some cases may require passing display timings from
panel driver. To handle such cases support parsing
device tree panel node for timing subnode.

Tested-by: Robert Eckelmann <longnoserob@gmail.com> # ASUS TF101 T20
Tested-by: Nicolas Chauvet <kwizart@gmail.com> # Paz00
Tested-by: Svyatoslav Ryhel <clamor95@gmail.com> # Google Nexus 7 2012
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
drivers/video/simple_panel.c

index 91c91ee..5a82626 100644 (file)
@@ -48,6 +48,15 @@ static int simple_panel_set_backlight(struct udevice *dev, int percent)
        return 0;
 }
 
+static int simple_panel_get_display_timing(struct udevice *dev,
+                                          struct display_timing *timings)
+{
+       const void *blob = gd->fdt_blob;
+
+       return fdtdec_decode_display_timing(blob, dev_of_offset(dev),
+                                           0, timings);
+}
+
 static int simple_panel_of_to_plat(struct udevice *dev)
 {
        struct simple_panel_priv *priv = dev_get_priv(dev);
@@ -102,6 +111,7 @@ static int simple_panel_probe(struct udevice *dev)
 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,
 };
 
 static const struct udevice_id simple_panel_ids[] = {