drm/panel: Add display timing support
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 panel's available display_timing entries. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
725c9d40f3
commit
2938931f37
|
@ -29,6 +29,7 @@
|
||||||
struct drm_connector;
|
struct drm_connector;
|
||||||
struct drm_device;
|
struct drm_device;
|
||||||
struct drm_panel;
|
struct drm_panel;
|
||||||
|
struct display_timing;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct drm_panel_funcs - perform operations on a given panel
|
* 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.)
|
* @enable: enable panel (turn on back light, etc.)
|
||||||
* @get_modes: add modes to the connector that the panel is attached to and
|
* @get_modes: add modes to the connector that the panel is attached to and
|
||||||
* return the number of modes added
|
* 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
|
* The .prepare() function is typically called before the display controller
|
||||||
* starts to transmit video data. Panel drivers can use this to turn the panel
|
* 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 (*prepare)(struct drm_panel *panel);
|
||||||
int (*enable)(struct drm_panel *panel);
|
int (*enable)(struct drm_panel *panel);
|
||||||
int (*get_modes)(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 {
|
struct drm_panel {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user