aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2014-11-19 12:29:33 -0500
committerRob Clark <robdclark@gmail.com>2014-11-21 08:57:22 -0500
commit3e2f29e4137c78a3bd7e1b85cf287ff375f6367e (patch)
treec2c827f1ef39695cd1e62f57cb6fa08161d9962a
parent32c0e3e24c885ffeecb6d3a67ecb607b8fe63129 (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.c2
-rw-r--r--drivers/gpu/drm/msm/msm_fb.c2
-rw-r--r--drivers/gpu/drm/msm/msm_kms.h7
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)
120uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int id, int plane) 120uint32_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__ */