Merge "disp: msm: sde: add qtimer read after input hw-fence signal config"

This commit is contained in:
qctecmdr
2023-02-04 07:51:36 -08:00
committed by Gerrit - the friendly Code Review server

View File

@@ -254,6 +254,7 @@ int sde_fence_register_hw_fences_wait(struct sde_hw_ctl *hw_ctl, struct dma_fenc
int array_childs = 0; int array_childs = 0;
int array_count = 0; int array_count = 0;
int fence_list_index = 0; int fence_list_index = 0;
u64 seqno;
if (!hw_ctl) { if (!hw_ctl) {
SDE_ERROR("wrong ctl\n"); SDE_ERROR("wrong ctl\n");
@@ -325,14 +326,18 @@ int sde_fence_register_hw_fences_wait(struct sde_hw_ctl *hw_ctl, struct dma_fenc
} }
} }
seqno = data->hw_fence_array_seqno++;
temp_array = dma_fence_array_create(fence_list_index, fence_list, temp_array = dma_fence_array_create(fence_list_index, fence_list,
data->dma_context, data->hw_fence_array_seqno++, 0); data->dma_context, seqno, 0);
if (!temp_array) { if (!temp_array) {
SDE_ERROR("unable to create fence array, cant register for wait\n"); SDE_ERROR("unable to create fence array, cant register for wait\n");
_cleanup_fences_refcount(fences, num_fences); _cleanup_fences_refcount(fences, num_fences);
kfree(fence_list); kfree(fence_list);
return -EINVAL; return -EINVAL;
} }
SDE_EVT32(ctl_id, fence_list_index, SDE_EVTLOG_H32(data->dma_context),
SDE_EVTLOG_L32(data->dma_context), SDE_EVTLOG_H32(seqno),
SDE_EVTLOG_L32(seqno));
base_fence = &temp_array->base; base_fence = &temp_array->base;
hw_fences = &base_fence; hw_fences = &base_fence;
@@ -594,6 +599,7 @@ int sde_fence_update_input_hw_fence_signal(struct sde_hw_ctl *hw_ctl, u32 debugf
u32 ipcc_signal_id; u32 ipcc_signal_id;
u32 ipcc_client_id; u32 ipcc_client_id;
int ctl_id; int ctl_id;
u64 qtime;
/* we must support sw_override as well, so check both functions */ /* we must support sw_override as well, so check both functions */
if (!hw_mdp || !hw_ctl || !hw_ctl->ops.hw_fence_update_input_fence || if (!hw_mdp || !hw_ctl || !hw_ctl->ops.hw_fence_update_input_fence ||
@@ -619,7 +625,6 @@ int sde_fence_update_input_hw_fence_signal(struct sde_hw_ctl *hw_ctl, u32 debugf
SDE_DEBUG("configure input signal:%d out client:%d ctl_id:%d\n", ipcc_signal_id, SDE_DEBUG("configure input signal:%d out client:%d ctl_id:%d\n", ipcc_signal_id,
ipcc_client_id, ctl_id); ipcc_client_id, ctl_id);
SDE_EVT32(ctl_id, ipcc_signal_id, ipcc_client_id);
/* configure dpu hw for the client/signal pair signaling input-fence */ /* configure dpu hw for the client/signal pair signaling input-fence */
hw_ctl->ops.hw_fence_update_input_fence(hw_ctl, ipcc_client_id, ipcc_signal_id); hw_ctl->ops.hw_fence_update_input_fence(hw_ctl, ipcc_client_id, ipcc_signal_id);
@@ -627,6 +632,10 @@ int sde_fence_update_input_hw_fence_signal(struct sde_hw_ctl *hw_ctl, u32 debugf
/* Enable hw-fence for this ctrl-path */ /* Enable hw-fence for this ctrl-path */
hw_ctl->ops.hw_fence_ctrl(hw_ctl, true, true, 1); hw_ctl->ops.hw_fence_ctrl(hw_ctl, true, true, 1);
qtime = arch_timer_read_counter();
SDE_EVT32(ctl_id, ipcc_signal_id, ipcc_client_id, SDE_EVTLOG_H32(qtime),
SDE_EVTLOG_L32(qtime));
return 0; return 0;
} }