Merge changes I63392417,I6ca0188d into display-kernel.lnx.5.4

* changes:
  disp: msm: add trace logs in display early wakeup function
  disp: msm: add support for display early wakeup
这个提交包含在:
Linux Build Service Account
2020-07-23 07:38:30 -07:00
提交者 Gerrit - the friendly Code Review server
当前提交 87f5eca6e0
修改 5 个文件,包含 140 行新增0 行删除

查看文件

@@ -3690,6 +3690,53 @@ static void sde_encoder_input_event_work_handler(struct kthread_work *work)
SDE_ENC_RC_EVENT_EARLY_WAKEUP);
}
static void sde_encoder_early_wakeup_work_handler(struct kthread_work *work)
{
struct sde_encoder_virt *sde_enc = container_of(work,
struct sde_encoder_virt, early_wakeup_work);
if (!sde_enc) {
SDE_ERROR("invalid sde encoder\n");
return;
}
SDE_ATRACE_BEGIN("encoder_early_wakeup");
sde_encoder_resource_control(&sde_enc->base,
SDE_ENC_RC_EVENT_EARLY_WAKEUP);
SDE_ATRACE_END("encoder_early_wakeup");
}
void sde_encoder_early_wakeup(struct drm_encoder *drm_enc)
{
struct sde_encoder_virt *sde_enc = NULL;
struct msm_drm_thread *disp_thread = NULL;
struct msm_drm_private *priv = NULL;
priv = drm_enc->dev->dev_private;
sde_enc = to_sde_encoder_virt(drm_enc);
if (!sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE)) {
SDE_DEBUG_ENC(sde_enc,
"should only early wake up command mode display\n");
return;
}
if (!sde_enc->crtc || (sde_enc->crtc->index
>= ARRAY_SIZE(priv->event_thread))) {
SDE_ERROR("invalid CRTC: %d or crtc index: %d\n",
sde_enc->crtc == NULL,
sde_enc->crtc ? sde_enc->crtc->index : -EINVAL);
return;
}
disp_thread = &priv->disp_thread[sde_enc->crtc->index];
SDE_ATRACE_BEGIN("queue_early_wakeup_work");
kthread_queue_work(&disp_thread->worker,
&sde_enc->early_wakeup_work);
SDE_ATRACE_END("queue_early_wakeup_work");
}
int sde_encoder_poll_line_counts(struct drm_encoder *drm_enc)
{
static const uint64_t timeout_us = 50000;
@@ -4812,6 +4859,9 @@ struct drm_encoder *sde_encoder_init_with_ops(
kthread_init_work(&sde_enc->input_event_work,
sde_encoder_input_event_work_handler);
kthread_init_work(&sde_enc->early_wakeup_work,
sde_encoder_early_wakeup_work_handler);
kthread_init_work(&sde_enc->esd_trigger_work,
sde_encoder_esd_trigger_work_handler);