@@ -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
16165static 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