diff options
author | Rob Clark <robdclark@gmail.com> | 2014-11-19 12:29:33 -0500 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2014-11-21 08:57:22 -0500 |
commit | 3e2f29e4137c78a3bd7e1b85cf287ff375f6367e (patch) | |
tree | c2c827f1ef39695cd1e62f57cb6fa08161d9962a | |
parent | 32c0e3e24c885ffeecb6d3a67ecb607b8fe63129 (diff) |
drm/msm: atomic fixes
Fixes for a couple little issues found in testing.
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r-- | drivers/gpu/drm/msm/msm_atomic.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_fb.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_kms.h | 7 |
3 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c index 8cf3361daba3..f0de412e13dc 100644 --- a/drivers/gpu/drm/msm/msm_atomic.c +++ b/drivers/gpu/drm/msm/msm_atomic.c | |||
@@ -117,7 +117,7 @@ int msm_atomic_commit(struct drm_device *dev, | |||
117 | if (!plane) | 117 | if (!plane) |
118 | continue; | 118 | continue; |
119 | 119 | ||
120 | if (plane->state->fb != new_state->fb) | 120 | if ((plane->state->fb != new_state->fb) && new_state->fb) |
121 | add_fb(c, new_state->fb); | 121 | add_fb(c, new_state->fb); |
122 | } | 122 | } |
123 | 123 | ||
diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c index f4e42d506ff7..84dec161d836 100644 --- a/drivers/gpu/drm/msm/msm_fb.c +++ b/drivers/gpu/drm/msm/msm_fb.c | |||
@@ -120,6 +120,8 @@ void msm_framebuffer_cleanup(struct drm_framebuffer *fb, int id) | |||
120 | uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int id, int plane) | 120 | uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int id, int plane) |
121 | { | 121 | { |
122 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); | 122 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); |
123 | if (!msm_fb->planes[plane]) | ||
124 | return 0; | ||
123 | return msm_gem_iova(msm_fb->planes[plane], id); | 125 | return msm_gem_iova(msm_fb->planes[plane], id); |
124 | } | 126 | } |
125 | 127 | ||
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index 15a0fec99c70..1e9d8c2e6a5d 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h | |||
@@ -68,6 +68,11 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev); | |||
68 | /* TODO move these helper iterator macro somewhere common: */ | 68 | /* TODO move these helper iterator macro somewhere common: */ |
69 | #define for_each_plane_on_crtc(_crtc, _plane) \ | 69 | #define for_each_plane_on_crtc(_crtc, _plane) \ |
70 | list_for_each_entry((_plane), &(_crtc)->dev->mode_config.plane_list, head) \ | 70 | list_for_each_entry((_plane), &(_crtc)->dev->mode_config.plane_list, head) \ |
71 | if ((_plane)->crtc == (_crtc)) | 71 | if ((_plane)->state->crtc == (_crtc)) |
72 | |||
73 | #define for_each_pending_plane_on_crtc(_state, _crtc, _plane) \ | ||
74 | list_for_each_entry((_plane), &(_crtc)->dev->mode_config.plane_list, head) \ | ||
75 | if (({struct drm_plane_state *_ps = (_state)->plane_states[drm_plane_index(_plane)]; \ | ||
76 | _ps && _ps->crtc == (_crtc);})) | ||
72 | 77 | ||
73 | #endif /* __MSM_KMS_H__ */ | 78 | #endif /* __MSM_KMS_H__ */ |