mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-28 12:25:31 +00:00
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
This commit is contained in:
parent
6559c901cb
commit
dd701ae9ce
@ -114,6 +114,18 @@ static inline u32 mdp5_read(struct mdp5_kms *mdp5_kms, u32 reg)
|
|||||||
return msm_readl(mdp5_kms->mmio + 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 inline const char *pipe2name(enum mdp5_pipe pipe)
|
||||||
{
|
{
|
||||||
static const char *names[] = {
|
static const char *names[] = {
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <drm/drm_print.h>
|
||||||
#include "mdp5_kms.h"
|
#include "mdp5_kms.h"
|
||||||
|
|
||||||
struct mdp5_plane {
|
struct mdp5_plane {
|
||||||
@ -181,6 +182,20 @@ done:
|
|||||||
#undef SET_PROPERTY
|
#undef SET_PROPERTY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mdp5_plane_atomic_print_state(struct drm_printer *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)
|
static void mdp5_plane_reset(struct drm_plane *plane)
|
||||||
{
|
{
|
||||||
struct mdp5_plane_state *mdp5_state;
|
struct mdp5_plane_state *mdp5_state;
|
||||||
@ -244,6 +259,7 @@ static const struct drm_plane_funcs mdp5_plane_funcs = {
|
|||||||
.reset = mdp5_plane_reset,
|
.reset = mdp5_plane_reset,
|
||||||
.atomic_duplicate_state = mdp5_plane_duplicate_state,
|
.atomic_duplicate_state = mdp5_plane_duplicate_state,
|
||||||
.atomic_destroy_state = mdp5_plane_destroy_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,
|
static int mdp5_plane_prepare_fb(struct drm_plane *plane,
|
||||||
@ -913,7 +929,7 @@ struct drm_plane *mdp5_plane_init(struct drm_device *dev,
|
|||||||
type = private_plane ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
|
type = private_plane ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
|
||||||
ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs,
|
ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs,
|
||||||
mdp5_plane->formats, mdp5_plane->nformats,
|
mdp5_plane->formats, mdp5_plane->nformats,
|
||||||
type, NULL);
|
type, "%s", mdp5_plane->name);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user