• Thomas Zimmermann's avatar
    drm: Add get_scanout_position() to struct drm_crtc_helper_funcs · f1e2b637
    Thomas Zimmermann authored
    The new callback get_scanout_position() reads the current location
    of the scanout process. The operation is currently located in struct
    drm_driver, but really belongs to the CRTC. Drivers will be converted
    in separate patches.
    
    To help with the conversion, the timestamp calculation has been
    moved from drm_calc_vbltimestamp_from_scanoutpos() to
    drm_crtc_vblank_helper_get_vblank_timestamp_internal(). The helper
    function supports the new and old interface of get_scanout_position().
    drm_calc_vbltimestamp_from_scanoutpos() remains as a wrapper around
    the new function.
    
    Callback functions return the scanout position from the CRTC. The
    legacy version of the interface receives the device and pipe index,
    the modern version receives a pointer to the CRTC. We keep the
    legacy version until all drivers have been converted.
    
    v4:
    	* 80-character line fixes
    v3:
    	* refactor drm_calc_vbltimestamp_from_scanoutpos() to minimize
    	  code duplication
    	* define types for get_scanout_position() callbacks
    v2:
    	* fix logical op in drm_calc_vbltimestamp_from_scanoutpos()
    Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
    Tested-by: default avatarYannick Fertré <yannick.fertre@st.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200123135943.24140-3-tzimmermann@suse.de
    f1e2b637
drm_vblank.h 8.94 KB