dm: video: Add a operation to display uclass
authorJacob Chen <jacob-chen@iotwrt.com>
Mon, 14 Mar 2016 03:20:14 +0000 (11:20 +0800)
committerAnatolij Gustschin <agust@denx.de>
Mon, 14 Mar 2016 21:01:26 +0000 (22:01 +0100)
The current display class only allow to get timing from edid.
So add a operation to get timing directly from driver.
In driver, I will use fdtdec_decode_display_timing to get timing.

Signed-off-by: Jacob Chen <jacob-chen@iotwrt.com>
Acked-by: Simon Glass <sjg@chromium.org>
drivers/video/display-uclass.c
include/display.h

index 31522eac65a54aa490632d7bb501891cf49cf545..e4763de73df5e312ee810eeda9edb8d066176bd9 100644 (file)
@@ -36,6 +36,9 @@ int display_read_timing(struct udevice *dev, struct display_timing *timing)
        u8 buf[EDID_EXT_SIZE];
        int ret;
 
+       if (ops && ops->read_timing)
+               return ops->read_timing(dev, timing);
+
        if (!ops || !ops->read_edid)
                return -ENOSYS;
        ret = ops->read_edid(dev, buf, sizeof(buf));
index c180e76e534baa908d416914bed96e43e17188ec..b1c476628b4f9aa0cb882e435f0535a681a92df3 100644 (file)
@@ -23,7 +23,7 @@ struct display_plat {
 };
 
 /**
- * display_read_timing() - Read timing information from EDID
+ * display_read_timing() - Read timing information
  *
  * @dev:       Device to read from
  * @return 0 if OK, -ve on error
@@ -42,6 +42,15 @@ int display_enable(struct udevice *dev, int panel_bpp,
                   const struct display_timing *timing);
 
 struct dm_display_ops {
+       /**
+        * read_timing() - Read information directly
+        *
+        * @dev:        Device to read from
+        * @timing:     Display timings
+        * @return 0 if OK, -ve on error
+        */
+       int (*read_timing)(struct udevice *dev, struct display_timing *timing);
+
        /**
         * read_edid() - Read information from EDID
         *