diff options
Diffstat (limited to 'drivers/gpu/drm/drm_simple_kms_helper.c')
-rw-r--r-- | drivers/gpu/drm/drm_simple_kms_helper.c | 15 |
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 | ||
37 | static enum drm_mode_status | ||
38 | drm_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 | |||
37 | static int drm_simple_kms_crtc_check(struct drm_crtc *crtc, | 51 | static 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 | ||
74 | static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = { | 88 | static 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, |