diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-02-22 06:24:17 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-02-23 05:20:11 -0500 |
commit | 31c946e85ce6b48ce0f25e3cdca8362e4fe8b300 (patch) | |
tree | d58f76c5d29d2c3cc066bb1bdb9c8306d6f02af7 | |
parent | 17a38d9c254bf4e3b0d8b7ccd5c1988cb63730ff (diff) |
drm: If available use atomic state in getcrtc ioctl
This way drivers fully converted to atomic don't need to update these
legacy state variables in their modeset code any more.
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 6b00173d1be4..4dacee645153 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -2009,21 +2009,32 @@ int drm_mode_getcrtc(struct drm_device *dev, | |||
2009 | return -ENOENT; | 2009 | return -ENOENT; |
2010 | 2010 | ||
2011 | drm_modeset_lock_crtc(crtc, crtc->primary); | 2011 | drm_modeset_lock_crtc(crtc, crtc->primary); |
2012 | crtc_resp->x = crtc->x; | ||
2013 | crtc_resp->y = crtc->y; | ||
2014 | crtc_resp->gamma_size = crtc->gamma_size; | 2012 | crtc_resp->gamma_size = crtc->gamma_size; |
2015 | if (crtc->primary->fb) | 2013 | if (crtc->primary->fb) |
2016 | crtc_resp->fb_id = crtc->primary->fb->base.id; | 2014 | crtc_resp->fb_id = crtc->primary->fb->base.id; |
2017 | else | 2015 | else |
2018 | crtc_resp->fb_id = 0; | 2016 | crtc_resp->fb_id = 0; |
2019 | 2017 | ||
2020 | if (crtc->enabled) { | 2018 | if (crtc->state) { |
2021 | 2019 | crtc_resp->x = crtc->primary->state->src_x >> 16; | |
2022 | drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->mode); | 2020 | crtc_resp->y = crtc->primary->state->src_y >> 16; |
2023 | crtc_resp->mode_valid = 1; | 2021 | if (crtc->state->enable) { |
2022 | drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->state->mode); | ||
2023 | crtc_resp->mode_valid = 1; | ||
2024 | 2024 | ||
2025 | } else { | ||
2026 | crtc_resp->mode_valid = 0; | ||
2027 | } | ||
2025 | } else { | 2028 | } else { |
2026 | crtc_resp->mode_valid = 0; | 2029 | crtc_resp->x = crtc->x; |
2030 | crtc_resp->y = crtc->y; | ||
2031 | if (crtc->enabled) { | ||
2032 | drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->mode); | ||
2033 | crtc_resp->mode_valid = 1; | ||
2034 | |||
2035 | } else { | ||
2036 | crtc_resp->mode_valid = 0; | ||
2037 | } | ||
2027 | } | 2038 | } |
2028 | drm_modeset_unlock_crtc(crtc); | 2039 | drm_modeset_unlock_crtc(crtc); |
2029 | 2040 | ||