video: iris3: Fix the issue in power collapsing video hardware
During power collapse, video driver would power collapse video hardware followed by video controller. While power collapsing video hardware, it may happen that video firmware has already power collapsed the video hardware, since it is hardware controlled. For certain cases, like XS WD, it may happen that video hardware may not be power collapsed by video firmware. In such scenario, skipping power collapse sequence of video hardware would lead to unhandled transactions from video hardware. There is a power status register which can clearly suggest if the video hardware is power down or not. Added a check to confirm the power status of video hardware before skipping or executing the power collapse sequence for video hardware. Change-Id: Ibd9cd708a259897262fcc6cab27b26aaf37f1b13 Signed-off-by: Vikash Garodia <quic_vgarodia@quicinc.com>
这个提交包含在:
@@ -119,6 +119,7 @@ struct msm_vidc_core {
|
||||
bool handoff_done;
|
||||
bool hw_power_control;
|
||||
bool pm_suspended;
|
||||
bool cpu_watchdog;
|
||||
};
|
||||
|
||||
#endif // _MSM_VIDC_CORE_H_
|
||||
|
@@ -2456,6 +2456,7 @@ int __load_fw(struct msm_vidc_core *core)
|
||||
d_vpr_h("%s\n", __func__);
|
||||
core->handoff_done = false;
|
||||
core->hw_power_control = false;
|
||||
core->cpu_watchdog = false;
|
||||
|
||||
trace_msm_v4l2_vidc_fw_load("START");
|
||||
rc = __init_resources(core);
|
||||
@@ -2533,6 +2534,8 @@ void __unload_fw(struct msm_vidc_core *core)
|
||||
__venus_power_off(core);
|
||||
__deinit_resources(core);
|
||||
|
||||
core->cpu_watchdog = false;
|
||||
|
||||
d_vpr_h("%s done\n", __func__);
|
||||
}
|
||||
|
||||
@@ -2542,6 +2545,8 @@ static int __response_handler(struct msm_vidc_core *core)
|
||||
|
||||
if (call_venus_op(core, watchdog, core, core->intr_status)) {
|
||||
struct hfi_packet pkt = {.type = HFI_SYS_ERROR_WD_TIMEOUT};
|
||||
core->cpu_watchdog = true;
|
||||
d_vpr_e("%s: CPU WD error received\n", __func__);
|
||||
|
||||
return handle_system_error(core, &pkt);
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户