disp: msm: sde: implement drm hooks to get precise vblank timestamp
Add precise vblank timestamp support through the DRM framework. Implement the vblank related hooks to get the vblank count and timestamp. Use MDSS 8.x, hardware feature that supports logging of the vsync timestamp counter which can be used to derive the accurate kernel timestamp. The current ktime would be returned for older targets to support backward compatibility. Change-Id: I2d35ed4a643a519e602278b6d16e67ccee16a60b Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
This commit is contained in:
@@ -220,7 +220,7 @@ struct sde_encoder_virt {
|
||||
bool intfs_swapped;
|
||||
bool qdss_status;
|
||||
|
||||
void (*crtc_vblank_cb)(void *data);
|
||||
void (*crtc_vblank_cb)(void *data, ktime_t ts);
|
||||
void *crtc_vblank_cb_data;
|
||||
|
||||
struct dentry *debugfs_root;
|
||||
@@ -290,7 +290,7 @@ void sde_encoder_early_wakeup(struct drm_encoder *drm_enc);
|
||||
* @data: user data provided to callback
|
||||
*/
|
||||
void sde_encoder_register_vblank_callback(struct drm_encoder *encoder,
|
||||
void (*cb)(void *), void *data);
|
||||
void (*cb)(void *, ktime_t), void *data);
|
||||
|
||||
/**
|
||||
* sde_encoder_register_frame_event_callback - provide callback to encoder that
|
||||
@@ -386,6 +386,20 @@ u32 sde_encoder_get_fps(struct drm_encoder *encoder);
|
||||
*/
|
||||
enum sde_intf_mode sde_encoder_get_intf_mode(struct drm_encoder *encoder);
|
||||
|
||||
/*
|
||||
* sde_encoder_get_frame_count - get hardware frame count of the given encoder
|
||||
* @encoder: Pointer to drm encoder object
|
||||
*/
|
||||
u32 sde_encoder_get_frame_count(struct drm_encoder *encoder);
|
||||
|
||||
/*
|
||||
* sde_encoder_get_vblank_timestamp - get the last vsync timestamp
|
||||
* @encoder: Pointer to drm encoder object
|
||||
* @tvblank: vblank timestamp
|
||||
*/
|
||||
bool sde_encoder_get_vblank_timestamp(struct drm_encoder *encoder,
|
||||
ktime_t *tvblank);
|
||||
|
||||
/**
|
||||
* sde_encoder_control_te - control enabling/disabling VSYNC_IN_EN
|
||||
* @encoder: encoder pointer
|
||||
|
Reference in New Issue
Block a user