msm: camera: reqmgr: Pause the timer before sensor stream on

Sometimes, the cpu load is very high, then the devcies
stream on will be delayed, but the CRM watchdog is already
enabled before streaming on, then we will have a chance to
notify SOF freeze issue.
This change pauses the CRM watchdog timer before streaming
on sensor and after stopping ife, when we can detect the
stream on and stream off delay, but don't notify error,
also can detect the real SOF freeze issue.

CRs-Fixed: 2804587
Change-Id: Iccaee837930ea22290b109eff45b05300d844312
Signed-off-by: Depeng Shao <depengs@codeaurora.org>
This commit is contained in:
Depeng Shao
2020-12-07 17:10:57 +08:00
committad av Gerrit - the friendly Code Review server
förälder 641fd73444
incheckning 4591949a37
2 ändrade filer med 32 tillägg och 3 borttagningar

Visa fil

@@ -1001,6 +1001,7 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl,
break;
}
case CAM_START_DEV: {
struct cam_req_mgr_timer_notify timer;
if ((s_ctrl->sensor_state == CAM_SENSOR_INIT) ||
(s_ctrl->sensor_state == CAM_SENSOR_START)) {
rc = -EINVAL;
@@ -1023,6 +1024,21 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl,
}
}
s_ctrl->sensor_state = CAM_SENSOR_START;
if (s_ctrl->bridge_intf.crm_cb &&
s_ctrl->bridge_intf.crm_cb->notify_timer) {
timer.link_hdl = s_ctrl->bridge_intf.link_hdl;
timer.dev_hdl = s_ctrl->bridge_intf.device_hdl;
timer.state = true;
rc = s_ctrl->bridge_intf.crm_cb->notify_timer(&timer);
if (rc) {
CAM_ERR(CAM_SENSOR,
"Enable CRM SOF freeze timer failed rc: %d",
rc);
return rc;
}
}
CAM_INFO(CAM_SENSOR,
"CAM_START_DEV Success for %s sensor_id:0x%x,sensor_slave_addr:0x%x",
s_ctrl->sensor_name,