disp: msm: sde: factor qsync min fps in vblank time out
update kickoff timeout based on qsync minimum frame rate. Change-Id: Ie9c80111bf5103fde0399921777ca64f76574a5a Signed-off-by: Akash Gajjar <quic_agajjar@quicinc.com>
Este commit está contenido en:
@@ -5472,6 +5472,7 @@ u32 sde_encoder_helper_get_kickoff_timeout_ms(struct drm_encoder *drm_enc)
|
||||
struct drm_encoder *src_enc = drm_enc;
|
||||
struct sde_encoder_virt *sde_enc;
|
||||
struct sde_kms *sde_kms;
|
||||
u32 qsync_mode = 0, qsync_min_fps = 0;
|
||||
u32 fps;
|
||||
|
||||
if (!drm_enc) {
|
||||
@@ -5495,6 +5496,13 @@ u32 sde_encoder_helper_get_kickoff_timeout_ms(struct drm_encoder *drm_enc)
|
||||
sde_enc = to_sde_encoder_virt(src_enc);
|
||||
fps = sde_enc->mode_info.frame_rate;
|
||||
|
||||
if (sde_enc->cur_master)
|
||||
qsync_mode = sde_connector_get_qsync_mode(sde_enc->cur_master->connector);
|
||||
|
||||
qsync_min_fps = sde_enc->mode_info.qsync_min_fps;
|
||||
if (qsync_mode && qsync_min_fps)
|
||||
fps = min(fps, qsync_min_fps);
|
||||
|
||||
if (!fps || fps >= DEFAULT_TIMEOUT_FPS_THRESHOLD)
|
||||
return DEFAULT_KICKOFF_TIMEOUT_MS;
|
||||
else
|
||||
|
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
@@ -1849,6 +1849,8 @@ static int sde_encoder_phys_cmd_prepare_for_kickoff(
|
||||
|
||||
sde_enc = to_sde_encoder_virt(phys_enc->parent);
|
||||
phys_enc->frame_trigger_mode = params->frame_trigger_mode;
|
||||
phys_enc->kickoff_timeout_ms =
|
||||
sde_encoder_helper_get_kickoff_timeout_ms(phys_enc->parent);
|
||||
SDE_EVT32(DRMID(phys_enc->parent), phys_enc->hw_pp->idx - PINGPONG_0,
|
||||
atomic_read(&phys_enc->pending_kickoff_cnt),
|
||||
atomic_read(&cmd_enc->autorefresh.kickoff_cnt),
|
||||
|
@@ -1041,6 +1041,8 @@ static int sde_encoder_phys_vid_prepare_for_kickoff(
|
||||
}
|
||||
vid_enc = to_sde_encoder_phys_vid(phys_enc);
|
||||
|
||||
phys_enc->kickoff_timeout_ms =
|
||||
sde_encoder_helper_get_kickoff_timeout_ms(phys_enc->parent);
|
||||
ctl = phys_enc->hw_ctl;
|
||||
if (!ctl->ops.wait_reset_status)
|
||||
return 0;
|
||||
|
Referencia en una nueva incidencia
Block a user