Merge "msm: vidc: Allow venus to power collapse in batch mode"
This commit is contained in:
commit
1f55fb65fe
2 changed files with 18 additions and 10 deletions
|
@ -1722,6 +1722,19 @@ static struct vb2_buffer *get_vb_from_device_addr(struct buf_queue *bufq,
|
||||||
return vb;
|
return vb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void msm_vidc_try_suspend(struct msm_vidc_inst *inst)
|
||||||
|
{
|
||||||
|
bool batch_mode;
|
||||||
|
|
||||||
|
batch_mode = msm_comm_g_ctrl_for_id(inst, V4L2_CID_VIDC_QBUF_MODE)
|
||||||
|
== V4L2_VIDC_QBUF_BATCHED;
|
||||||
|
if (batch_mode) {
|
||||||
|
dprintk(VIDC_DBG,
|
||||||
|
"Trying to suspend Venus after finishing Batch\n");
|
||||||
|
msm_comm_suspend(inst->core->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void handle_ebd(enum hal_command_response cmd, void *data)
|
static void handle_ebd(enum hal_command_response cmd, void *data)
|
||||||
{
|
{
|
||||||
struct msm_vidc_cb_data_done *response = data;
|
struct msm_vidc_cb_data_done *response = data;
|
||||||
|
@ -1793,6 +1806,8 @@ static void handle_ebd(enum hal_command_response cmd, void *data)
|
||||||
msm_vidc_debugfs_update(inst, MSM_VIDC_DEBUGFS_EVENT_EBD);
|
msm_vidc_debugfs_update(inst, MSM_VIDC_DEBUGFS_EVENT_EBD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
msm_vidc_try_suspend(inst);
|
||||||
|
|
||||||
put_inst(inst);
|
put_inst(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2092,6 +2107,7 @@ static void handle_fbd(enum hal_command_response cmd, void *data)
|
||||||
msm_vidc_debugfs_update(inst, MSM_VIDC_DEBUGFS_EVENT_FBD);
|
msm_vidc_debugfs_update(inst, MSM_VIDC_DEBUGFS_EVENT_FBD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
msm_vidc_try_suspend(inst);
|
||||||
err_handle_fbd:
|
err_handle_fbd:
|
||||||
put_inst(inst);
|
put_inst(inst);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1297,17 +1297,9 @@ static int venus_hfi_suspend(void *dev)
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&device->lock);
|
dprintk(VIDC_DBG, "Suspending Venus\n");
|
||||||
|
rc = flush_delayed_work(&venus_hfi_pm_work);
|
||||||
|
|
||||||
if (device->power_enabled) {
|
|
||||||
dprintk(VIDC_DBG, "Venus is busy\n");
|
|
||||||
rc = -EBUSY;
|
|
||||||
} else {
|
|
||||||
dprintk(VIDC_DBG, "Venus is power suspended\n");
|
|
||||||
rc = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
mutex_unlock(&device->lock);
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue