drm: simple_kms_helper: Add mode_valid() callback support
The PL111 needs to filter valid modes based on memory bandwidth. I guess it is a pretty simple operation, so we can still claim the DRM KMS helper pipeline is simple after adding this (optional) vtable callback. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/20180220072859.3386-1-linus.walleij@linaro.org
This commit is contained in:
parent
1aecabb5b2
commit
40275dc4ed
|
@ -34,6 +34,20 @@ static const struct drm_encoder_funcs drm_simple_kms_encoder_funcs = {
|
|||
.destroy = drm_encoder_cleanup,
|
||||
};
|
||||
|
||||
static enum drm_mode_status
|
||||
drm_simple_kms_crtc_mode_valid(struct drm_crtc *crtc,
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
struct drm_simple_display_pipe *pipe;
|
||||
|
||||
pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
|
||||
if (!pipe->funcs || !pipe->funcs->mode_valid)
|
||||
/* Anything goes */
|
||||
return MODE_OK;
|
||||
|
||||
return pipe->funcs->mode_valid(crtc, mode);
|
||||
}
|
||||
|
||||
static int drm_simple_kms_crtc_check(struct drm_crtc *crtc,
|
||||
struct drm_crtc_state *state)
|
||||
{
|
||||
|
@ -72,6 +86,7 @@ static void drm_simple_kms_crtc_disable(struct drm_crtc *crtc,
|
|||
}
|
||||
|
||||
static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
|
||||
.mode_valid = drm_simple_kms_crtc_mode_valid,
|
||||
.atomic_check = drm_simple_kms_crtc_check,
|
||||
.atomic_enable = drm_simple_kms_crtc_enable,
|
||||
.atomic_disable = drm_simple_kms_crtc_disable,
|
||||
|
|
|
@ -21,6 +21,20 @@ struct drm_simple_display_pipe;
|
|||
* display pipeline
|
||||
*/
|
||||
struct drm_simple_display_pipe_funcs {
|
||||
/**
|
||||
* @mode_valid:
|
||||
*
|
||||
* This function is called to filter out valid modes from the
|
||||
* suggestions suggested by the bridge or display. This optional
|
||||
* hook is passed in when initializing the pipeline.
|
||||
*
|
||||
* RETURNS:
|
||||
*
|
||||
* drm_mode_status Enum
|
||||
*/
|
||||
enum drm_mode_status (*mode_valid)(struct drm_crtc *crtc,
|
||||
const struct drm_display_mode *mode);
|
||||
|
||||
/**
|
||||
* @enable:
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue