drm/rockchip: vop2: move power up plane pd before read regsbak

power up plane should be before pd up, otherwise all the
power down module register is zero.

Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Change-Id: I0959d442292e1f3753c965a1a15280cc5de28950
This commit is contained in:
Sandy Huang
2024-05-29 16:32:03 +08:00
committed by Tao Huang
parent 6788007ec5
commit 6282856b67

View File

@@ -4174,6 +4174,30 @@ static void vop2_initial(struct drm_crtc *crtc)
if (vop2_soc_is_rk3566())
VOP_CTRL_SET(vop2, otp_en, 1);
/*
* Close dynamic turn on/off rk3588 PD_ESMART and keep esmart pd on when enable
*
* This should be before read regs to regsbak, otherwise all the power down module
* register is zero.
*/
if (vop2->version == VOP_VERSION_RK3588) {
struct vop2_power_domain *esmart_pd = vop2_find_pd_by_id(vop2, VOP2_PD_ESMART);
if (vop2_power_domain_status(esmart_pd))
esmart_pd->on = true;
else
vop2_power_domain_on(esmart_pd);
} else {
struct vop2_power_domain *pd, *n;
list_for_each_entry_safe_reverse(pd, n, &vop2->pd_list_head, list) {
if (vop2_power_domain_status(pd))
pd->on = true;
else
vop2_power_domain_on(pd);
}
}
/*
* rk3588 don't support access mmio by memcpy
*/
@@ -4263,26 +4287,6 @@ static void vop2_initial(struct drm_crtc *crtc)
* immediately.
*/
VOP_CTRL_SET(vop2, if_ctrl_cfg_done_imd, 1);
/* Close dynamic turn on/off rk3588 PD_ESMART and keep esmart pd on when enable */
if (vop2->version == VOP_VERSION_RK3588) {
struct vop2_power_domain *esmart_pd = vop2_find_pd_by_id(vop2, VOP2_PD_ESMART);
if (vop2_power_domain_status(esmart_pd))
esmart_pd->on = true;
else
vop2_power_domain_on(esmart_pd);
} else {
struct vop2_power_domain *pd, *n;
list_for_each_entry_safe_reverse(pd, n, &vop2->pd_list_head, list) {
if (vop2_power_domain_status(pd))
pd->on = true;
else
vop2_power_domain_on(pd);
}
}
vop2_layer_map_initial(vop2, current_vp_id);
vop2_axi_irqs_enable(vop2);
vop2->is_enabled = true;