diff options
author | Rob Clark <robdclark@gmail.com> | 2016-11-05 11:08:11 -0400 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2016-11-08 16:38:03 -0500 |
commit | dd701ae9ce37e577857e67d05f38573334417b33 (patch) | |
tree | ca73f14b3d0291c494ef070f8395e32881ba05e8 | |
parent | 6559c901cb4840e46893d587d8af435aac9c4c3f (diff) |
drm/msm/mdp5: add atomic_print_state support
We subclass drm_plane_state, so add mdp5_plane_atomic_print_state() to
dump out our own driver specific plane state.
Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1478358492-30738-7-git-send-email-robdclark@gmail.com
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 18 |
2 files changed, 29 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h index 03738927be10..c6fbcfad2d59 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | |||
@@ -114,6 +114,18 @@ static inline u32 mdp5_read(struct mdp5_kms *mdp5_kms, u32 reg) | |||
114 | return msm_readl(mdp5_kms->mmio + reg); | 114 | return msm_readl(mdp5_kms->mmio + reg); |
115 | } | 115 | } |
116 | 116 | ||
117 | static inline const char *stage2name(enum mdp_mixer_stage_id stage) | ||
118 | { | ||
119 | static const char *names[] = { | ||
120 | #define NAME(n) [n] = #n | ||
121 | NAME(STAGE_UNUSED), NAME(STAGE_BASE), | ||
122 | NAME(STAGE0), NAME(STAGE1), NAME(STAGE2), | ||
123 | NAME(STAGE3), NAME(STAGE4), NAME(STAGE6), | ||
124 | #undef NAME | ||
125 | }; | ||
126 | return names[stage]; | ||
127 | } | ||
128 | |||
117 | static inline const char *pipe2name(enum mdp5_pipe pipe) | 129 | static inline const char *pipe2name(enum mdp5_pipe pipe) |
118 | { | 130 | { |
119 | static const char *names[] = { | 131 | static const char *names[] = { |
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c index cf50d3ec8d1b..8bf55e3450c5 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * this program. If not, see <http://www.gnu.org/licenses/>. | 16 | * this program. If not, see <http://www.gnu.org/licenses/>. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <drm/drm_print.h> | ||
19 | #include "mdp5_kms.h" | 20 | #include "mdp5_kms.h" |
20 | 21 | ||
21 | struct mdp5_plane { | 22 | struct mdp5_plane { |
@@ -181,6 +182,20 @@ done: | |||
181 | #undef SET_PROPERTY | 182 | #undef SET_PROPERTY |
182 | } | 183 | } |
183 | 184 | ||
185 | static void | ||
186 | mdp5_plane_atomic_print_state(struct drm_printer *p, | ||
187 | const struct drm_plane_state *state) | ||
188 | { | ||
189 | struct mdp5_plane_state *pstate = to_mdp5_plane_state(state); | ||
190 | |||
191 | drm_printf(p, "\tpremultiplied=%u\n", pstate->premultiplied); | ||
192 | drm_printf(p, "\tzpos=%u\n", pstate->zpos); | ||
193 | drm_printf(p, "\talpha=%u\n", pstate->alpha); | ||
194 | drm_printf(p, "\tstage=%s\n", stage2name(pstate->stage)); | ||
195 | drm_printf(p, "\tmode_changed=%u\n", pstate->mode_changed); | ||
196 | drm_printf(p, "\tpending=%u\n", pstate->pending); | ||
197 | } | ||
198 | |||
184 | static void mdp5_plane_reset(struct drm_plane *plane) | 199 | static void mdp5_plane_reset(struct drm_plane *plane) |
185 | { | 200 | { |
186 | struct mdp5_plane_state *mdp5_state; | 201 | struct mdp5_plane_state *mdp5_state; |
@@ -244,6 +259,7 @@ static const struct drm_plane_funcs mdp5_plane_funcs = { | |||
244 | .reset = mdp5_plane_reset, | 259 | .reset = mdp5_plane_reset, |
245 | .atomic_duplicate_state = mdp5_plane_duplicate_state, | 260 | .atomic_duplicate_state = mdp5_plane_duplicate_state, |
246 | .atomic_destroy_state = mdp5_plane_destroy_state, | 261 | .atomic_destroy_state = mdp5_plane_destroy_state, |
262 | .atomic_print_state = mdp5_plane_atomic_print_state, | ||
247 | }; | 263 | }; |
248 | 264 | ||
249 | static int mdp5_plane_prepare_fb(struct drm_plane *plane, | 265 | static int mdp5_plane_prepare_fb(struct drm_plane *plane, |
@@ -913,7 +929,7 @@ struct drm_plane *mdp5_plane_init(struct drm_device *dev, | |||
913 | type = private_plane ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY; | 929 | type = private_plane ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY; |
914 | ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs, | 930 | ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs, |
915 | mdp5_plane->formats, mdp5_plane->nformats, | 931 | mdp5_plane->formats, mdp5_plane->nformats, |
916 | type, NULL); | 932 | type, "%s", mdp5_plane->name); |
917 | if (ret) | 933 | if (ret) |
918 | goto fail; | 934 | goto fail; |
919 | 935 | ||