mirror of https://gitee.com/openkylin/linux.git
drm/rockchip: allocate correct crtc state structure on reset
Because we are using a custom crtc_state structure, we must override the
reset helper to allocate the correct amount of memory.
Cc: stable@vger.kernel.org
Fixes: 4e257d9eee
("drm/rockchip: get rid of rockchip_drm_crtc_mode_config")
Signed-off-by: John Keeping <john@metanate.com>
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
This commit is contained in:
parent
f5e193a16d
commit
dc0b408f5a
|
@ -1052,6 +1052,17 @@ static void vop_crtc_destroy(struct drm_crtc *crtc)
|
|||
drm_crtc_cleanup(crtc);
|
||||
}
|
||||
|
||||
static void vop_crtc_reset(struct drm_crtc *crtc)
|
||||
{
|
||||
if (crtc->state)
|
||||
__drm_atomic_helper_crtc_destroy_state(crtc->state);
|
||||
kfree(crtc->state);
|
||||
|
||||
crtc->state = kzalloc(sizeof(struct rockchip_crtc_state), GFP_KERNEL);
|
||||
if (crtc->state)
|
||||
crtc->state->crtc = crtc;
|
||||
}
|
||||
|
||||
static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
|
||||
{
|
||||
struct rockchip_crtc_state *rockchip_state;
|
||||
|
@ -1077,7 +1088,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = {
|
|||
.set_config = drm_atomic_helper_set_config,
|
||||
.page_flip = drm_atomic_helper_page_flip,
|
||||
.destroy = vop_crtc_destroy,
|
||||
.reset = drm_atomic_helper_crtc_reset,
|
||||
.reset = vop_crtc_reset,
|
||||
.atomic_duplicate_state = vop_crtc_duplicate_state,
|
||||
.atomic_destroy_state = vop_crtc_destroy_state,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue