video: driver: Add debugfs support to disable synx v2 fence
Add debugfs support to disable synx fence falling back to dma sw fence via parameter "msm_vidc_disable_synx_fence" Change-Id: I46b4833c2dfabec95f5ff34a0aef42043f8f6f5c Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
eaf80f36cb
commit
625745bf00
@@ -324,7 +324,7 @@ static struct msm_platform_core_capability core_data_pineapple[] = {
|
|||||||
{ENC_AUTO_FRAMERATE, 1},
|
{ENC_AUTO_FRAMERATE, 1},
|
||||||
{DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_META_CAPTURE |
|
{DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_META_CAPTURE |
|
||||||
V4L2_CAP_STREAMING},
|
V4L2_CAP_STREAMING},
|
||||||
{SUPPORTS_SYNX_FENCE, 0}, /* disabled temporarily */
|
{SUPPORTS_SYNX_FENCE, 1},
|
||||||
{SUPPORTS_REQUESTS, 1},
|
{SUPPORTS_REQUESTS, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -39,6 +39,7 @@ extern int msm_vidc_ddr_bw;
|
|||||||
extern int msm_vidc_llc_bw;
|
extern int msm_vidc_llc_bw;
|
||||||
extern bool msm_vidc_fw_dump;
|
extern bool msm_vidc_fw_dump;
|
||||||
extern unsigned int msm_vidc_enable_bugon;
|
extern unsigned int msm_vidc_enable_bugon;
|
||||||
|
extern bool msm_vidc_disable_synx_fence;
|
||||||
|
|
||||||
/* do not modify the log message as it is used in test scripts */
|
/* do not modify the log message as it is used in test scripts */
|
||||||
#define FMT_STRING_SET_CTRL \
|
#define FMT_STRING_SET_CTRL \
|
||||||
|
@@ -124,6 +124,10 @@ module_param_cb(msm_vidc_fw_dump, &msm_vidc_fw_dump_fops, &g_core, 0644);
|
|||||||
bool msm_vidc_lossless_encode = !true;
|
bool msm_vidc_lossless_encode = !true;
|
||||||
EXPORT_SYMBOL(msm_vidc_lossless_encode);
|
EXPORT_SYMBOL(msm_vidc_lossless_encode);
|
||||||
|
|
||||||
|
/* disabled synx fence by default temporarily */
|
||||||
|
bool msm_vidc_disable_synx_fence = !false;
|
||||||
|
EXPORT_SYMBOL(msm_vidc_disable_synx_fence);
|
||||||
|
|
||||||
bool msm_vidc_syscache_disable = !true;
|
bool msm_vidc_syscache_disable = !true;
|
||||||
EXPORT_SYMBOL(msm_vidc_syscache_disable);
|
EXPORT_SYMBOL(msm_vidc_syscache_disable);
|
||||||
|
|
||||||
@@ -398,6 +402,8 @@ struct dentry* msm_vidc_debugfs_init_drv(void)
|
|||||||
&msm_vidc_syscache_disable);
|
&msm_vidc_syscache_disable);
|
||||||
debugfs_create_bool("lossless_encoding", 0644, dir,
|
debugfs_create_bool("lossless_encoding", 0644, dir,
|
||||||
&msm_vidc_lossless_encode);
|
&msm_vidc_lossless_encode);
|
||||||
|
debugfs_create_bool("disable_synx_v2_fence", 0644, dir,
|
||||||
|
&msm_vidc_disable_synx_fence);
|
||||||
debugfs_create_u32("enable_bugon", 0644, dir,
|
debugfs_create_u32("enable_bugon", 0644, dir,
|
||||||
&msm_vidc_enable_bugon);
|
&msm_vidc_enable_bugon);
|
||||||
|
|
||||||
|
@@ -568,38 +568,37 @@ static int msm_vidc_component_master_bind(struct device *dev)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* register for synx fence */
|
|
||||||
if (core->capabilities[SUPPORTS_SYNX_FENCE].value) {
|
if (core->capabilities[SUPPORTS_SYNX_FENCE].value) {
|
||||||
rc = call_fence_op(core, fence_register, core);
|
if (msm_vidc_disable_synx_fence) {
|
||||||
if (rc) {
|
/* override synx fence ops with dma fence ops */
|
||||||
d_vpr_e("%s: failed to register synx fence\n",
|
|
||||||
__func__);
|
|
||||||
core->capabilities[SUPPORTS_SYNX_FENCE].value = 0;
|
|
||||||
/*
|
|
||||||
* - Bail out the session for time being for this
|
|
||||||
* case where synx fence register call retunrs error
|
|
||||||
* to help with debugging
|
|
||||||
* - Re-initialize fence ops with dma_fence_ops.
|
|
||||||
* This is required once we start ignoring this
|
|
||||||
* synx fence register call error.
|
|
||||||
*/
|
|
||||||
core->fence_ops = get_dma_fence_ops();
|
core->fence_ops = get_dma_fence_ops();
|
||||||
if (!core->fence_ops) {
|
if (!core->fence_ops) {
|
||||||
d_vpr_e("%s: invalid dma fence ops\n", __func__);
|
d_vpr_e("%s: invalid dma fence ops\n", __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
core->capabilities[SUPPORTS_SYNX_FENCE].value = 0;
|
||||||
return rc;
|
} else {
|
||||||
}
|
/* register for synx fence */
|
||||||
} else {
|
rc = call_fence_op(core, fence_register, core);
|
||||||
/*
|
if (rc) {
|
||||||
* override synx fence ops with dma fence ops for
|
d_vpr_e("%s: failed to register synx fence\n",
|
||||||
* time being until synx fence support is enabled
|
__func__);
|
||||||
*/
|
core->capabilities[SUPPORTS_SYNX_FENCE].value = 0;
|
||||||
core->fence_ops = get_dma_fence_ops();
|
/*
|
||||||
if (!core->fence_ops) {
|
* - Bail out the session for time being for this
|
||||||
d_vpr_e("%s: invalid dma fence ops\n", __func__);
|
* case where synx fence register call retunrs error
|
||||||
return -EINVAL;
|
* to help with debugging
|
||||||
|
* - Re-initialize fence ops with dma_fence_ops.
|
||||||
|
* This is required once we start ignoring this
|
||||||
|
* synx fence register call error.
|
||||||
|
*/
|
||||||
|
core->fence_ops = get_dma_fence_ops();
|
||||||
|
if (!core->fence_ops) {
|
||||||
|
d_vpr_e("%s: invalid dma fence ops\n", __func__);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user