summaryrefslogtreecommitdiff
path: root/include/edid.h
diff options
context:
space:
mode:
authorNeil Armstrong <narmstrong@baylibre.com>2019-07-04 15:52:06 +0200
committerAnatolij Gustschin <agust@denx.de>2019-07-29 00:21:40 +0200
commit1c1ed441b0d1d7d5fbf02cf89a390c04b18f8ba3 (patch)
tree9cbc29594340cd3961a60ed1800d6ef7dc5053f7 /include/edid.h
parent245b1029e1af8b2e71c6d7aebc7d68bdebd644d3 (diff)
downloadu-boot-1c1ed441b0d1d7d5fbf02cf89a390c04b18f8ba3.tar.gz
edid: add edid_get_timing_validate() variant to filter out edid modes
The original edid_get_timing() function returns the first valid timing, but on some plaforms, we could only supports a subset of the listed monitot's navite timing. Let's introduce a edid_get_timing_validate() adding a mode_valid callback including a private cookie pointer. If the callback returns false, the current timing is discared and the next one is checked. If no valid & supported timings are found, the function would return an error. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Diffstat (limited to 'include/edid.h')
-rw-r--r--include/edid.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/edid.h b/include/edid.h
index f05d2b82f2..2562733061 100644
--- a/include/edid.h
+++ b/include/edid.h
@@ -307,6 +307,28 @@ int edid_get_ranges(struct edid1_info *edid, unsigned int *hmin,
struct display_timing;
/**
+ * edid_get_timing_validate() - Get basic digital display parameters with
+ * mode selection callback
+ *
+ * @param buf Buffer containing EDID data
+ * @param buf_size Size of buffer in bytes
+ * @param timing Place to put preferring timing information
+ * @param panel_bits_per_colourp Place to put the number of bits per
+ * colour supported by the panel. This will be set to
+ * -1 if not available
+ * @param mode_valid Callback validating mode, returning true is mode is
+ * supported, false otherwise.
+ * @parem valid_priv Pointer to private data for mode_valid callback
+ * @return 0 if timings are OK, -ve on error
+ */
+int edid_get_timing_validate(u8 *buf, int buf_size,
+ struct display_timing *timing,
+ int *panel_bits_per_colourp,
+ bool (*mode_valid)(void *priv,
+ const struct display_timing *timing),
+ void *mode_valid_priv);
+
+/**
* edid_get_timing() - Get basic digital display parameters
*
* @param buf Buffer containing EDID data