Merge "disp: msm: update seamless check for cwb + any modeset"

This commit is contained in:
QCTECMDR Service 2024-07-27 11:45:03 -07:00 committed by Gerrit - the friendly Code Review server
commit 2abf17e048

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
* Copyright (C) 2014 Red Hat
* Author: Rob Clark <robdclark@gmail.com>
@ -117,11 +117,23 @@ static inline bool _msm_seamless_for_conn(struct drm_connector *connector,
if (!old_conn_state || !old_conn_state->crtc)
return false;
if (!priv || !priv->kms || !priv->kms->funcs->get_msm_mode)
return false;
msm_mode = priv->kms->funcs->get_msm_mode(
_msm_get_conn_state(old_conn_state->crtc->state));
if (!msm_mode)
return false;
if (!old_conn_state->crtc->state->mode_changed &&
!old_conn_state->crtc->state->active_changed &&
old_conn_state->crtc->state->connectors_changed) {
if (old_conn_state->crtc == connector->state->crtc)
if (old_conn_state->crtc == connector->state->crtc) {
if (enable && msm_is_private_mode_changed(
_msm_get_conn_state(old_conn_state->crtc->state)))
return false;
return true;
}
}
if (enable)
@ -131,14 +143,6 @@ static inline bool _msm_seamless_for_conn(struct drm_connector *connector,
old_conn_state->crtc->state->connectors_changed)
return false;
if (!priv || !priv->kms || !priv->kms->funcs->get_msm_mode)
return false;
msm_mode = priv->kms->funcs->get_msm_mode(
_msm_get_conn_state(old_conn_state->crtc->state));
if (!msm_mode)
return false;
if (msm_is_mode_seamless(msm_mode) ||
msm_is_mode_seamless_vrr(msm_mode) ||
msm_is_mode_seamless_dyn_clk(msm_mode) ||
@ -329,7 +333,7 @@ msm_crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
if (!new_crtc_state->mode_changed &&
new_crtc_state->connectors_changed) {
if (_msm_seamless_for_conn(connector,
old_conn_state, false))
old_conn_state, true))
continue;
} else if (!new_crtc_state->mode_changed) {
if (!msm_is_private_mode_changed(