aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-02-22 06:24:17 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-02-23 05:20:11 -0500
commit31c946e85ce6b48ce0f25e3cdca8362e4fe8b300 (patch)
treed58f76c5d29d2c3cc066bb1bdb9c8306d6f02af7
parent17a38d9c254bf4e3b0d8b7ccd5c1988cb63730ff (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.c25
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