aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_simple_kms_helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_simple_kms_helper.c')
-rw-r--r--drivers/gpu/drm/drm_simple_kms_helper.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
index 9d3f6b70812c..6c327fdbaaee 100644
--- a/drivers/gpu/drm/drm_simple_kms_helper.c
+++ b/drivers/gpu/drm/drm_simple_kms_helper.c
@@ -34,6 +34,20 @@ static const struct drm_encoder_funcs drm_simple_kms_encoder_funcs = {
34 .destroy = drm_encoder_cleanup, 34 .destroy = drm_encoder_cleanup,
35}; 35};
36 36
37static enum drm_mode_status
38drm_simple_kms_crtc_mode_valid(struct drm_crtc *crtc,
39 const struct drm_display_mode *mode)
40{
41 struct drm_simple_display_pipe *pipe;
42
43 pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
44 if (!pipe->funcs || !pipe->funcs->mode_valid)
45 /* Anything goes */
46 return MODE_OK;
47
48 return pipe->funcs->mode_valid(crtc, mode);
49}
50
37static int drm_simple_kms_crtc_check(struct drm_crtc *crtc, 51static int drm_simple_kms_crtc_check(struct drm_crtc *crtc,
38 struct drm_crtc_state *state) 52 struct drm_crtc_state *state)
39{ 53{
@@ -72,6 +86,7 @@ static void drm_simple_kms_crtc_disable(struct drm_crtc *crtc,
72} 86}
73 87
74static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = { 88static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
89 .mode_valid = drm_simple_kms_crtc_mode_valid,
75 .atomic_check = drm_simple_kms_crtc_check, 90 .atomic_check = drm_simple_kms_crtc_check,
76 .atomic_enable = drm_simple_kms_crtc_enable, 91 .atomic_enable = drm_simple_kms_crtc_enable,
77 .atomic_disable = drm_simple_kms_crtc_disable, 92 .atomic_disable = drm_simple_kms_crtc_disable,