diff mbox

[6/6] drm/msm/mdp5: add atomic_print_state support

Message ID 1476489353-16261-7-git-send-email-robdclark@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rob Clark Oct. 14, 2016, 11:55 p.m. UTC
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>
---
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h   | 12 ++++++++++++
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 18 +++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

Comments

Sean Paul Oct. 17, 2016, 5 p.m. UTC | #1
On Fri, Oct 14, 2016 at 7:55 PM, Rob Clark <robdclark@gmail.com> wrote:
> We subclass drm_plane_state, so add mdp5_plane_atomic_print_state() to
> dump out our own driver specific plane state.
>

Reviewed-by: Sean Paul <seanpaul@chromium.org>

> Signed-off-by: Rob Clark <robdclark@gmail.com>
> ---
>  drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h   | 12 ++++++++++++
>  drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 18 +++++++++++++++++-
>  2 files changed, 29 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
> index e4b3fb3..3502711 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
> +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
> @@ -120,6 +120,18 @@ static inline u32 mdp5_read(struct mdp5_kms *mdp5_kms, u32 reg)
>         return msm_readl(mdp5_kms->mmio + reg);
>  }
>
> +static inline const char *stage2name(enum mdp_mixer_stage_id stage)
> +{
> +       static const char *names[] = {
> +#define NAME(n) [n] = #n
> +               NAME(STAGE_UNUSED), NAME(STAGE_BASE),
> +               NAME(STAGE0), NAME(STAGE1), NAME(STAGE2),
> +               NAME(STAGE3), NAME(STAGE4), NAME(STAGE6),
> +#undef NAME
> +       };
> +       return names[stage];
> +}
> +
>  static inline const char *pipe2name(enum mdp5_pipe pipe)
>  {
>         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 b6f1fc66..9f99b4d 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 @@
>   * this program.  If not, see <http://www.gnu.org/licenses/>.
>   */
>
> +#include <drm/drm_print.h>
>  #include "mdp5_kms.h"
>
>  struct mdp5_plane {
> @@ -187,6 +188,20 @@ done:
>  #undef SET_PROPERTY
>  }
>
> +static void
> +mdp5_plane_atomic_print_state(struct drm_print *p,
> +               const struct drm_plane_state *state)
> +{
> +       struct mdp5_plane_state *pstate = to_mdp5_plane_state(state);
> +
> +       drm_printf(p, "\tpremultiplied=%u\n", pstate->premultiplied);
> +       drm_printf(p, "\tzpos=%u\n", pstate->zpos);
> +       drm_printf(p, "\talpha=%u\n", pstate->alpha);
> +       drm_printf(p, "\tstage=%s\n", stage2name(pstate->stage));
> +       drm_printf(p, "\tmode_changed=%u\n", pstate->mode_changed);
> +       drm_printf(p, "\tpending=%u\n", pstate->pending);
> +}
> +
>  static void mdp5_plane_reset(struct drm_plane *plane)
>  {
>         struct mdp5_plane_state *mdp5_state;
> @@ -250,6 +265,7 @@ static const struct drm_plane_funcs mdp5_plane_funcs = {
>                 .reset = mdp5_plane_reset,
>                 .atomic_duplicate_state = mdp5_plane_duplicate_state,
>                 .atomic_destroy_state = mdp5_plane_destroy_state,
> +               .atomic_print_state = mdp5_plane_atomic_print_state,
>  };
>
>  static int mdp5_plane_prepare_fb(struct drm_plane *plane,
> @@ -907,7 +923,7 @@ struct drm_plane *mdp5_plane_init(struct drm_device *dev,
>         type = private_plane ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
>         ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs,
>                                  mdp5_plane->formats, mdp5_plane->nformats,
> -                                type, NULL);
> +                                type, "%s", mdp5_plane->name);
>         if (ret)
>                 goto fail;
>
> --
> 2.7.4
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
index e4b3fb3..3502711 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
@@ -120,6 +120,18 @@  static inline u32 mdp5_read(struct mdp5_kms *mdp5_kms, u32 reg)
 	return msm_readl(mdp5_kms->mmio + reg);
 }
 
+static inline const char *stage2name(enum mdp_mixer_stage_id stage)
+{
+	static const char *names[] = {
+#define NAME(n) [n] = #n
+		NAME(STAGE_UNUSED), NAME(STAGE_BASE),
+		NAME(STAGE0), NAME(STAGE1), NAME(STAGE2),
+		NAME(STAGE3), NAME(STAGE4), NAME(STAGE6),
+#undef NAME
+	};
+	return names[stage];
+}
+
 static inline const char *pipe2name(enum mdp5_pipe pipe)
 {
 	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 b6f1fc66..9f99b4d 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 @@ 
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <drm/drm_print.h>
 #include "mdp5_kms.h"
 
 struct mdp5_plane {
@@ -187,6 +188,20 @@  done:
 #undef SET_PROPERTY
 }
 
+static void
+mdp5_plane_atomic_print_state(struct drm_print *p,
+		const struct drm_plane_state *state)
+{
+	struct mdp5_plane_state *pstate = to_mdp5_plane_state(state);
+
+	drm_printf(p, "\tpremultiplied=%u\n", pstate->premultiplied);
+	drm_printf(p, "\tzpos=%u\n", pstate->zpos);
+	drm_printf(p, "\talpha=%u\n", pstate->alpha);
+	drm_printf(p, "\tstage=%s\n", stage2name(pstate->stage));
+	drm_printf(p, "\tmode_changed=%u\n", pstate->mode_changed);
+	drm_printf(p, "\tpending=%u\n", pstate->pending);
+}
+
 static void mdp5_plane_reset(struct drm_plane *plane)
 {
 	struct mdp5_plane_state *mdp5_state;
@@ -250,6 +265,7 @@  static const struct drm_plane_funcs mdp5_plane_funcs = {
 		.reset = mdp5_plane_reset,
 		.atomic_duplicate_state = mdp5_plane_duplicate_state,
 		.atomic_destroy_state = mdp5_plane_destroy_state,
+		.atomic_print_state = mdp5_plane_atomic_print_state,
 };
 
 static int mdp5_plane_prepare_fb(struct drm_plane *plane,
@@ -907,7 +923,7 @@  struct drm_plane *mdp5_plane_init(struct drm_device *dev,
 	type = private_plane ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
 	ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs,
 				 mdp5_plane->formats, mdp5_plane->nformats,
-				 type, NULL);
+				 type, "%s", mdp5_plane->name);
 	if (ret)
 		goto fail;