disp: msm: sde: report AVR_STATUS in vsync_event sysfs node
Report the AVR_STATUS which indicates if there's a pending trigger when Adaptive Variable Refresh feature is enabled. This allows SW to detect whether the old frame is repeated or if the new frame was taken when the trigger is very close to Vsync. Change-Id: I6b04482e5c4c3bb92bad426c529c1fd3612d41c3 Signed-off-by: Steve Cohen <cohens@codeaurora.org>
这个提交包含在:
@@ -4374,6 +4374,27 @@ void sde_encoder_get_transfer_time(struct drm_encoder *drm_enc,
|
||||
*transfer_time_us = info->mdp_transfer_time_us;
|
||||
}
|
||||
|
||||
int sde_encoder_get_avr_status(struct drm_encoder *drm_enc)
|
||||
{
|
||||
struct sde_encoder_virt *sde_enc;
|
||||
struct sde_encoder_phys *master;
|
||||
bool is_vid_mode;
|
||||
|
||||
if (!drm_enc)
|
||||
return -EINVAL;
|
||||
|
||||
sde_enc = to_sde_encoder_virt(drm_enc);
|
||||
master = sde_enc->cur_master;
|
||||
is_vid_mode = sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CAP_VID_MODE);
|
||||
if (!master || !is_vid_mode || !sde_connector_get_qsync_mode(master->connector))
|
||||
return -ENODATA;
|
||||
|
||||
if (!master->hw_intf->ops.get_avr_status)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return master->hw_intf->ops.get_avr_status(master->hw_intf);
|
||||
}
|
||||
|
||||
int sde_encoder_helper_reset_mixers(struct sde_encoder_phys *phys_enc,
|
||||
struct drm_framebuffer *fb)
|
||||
{
|
||||
|
在新工单中引用
屏蔽一个用户