disp: msm: Pass the full state to crtc plane and connector atomic functions

Pass full state to crtc, plane, and connector atomic functions and retrieve
drm_crtc/plane/connector_state within the atomic function. Additionally,
the plane atomic update function is used as an upstream hook as well as
locally called in the plane restore path. To ensure both paths are functional,
introduce a plane atomic update version which takes in drm_plane_state
keeping with the previous parameter expectations.

Change-Id: Ia295935dd81ea8680a347eba0929e209d93ae830
Signed-off-by: Bruce Hoo <bingchua@codeaurora.org>
Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
这个提交包含在:
Bruce Hoo
2021-10-13 09:22:00 +08:00
提交者 Gerrit - the friendly Code Review server
父节点 1ef7ff26d6
当前提交 ddac29b52c
修改 4 个文件,包含 22 行新增9 行删除

查看文件

@@ -2704,11 +2704,12 @@ modeset_update:
}
static int sde_plane_atomic_check(struct drm_plane *plane,
struct drm_plane_state *state)
struct drm_atomic_state *atomic_state)
{
int ret = 0;
struct sde_plane *psde;
struct sde_plane_state *pstate;
struct drm_plane_state *state = drm_atomic_get_new_plane_state(atomic_state, plane);
if (!plane || !state) {
SDE_ERROR("invalid arg(s), plane %d state %d\n",
@@ -3392,7 +3393,7 @@ static void _sde_plane_atomic_disable(struct drm_plane *plane,
multirect_index, SDE_SSPP_MULTIRECT_TIME_MX);
}
static void sde_plane_atomic_update(struct drm_plane *plane,
static void _sde_plane_atomic_update(struct drm_plane *plane,
struct drm_plane_state *old_state)
{
struct sde_plane *psde;
@@ -3423,6 +3424,14 @@ static void sde_plane_atomic_update(struct drm_plane *plane,
}
}
static void sde_plane_atomic_update(struct drm_plane *plane,
struct drm_atomic_state *atomic_state)
{
struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(atomic_state, plane);
_sde_plane_atomic_update(plane, old_state);
}
void sde_plane_restore(struct drm_plane *plane)
{
struct sde_plane *psde;
@@ -3444,7 +3453,7 @@ void sde_plane_restore(struct drm_plane *plane)
SDE_DEBUG_PLANE(psde, "\n");
/* last plane state is same as current state */
sde_plane_atomic_update(plane, plane->state);
_sde_plane_atomic_update(plane, plane->state);
}
bool sde_plane_is_cache_required(struct drm_plane *plane,