diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-07-13 15:44:50 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-07-13 15:44:50 -0700 |
commit | a4e4aba7e44d6eccb2e69a3868d9af3b2f5204ba (patch) | |
tree | 818651631892fe5a5de184909dba1464df9fde35 /drivers | |
parent | 400520a6e2f06cc7c45e386e769a85d4aded565b (diff) | |
parent | 2b1343d5a52d54615f4d1c88fe75c4c0f614a9a3 (diff) |
Merge "msm: vidc: pm qos stability fixes for video driver"
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/platform/msm/vidc/venus_hfi.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/drivers/media/platform/msm/vidc/venus_hfi.c b/drivers/media/platform/msm/vidc/venus_hfi.c index 5525e35a029f..68c51c40c7cc 100644 --- a/drivers/media/platform/msm/vidc/venus_hfi.c +++ b/drivers/media/platform/msm/vidc/venus_hfi.c @@ -2218,9 +2218,14 @@ static int venus_hfi_core_init(void *device) if (rc || __iface_cmdq_write(dev, &version_pkt)) 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, dev->res->pm_qos_latency_us); + } mutex_unlock(&dev->lock); return rc; @@ -2244,7 +2249,8 @@ static int venus_hfi_core_release(void *dev) 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); __set_state(device, VENUS_STATE_DEINIT); __unload_fw(device); @@ -4208,7 +4214,8 @@ static inline int __suspend(struct venus_hfi_device *device) 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); 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); - 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, device->res->pm_qos_latency_us); + } dprintk(VIDC_INFO, "Resumed from power collapse\n"); exit: device->skip_pc_count = 0; |