Skip to content

Commit 7d36db0

Browse files
lumagrobclark
authored andcommitted
drm/msm/mdp5: switch to standard zpos property
Instead of implemeting zpos property on our own, use standard zpos property support. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Link: https://lore.kernel.org/r/20210525131316.3117809-6-dmitry.baryshkov@linaro.org Signed-off-by: Rob Clark <robdclark@chromium.org>
1 parent ed6b97e commit 7d36db0

3 files changed

Lines changed: 10 additions & 109 deletions

File tree

drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ static int pstate_cmp(const void *a, const void *b)
650650
{
651651
struct plane_state *pa = (struct plane_state *)a;
652652
struct plane_state *pb = (struct plane_state *)b;
653-
return pa->state->zpos - pb->state->zpos;
653+
return pa->state->base.normalized_zpos - pb->state->base.normalized_zpos;
654654
}
655655

656656
/* is there a helper for this? */

drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,6 @@ struct mdp5_plane_state {
9898
struct mdp5_hw_pipe *hwpipe;
9999
struct mdp5_hw_pipe *r_hwpipe; /* right hwpipe */
100100

101-
/* aligned with property */
102-
uint8_t zpos;
103-
104101
/* assigned by crtc blender */
105102
enum mdp_mixer_stage_id stage;
106103
};

drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c

Lines changed: 9 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -44,118 +44,22 @@ static void mdp5_plane_destroy(struct drm_plane *plane)
4444
kfree(mdp5_plane);
4545
}
4646

