summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Chen <jacob-chen@iotwrt.com>2016-03-14 11:20:14 +0800
committerAnatolij Gustschin <agust@denx.de>2016-03-14 22:01:26 +0100
commiteab314f5909dba208d4cb7dc5aac6ee707d5d171 (patch)
tree9e4064a3f29710421e9127baba49d806f2babbcb
parentdf61a74e6845ec9bdcdd48d2aff5e9c2c6debeaa (diff)
downloadu-boot-imx-eab314f5909dba208d4cb7dc5aac6ee707d5d171.zip
u-boot-imx-eab314f5909dba208d4cb7dc5aac6ee707d5d171.tar.gz
u-boot-imx-eab314f5909dba208d4cb7dc5aac6ee707d5d171.tar.bz2
dm: video: Add a operation to display uclass
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>
-rw-r--r--drivers/video/display-uclass.c3
-rw-r--r--include/display.h11
2 files changed, 13 insertions, 1 deletions
diff --git a/drivers/video/display-uclass.c b/drivers/video/display-uclass.c
index 31522ea..e4763de 100644
--- a/drivers/video/display-uclass.c
+++ b/drivers/video/display-uclass.c
@@ -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));
diff --git a/include/display.h b/include/display.h
index c180e76..b1c4766 100644
--- a/include/display.h
+++ b/include/display.h
@@ -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
@@ -43,6 +43,15 @@ int display_enable(struct udevice *dev, int panel_bpp,
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
*
* @dev: Device to read from