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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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_try_suspend(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_try_suspend(inst);
|
||||
err_handle_fbd:
|
||||
put_inst(inst);
|
||||
}
|
||||
|
|
|
@ -1297,17 +1297,9 @@ static int venus_hfi_suspend(void *dev)
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue