Merge "msm: vidc: pm qos stability fixes for video driver"
This commit is contained in:
commit
a4e4aba7e4
1 changed files with 16 additions and 4 deletions
|
@ -2218,9 +2218,14 @@ static int venus_hfi_core_init(void *device)
|
||||||
if (rc || __iface_cmdq_write(dev, &version_pkt))
|
if (rc || __iface_cmdq_write(dev, &version_pkt))
|
||||||
dprintk(VIDC_WARN, "Failed to send image version pkt to f/w\n");
|
dprintk(VIDC_WARN, "Failed to send image version pkt to f/w\n");
|
||||||
|
|
||||||
if (dev->res->pm_qos_latency_us)
|
if (dev->res->pm_qos_latency_us) {
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
dev->qos.type = PM_QOS_REQ_AFFINE_IRQ;
|
||||||
|
dev->qos.irq = dev->hal_data->irq;
|
||||||
|
#endif
|
||||||
pm_qos_add_request(&dev->qos, PM_QOS_CPU_DMA_LATENCY,
|
pm_qos_add_request(&dev->qos, PM_QOS_CPU_DMA_LATENCY,
|
||||||
dev->res->pm_qos_latency_us);
|
dev->res->pm_qos_latency_us);
|
||||||
|
}
|
||||||
|
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -2244,7 +2249,8 @@ static int venus_hfi_core_release(void *dev)
|
||||||
|
|
||||||
mutex_lock(&device->lock);
|
mutex_lock(&device->lock);
|
||||||
|
|
||||||
if (device->res->pm_qos_latency_us)
|
if (device->res->pm_qos_latency_us &&
|
||||||
|
pm_qos_request_active(&device->qos))
|
||||||
pm_qos_remove_request(&device->qos);
|
pm_qos_remove_request(&device->qos);
|
||||||
__set_state(device, VENUS_STATE_DEINIT);
|
__set_state(device, VENUS_STATE_DEINIT);
|
||||||
__unload_fw(device);
|
__unload_fw(device);
|
||||||
|
@ -4208,7 +4214,8 @@ static inline int __suspend(struct venus_hfi_device *device)
|
||||||
|
|
||||||
dprintk(VIDC_DBG, "Entering power collapse\n");
|
dprintk(VIDC_DBG, "Entering power collapse\n");
|
||||||
|
|
||||||
if (device->res->pm_qos_latency_us)
|
if (device->res->pm_qos_latency_us &&
|
||||||
|
pm_qos_request_active(&device->qos))
|
||||||
pm_qos_remove_request(&device->qos);
|
pm_qos_remove_request(&device->qos);
|
||||||
|
|
||||||
rc = __tzbsp_set_video_state(TZBSP_VIDEO_STATE_SUSPEND);
|
rc = __tzbsp_set_video_state(TZBSP_VIDEO_STATE_SUSPEND);
|
||||||
|
@ -4270,9 +4277,14 @@ static inline int __resume(struct venus_hfi_device *device)
|
||||||
*/
|
*/
|
||||||
__set_threshold_registers(device);
|
__set_threshold_registers(device);
|
||||||
|
|
||||||
if (device->res->pm_qos_latency_us)
|
if (device->res->pm_qos_latency_us) {
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
device->qos.type = PM_QOS_REQ_AFFINE_IRQ;
|
||||||
|
device->qos.irq = device->hal_data->irq;
|
||||||
|
#endif
|
||||||
pm_qos_add_request(&device->qos, PM_QOS_CPU_DMA_LATENCY,
|
pm_qos_add_request(&device->qos, PM_QOS_CPU_DMA_LATENCY,
|
||||||
device->res->pm_qos_latency_us);
|
device->res->pm_qos_latency_us);
|
||||||
|
}
|
||||||
dprintk(VIDC_INFO, "Resumed from power collapse\n");
|
dprintk(VIDC_INFO, "Resumed from power collapse\n");
|
||||||
exit:
|
exit:
|
||||||
device->skip_pc_count = 0;
|
device->skip_pc_count = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue