瀏覽代碼

Merge "video: driver: resume video core before running ssr command"

qctecmdr 2 年之前
父節點
當前提交
ef309fc170
共有 2 個文件被更改,包括 14 次插入0 次删除
  1. 4 0
      driver/vidc/src/msm_vidc_driver.c
  2. 10 0
      driver/vidc/src/venus_hfi.c

+ 4 - 0
driver/vidc/src/msm_vidc_driver.c

@@ -4660,6 +4660,8 @@ int msm_vidc_trigger_ssr(struct msm_vidc_core *core,
 	 * reserved: 8-31 bits
 	 * test_addr: 32-63 bits
 	 */
+	d_vpr_e("%s: trigger ssr is called. trigger ssr val: %#llx\n",
+		__func__, trigger_ssr_val);
 	ssr->ssr_type = (trigger_ssr_val &
 			(unsigned long)SSR_TYPE) >> SSR_TYPE_SHIFT;
 	ssr->sub_client_id = (trigger_ssr_val &
@@ -4683,6 +4685,8 @@ void msm_vidc_ssr_handler(struct work_struct *work)
 	}
 	ssr = &core->ssr;
 
+	d_vpr_e("%s: ssr handler is called, core state: %s\n",
+		__func__, core_state_name(core->state));
 	core_lock(core, __func__);
 	if (is_core_state(core, MSM_VIDC_CORE_INIT)) {
 		/*

+ 10 - 0
driver/vidc/src/venus_hfi.c

@@ -1075,6 +1075,16 @@ int venus_hfi_trigger_ssr(struct msm_vidc_core *core, u32 type,
 		return -EINVAL;
 	}
 
+	/*
+	 * call resume before preparing ssr hfi packet in core->packet
+	 * otherwise ssr hfi packet in core->packet will be overwritten
+	 * by __resume() call (inside __cmdq_write) which is preparing
+	 * ifpc hfi packets in core->packet
+	 */
+	rc = __resume(core);
+	if (rc)
+		return rc;
+
 	payload[0] = client_id << 4 | type;
 	payload[1] = addr;