• Ville Syrjälä's avatar
    drm/i915: Fix scanoutpos calculations · 3aa18df8
    Ville Syrjälä authored
    The reported scanout position must be relative to the end of vblank.
    Currently we manage to fumble that in a few ways.
    
    First we don't consider the case when vtotal != vbl_end. While that
    isn't very common (happens maybe only w/ old panel fitting hardware),
    we can fix it easily enough.
    
    The second issue is that on pre-CTG hardware we convert the pixel count
    to horizontal/vertical components at the very beginning, and then forget
    to adjust the horizontal component to be relative to vbl_end. So instead
    we should keep our numbers in the pixel count domain while we're
    adjusting the position to be relative to vbl_end. Then when we do the
    conversion in the end, both vertical _and_ horizontal components will
    come out correct.
    
    v2: Change position to int from u32 to avoid sign issues
    
    Cc: Mario Kleiner <mario.kleiner@tuebingen.mpg.de>
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: mario.kleiner.de@gmail.com
    Tested-by: mario.kleiner.de@gmail.com
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    3aa18df8
i915_irq.c 95.2 KB