mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
drm/rockchip: vop2: make sure dsc pd off take effect
after close dsc pd, the following function will set vop enter standby immediately, this will lead to dsc pd close failed, so we use vop2_power_domain_put_sync() instead of vop2_power_domain_put(). Signed-off-by: Sandy Huang <hjc@rock-chips.com> Change-Id: I9120e46ec2047e8358b28a3f153b54b4825a5e60
This commit is contained in:
@@ -1972,6 +1972,12 @@ static void vop2_power_domain_put(struct vop2_power_domain *pd)
|
||||
vop2_power_domain_put(pd->parent);
|
||||
}
|
||||
|
||||
static void vop2_power_domain_put_sync(struct vop2_power_domain *pd)
|
||||
{
|
||||
vop2_power_domain_put(pd);
|
||||
vop2_wait_power_domain_off(pd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Called if the pd ref_count reach 0 after 2.5
|
||||
* seconds.
|
||||
@@ -4997,12 +5003,14 @@ static void vop2_crtc_atomic_disable(struct drm_crtc *crtc,
|
||||
if (dual_channel) {
|
||||
vop2_power_domain_put(vop2->dscs[0].pd);
|
||||
vop2_power_domain_put(vop2->dscs[1].pd);
|
||||
vop2_wait_power_domain_off(vop2->dscs[0].pd);
|
||||
vop2_wait_power_domain_off(vop2->dscs[1].pd);
|
||||
vop2->dscs[0].pd->vp_mask = 0;
|
||||
vop2->dscs[1].pd->vp_mask = 0;
|
||||
vop2->dscs[0].attach_vp_id = -1;
|
||||
vop2->dscs[1].attach_vp_id = -1;
|
||||
} else {
|
||||
vop2_power_domain_put(vop2->dscs[vcstate->dsc_id].pd);
|
||||
vop2_power_domain_put_sync(vop2->dscs[vcstate->dsc_id].pd);
|
||||
vop2->dscs[vcstate->dsc_id].pd->vp_mask = 0;
|
||||
vop2->dscs[vcstate->dsc_id].attach_vp_id = -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user