[PATCH 1/3] drm/panel: Add display_timing support

Philipp Zabel p.zabel at pengutronix.de
Thu Dec 11 09:32:44 PST 2014


Many panel data sheets additionally to typical values list allowed ranges for
timings such as hsync/vsync lengths, porches, and the pixel clock rate. These
can be stored in a struct display_timing, to be used by an encoder mode_fixup
callback to clamp user provided timing values or to validate workarounds for
clock source limitations.

This patch adds a new drm_panel_funcs callback that returns the panels'
available display_timing entries.

Signed-off-by: Philipp Zabel <p.zabel at pengutronix.de>
---
 include/drm/drm_panel.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h
index 1fbcc96..13ff44b 100644
--- a/include/drm/drm_panel.h
+++ b/include/drm/drm_panel.h
@@ -29,6 +29,7 @@
 struct drm_connector;
 struct drm_device;
 struct drm_panel;
+struct display_timing;
 
 /**
  * struct drm_panel_funcs - perform operations on a given panel
@@ -38,6 +39,8 @@ struct drm_panel;
  * @enable: enable panel (turn on back light, etc.)
  * @get_modes: add modes to the connector that the panel is attached to and
  * return the number of modes added
+ * @get_timings: copy display timings into the provided array and return
+ * the number of display timings available
  *
  * The .prepare() function is typically called before the display controller
  * starts to transmit video data. Panel drivers can use this to turn the panel
@@ -68,6 +71,8 @@ struct drm_panel_funcs {
 	int (*prepare)(struct drm_panel *panel);
 	int (*enable)(struct drm_panel *panel);
 	int (*get_modes)(struct drm_panel *panel);
+	int (*get_timings)(struct drm_panel *panel, unsigned int num_timings,
+			   struct display_timing *timings);
 };
 
 struct drm_panel {
-- 
2.1.3



More information about the dri-devel mailing list