drm/i915: Switch plane properties to full atomic helper.
This will exercise our atomic pipeline for legacy property updates. Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
1356837e55
commit
c196e1d66c
3 changed files with 11 additions and 27 deletions
|
@ -117,6 +117,15 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
|
|||
crtc = crtc ? crtc : plane->crtc;
|
||||
intel_crtc = to_intel_crtc(crtc);
|
||||
|
||||
/*
|
||||
* Both crtc and plane->crtc could be NULL if we're updating a
|
||||
* property while the plane is disabled. We don't actually have
|
||||
* anything driver-specific we need to test in that case, so
|
||||
* just return success.
|
||||
*/
|
||||
if (!crtc)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The original src/dest coordinates are stored in state->base, but
|
||||
* we want to keep another copy internal to our driver that we can
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include <drm/i915_drm.h>
|
||||
#include "i915_drv.h"
|
||||
#include "i915_trace.h"
|
||||
#include <drm/drm_atomic_helper.h>
|
||||
#include <drm/drm_dp_helper.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
#include <drm/drm_plane_helper.h>
|
||||
|
@ -12055,7 +12056,7 @@ const struct drm_plane_funcs intel_plane_funcs = {
|
|||
.update_plane = drm_plane_helper_update,
|
||||
.disable_plane = drm_plane_helper_disable,
|
||||
.destroy = intel_plane_destroy,
|
||||
.set_property = intel_plane_set_property,
|
||||
.set_property = drm_atomic_helper_plane_set_property,
|
||||
.atomic_get_property = intel_plane_atomic_get_property,
|
||||
.atomic_set_property = intel_plane_atomic_set_property,
|
||||
.atomic_duplicate_state = intel_plane_duplicate_state,
|
||||
|
|
|
@ -1362,32 +1362,6 @@ out_unlock:
|
|||
return ret;
|
||||
}
|
||||
|
||||
int intel_plane_set_property(struct drm_plane *plane,
|
||||
struct drm_property *prop,
|
||||
uint64_t val)
|
||||
{
|
||||
struct drm_device *dev = plane->dev;
|
||||
uint64_t old_val;
|
||||
int ret = -ENOENT;
|
||||
|
||||
if (prop == dev->mode_config.rotation_property) {
|
||||
/* exactly one rotation angle please */
|
||||
if (hweight32(val & 0xf) != 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (plane->state->rotation == val)
|
||||
return 0;
|
||||
|
||||
old_val = plane->state->rotation;
|
||||
plane->state->rotation = val;
|
||||
ret = intel_plane_restore(plane);
|
||||
if (ret)
|
||||
plane->state->rotation = old_val;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int intel_plane_restore(struct drm_plane *plane)
|
||||
{
|
||||
if (!plane->crtc || !plane->fb)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue