video: driver: follow vcodec power collapse seq for PC failure case
if PC fails for 10 times then video driver is treating that situation as fatal and doing force core_deinit(), in this case firmware will not follow vcodec power_collapse sequence and if there any pending transaction from any session it will cause smmu_fault during next firmware_boot sequence. Added change to perform vcodec power_collapse from power_off_iris3_hardware() incase of core_deinit due to PC failure. Change-Id: I45e32985d87b5cc882c4f96f77d1cabc796e6ba0 Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com> Signed-off-by: Ankush Mitra <quic_ankumitr@quicinc.com>
This commit is contained in:

کامیت شده توسط
Gerrit - the friendly Code Review server

والد
78246c24fb
کامیت
dc39a04e6e
@@ -274,19 +274,22 @@ static int __power_off_iris3_hardware(struct msm_vidc_core *core)
|
||||
bool pwr_collapsed = false;
|
||||
|
||||
/*
|
||||
* Incase hw power control is enabled, when CPU WD occurred, check for power
|
||||
* status to decide on executing NOC reset sequence before disabling power.
|
||||
* If there is no CPU WD and hw_power_control is enabled, fw is expected
|
||||
* Incase hw power control is enabled, for both CPU WD, video
|
||||
* hw unresponsive cases, check for power status to decide on
|
||||
* executing NOC reset sequence before disabling power. If there
|
||||
* is no CPU WD and hw_power_control is enabled, fw is expected
|
||||
* to power collapse video hw always.
|
||||
*/
|
||||
if (core->hw_power_control) {
|
||||
pwr_collapsed = is_iris3_hw_power_collapsed(core);
|
||||
if (core->cpu_watchdog) {
|
||||
if (core->cpu_watchdog || core->video_unresponsive) {
|
||||
if (pwr_collapsed) {
|
||||
d_vpr_e("%s: CPU WD and video hw power collapsed\n", __func__);
|
||||
d_vpr_e("%s: video hw power collapsed %d, %d\n",
|
||||
__func__, core->cpu_watchdog, core->video_unresponsive);
|
||||
goto disable_power;
|
||||
} else {
|
||||
d_vpr_e("%s: CPU WD and video hw is power ON\n", __func__);
|
||||
d_vpr_e("%s: video hw is power ON %d, %d\n",
|
||||
__func__, core->cpu_watchdog, core->video_unresponsive);
|
||||
}
|
||||
} else {
|
||||
if (!pwr_collapsed)
|
||||
|
@@ -285,19 +285,22 @@ static int __power_off_iris33_hardware(struct msm_vidc_core *core)
|
||||
bool pwr_collapsed = false;
|
||||
|
||||
/*
|
||||
* Incase hw power control is enabled, when CPU WD occurred, check for power
|
||||
* status to decide on executing NOC reset sequence before disabling power.
|
||||
* If there is no CPU WD and hw_power_control is enabled, fw is expected
|
||||
* Incase hw power control is enabled, for both CPU WD, video
|
||||
* hw unresponsive cases, check for power status to decide on
|
||||
* executing NOC reset sequence before disabling power. If there
|
||||
* is no CPU WD and hw_power_control is enabled, fw is expected
|
||||
* to power collapse video hw always.
|
||||
*/
|
||||
if (core->hw_power_control) {
|
||||
pwr_collapsed = is_iris33_hw_power_collapsed(core);
|
||||
if (core->cpu_watchdog) {
|
||||
if (core->cpu_watchdog || core->video_unresponsive) {
|
||||
if (pwr_collapsed) {
|
||||
d_vpr_e("%s: CPU WD and video hw power collapsed\n", __func__);
|
||||
d_vpr_e("%s: video hw power collapsed %d, %d\n",
|
||||
__func__, core->cpu_watchdog, core->video_unresponsive);
|
||||
goto disable_power;
|
||||
} else {
|
||||
d_vpr_e("%s: CPU WD and video hw is power ON\n", __func__);
|
||||
d_vpr_e("%s: video hw is power ON %d, %d\n",
|
||||
__func__, core->cpu_watchdog, core->video_unresponsive);
|
||||
}
|
||||
} else {
|
||||
if (!pwr_collapsed)
|
||||
|
مرجع در شماره جدید
Block a user