disp: msm: sde: program the start window based on "EPT_FPS"

Introduce a new connector property called “EPT_FPS” for the cmd
mode panels. User space will set the “EPT_FPS” based on the
intended content fps, relative to the last retire fence timestamp
as calculated by Surface flinger. Program start window based
on the Expected Present Time fps.

Change-Id: I24b93e0f941af9fb2422b2484328254d04a1acbe
Signed-off-by: Shirisha Kollapuram <quic_kshirish@quicinc.com>
Signed-off-by: Veera Sundaram Sankaran <quic_veeras@quicinc.com>
Cette révision appartient à :
Shirisha Kollapuram
2022-08-16 23:47:46 +05:30
révisé par Veera Sundaram Sankaran
Parent 2e3ba9430c
révision 0d6e7e269a
7 fichiers modifiés avec 156 ajouts et 99 suppressions

Voir le fichier

@@ -854,7 +854,7 @@ void sde_connector_set_qsync_params(struct drm_connector *connector)
{
struct sde_connector *c_conn;
struct sde_connector_state *c_state;
u32 qsync_propval = 0;
u32 qsync_propval = 0, ept_fps = 0;
bool prop_dirty;
if (!connector)
@@ -882,6 +882,16 @@ void sde_connector_set_qsync_params(struct drm_connector *connector)
CONNECTOR_PROP_AVR_STEP_STATE);
if (prop_dirty)
c_conn->qsync_updated = true;
prop_dirty = msm_property_is_dirty(&c_conn->property_info, &c_state->property_state,
CONNECTOR_PROP_EPT_FPS);
if (prop_dirty) {
ept_fps = sde_connector_get_property(c_conn->base.state, CONNECTOR_PROP_EPT_FPS);
if (ept_fps != c_conn->ept_fps) {
c_conn->qsync_updated = true;
c_conn->ept_fps = ept_fps;
}
}
}
void sde_connector_complete_qsync_commit(struct drm_connector *conn,
@@ -1794,6 +1804,8 @@ static int sde_connector_atomic_set_property(struct drm_connector *connector,
SDE_ERROR_CONN(c_conn, "cannot set hdr info %d\n", rc);
break;
case CONNECTOR_PROP_QSYNC_MODE:
case CONNECTOR_PROP_AVR_STEP_STATE:
case CONNECTOR_PROP_EPT_FPS:
msm_property_set_dirty(&c_conn->property_info,
&c_state->property_state, idx);
break;
@@ -3077,6 +3089,11 @@ static void _sde_connector_install_qsync_properties(struct sde_kms *sde_kms,
msm_property_install_enum(&c_conn->property_info, "avr_step_state",
0, 0, e_avr_step_state, ARRAY_SIZE(e_avr_step_state), 0,
CONNECTOR_PROP_AVR_STEP_STATE);
if (test_bit(SDE_FEATURE_EPT_FPS, sde_kms->catalog->features) &&
(display_info->capabilities & MSM_DISPLAY_CAP_CMD_MODE))
msm_property_install_range(&c_conn->property_info,
"EPT_FPS", 0x0, 0, U32_MAX, 0, CONNECTOR_PROP_EPT_FPS);
}
}