47-
static void mdp5_plane_install_rotation_property(struct drm_device *dev,
48-
struct drm_plane *plane)
47+
/* helper to install properties which are common to planes and crtcs */
48+
static void mdp5_plane_install_properties(struct drm_plane *plane,
49+
struct drm_mode_object *obj)
4950
{
5051
drm_plane_create_rotation_property(plane,
5152
DRM_MODE_ROTATE_0,
5253
DRM_MODE_ROTATE_0 |
5354
DRM_MODE_ROTATE_180 |
5455
DRM_MODE_REFLECT_X |
5556
DRM_MODE_REFLECT_Y);
56-
}
57-
58-
/* helper to install properties which are common to planes and crtcs */
59-
static void mdp5_plane_install_properties(struct drm_plane *plane,
60-
struct drm_mode_object *obj)
61-
{
62-
struct drm_device *dev = plane->dev;
63-
struct msm_drm_private *dev_priv = dev->dev_private;
64-
struct drm_property *prop;
65-
66-
#define INSTALL_PROPERTY(name, NAME, init_val, fnc, ...) do { \
67-
prop = dev_priv->plane_property[PLANE_PROP_##NAME]; \
68-
if (!prop) { \
69-
prop = drm_property_##fnc(dev, 0, #name, \
70-
##__VA_ARGS__); \
71-
if (!prop) { \
72-
dev_warn(dev->dev, \
73-
"Create property %s failed\n", \
74-
#name); \
75-
return; \
76-
} \
77-
dev_priv->plane_property[PLANE_PROP_##NAME] = prop; \
78-
} \
79-
drm_object_attach_property(&plane->base, prop, init_val); \
80-
} while (0)
81-
82-
#define INSTALL_RANGE_PROPERTY(name, NAME, min, max, init_val) \
83-
INSTALL_PROPERTY(name, NAME, init_val, \
84-
create_range, min, max)
85-
86-
#define INSTALL_ENUM_PROPERTY(name, NAME, init_val) \
87-
INSTALL_PROPERTY(name, NAME, init_val, \
88-
create_enum, name##_prop_enum_list, \
89-
ARRAY_SIZE(name##_prop_enum_list))
90-
91-
INSTALL_RANGE_PROPERTY(zpos, ZPOS, 1, 255, 1);
92-
93-
mdp5_plane_install_rotation_property(dev, plane);
9457
drm_plane_create_alpha_property(plane);
9558
drm_plane_create_blend_mode_property(plane,
9659
BIT(DRM_MODE_BLEND_PIXEL_NONE) |
9760
BIT(DRM_MODE_BLEND_PREMULTI) |
9861
BIT(DRM_MODE_BLEND_COVERAGE));
99-
100-
#undef INSTALL_RANGE_PROPERTY
101-
#undef INSTALL_ENUM_PROPERTY
102-
#undef INSTALL_PROPERTY
103-
}
104-
105-
static int mdp5_plane_atomic_set_property(struct drm_plane *plane,
106-
struct drm_plane_state *state, struct drm_property *property,
107-
uint64_t val)
108-
{
109-
struct drm_device *dev = plane->dev;
110-
struct mdp5_plane_state *pstate;
111-
struct msm_drm_private *dev_priv = dev->dev_private;
112-
int ret = 0;
113-
114-
pstate = to_mdp5_plane_state(state);
115-
116-
#define SET_PROPERTY(name, NAME, type) do { \
117-
if (dev_priv->plane_property[PLANE_PROP_##NAME] == property) { \
118-
pstate->name = (type)val; \
119-
DBG("Set property %s %d", #name, (type)val); \
120-
goto done; \
121-
} \
122-
} while (0)
123-
124-
SET_PROPERTY(zpos, ZPOS, uint8_t);
125-
126-
DRM_DEV_ERROR(dev->dev, "Invalid property\n");
127-
ret = -EINVAL;
128-
done:
129-
return ret;
130-
#undef SET_PROPERTY
131-
}
132-
133-
static int mdp5_plane_atomic_get_property(struct drm_plane *plane,
134-
const struct drm_plane_state *state,
135-
struct drm_property *property, uint64_t *val)
136-
{
137-
struct drm_device *dev = plane->dev;
138-
struct mdp5_plane_state *pstate;
139-
struct msm_drm_private *dev_priv = dev->dev_private;
140-
int ret = 0;
141-
142-
pstate = to_mdp5_plane_state(state);
143-
144-
#define GET_PROPERTY(name, NAME, type) do { \
145-
if (dev_priv->plane_property[PLANE_PROP_##NAME] == property) { \
146-
*val = pstate->name; \
147-
DBG("Get property %s %lld", #name, *val); \
148-
goto done; \
149-
} \
150-
} while (0)
151-
152-
GET_PROPERTY(zpos, ZPOS, uint8_t);
153-
154-
DRM_DEV_ERROR(dev->dev, "Invalid property\n");
155-
ret = -EINVAL;
156-
done:
157-
return ret;
158-
#undef SET_PROPERTY
62+
drm_plane_create_zpos_property(plane, 1, 1, 255);
15963
}
16064

16165
static void
@@ -172,7 +76,8 @@ mdp5_plane_atomic_print_state(struct drm_printer *p,
17276
pstate->r_hwpipe ? pstate->r_hwpipe->name :
17377
"(null)");
17478
drm_printf(p, "\tblend_mode=%u\n", pstate->base.pixel_blend_mode);
175-
drm_printf(p, "\tzpos=%u\n", pstate->zpos);
79+
drm_printf(p, "\tzpos=%u\n", pstate->base.zpos);
80+
drm_printf(p, "\tnormalized_zpos=%u\n", pstate->base.normalized_zpos);
17681
drm_printf(p, "\talpha=%u\n", pstate->base.alpha);
17782
drm_printf(p, "\tstage=%s\n", stage2name(pstate->stage));
17883
}
@@ -188,9 +93,10 @@ static void mdp5_plane_reset(struct drm_plane *plane)
18893
mdp5_state = kzalloc(sizeof(*mdp5_state), GFP_KERNEL);
18994

19095
if (plane->type == DRM_PLANE_TYPE_PRIMARY)
191-
mdp5_state->zpos = STAGE_BASE;
96+
mdp5_state->base.zpos = STAGE_BASE;
19297
else
193-
mdp5_state->zpos = STAGE0 + drm_plane_index(plane);
98+
mdp5_state->base.zpos = STAGE0 + drm_plane_index(plane);
99+
mdp5_state->base.normalized_zpos = mdp5_state->base.zpos;
194100

195101
__drm_atomic_helper_plane_reset(plane, &mdp5_state->base);
196102
}
@@ -228,8 +134,6 @@ static const struct drm_plane_funcs mdp5_plane_funcs = {
228134
.update_plane = drm_atomic_helper_update_plane,
229135
.disable_plane = drm_atomic_helper_disable_plane,
230136
.destroy = mdp5_plane_destroy,
231-
.atomic_set_property = mdp5_plane_atomic_set_property,
232-
.atomic_get_property = mdp5_plane_atomic_get_property,
233137
.reset = mdp5_plane_reset,
234138
.atomic_duplicate_state = mdp5_plane_duplicate_state,
235139
.atomic_destroy_state = mdp5_plane_destroy_state,

0 commit comments

Comments
 (0)