|
@@ -525,10 +525,12 @@ int drm_plane_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
|
|
|
|
|
|
if (plane->funcs->atomic_duplicate_state)
|
|
|
plane_state = plane->funcs->atomic_duplicate_state(plane);
|
|
|
- else if (plane->state)
|
|
|
+ else {
|
|
|
+ if (!plane->state)
|
|
|
+ drm_atomic_helper_plane_reset(plane);
|
|
|
+
|
|
|
plane_state = drm_atomic_helper_plane_duplicate_state(plane);
|
|
|
- else
|
|
|
- plane_state = kzalloc(sizeof(*plane_state), GFP_KERNEL);
|
|
|
+ }
|
|
|
if (!plane_state)
|
|
|
return -ENOMEM;
|
|
|
plane_state->plane = plane;
|
|
@@ -572,10 +574,12 @@ int drm_plane_helper_disable(struct drm_plane *plane)
|
|
|
|
|
|
if (plane->funcs->atomic_duplicate_state)
|
|
|
plane_state = plane->funcs->atomic_duplicate_state(plane);
|
|
|
- else if (plane->state)
|
|
|
+ else {
|
|
|
+ if (!plane->state)
|
|
|
+ drm_atomic_helper_plane_reset(plane);
|
|
|
+
|
|
|
plane_state = drm_atomic_helper_plane_duplicate_state(plane);
|
|
|
- else
|
|
|
- plane_state = kzalloc(sizeof(*plane_state), GFP_KERNEL);
|
|
|
+ }
|
|
|
if (!plane_state)
|
|
|
return -ENOMEM;
|
|
|
plane_state->plane = plane;
|