• Uma Shankar's avatar
    drm/i915: Enable scanline read based on frame timestamps · aec0246f
    Uma Shankar authored
    For certain platforms on certain encoders, timings are driven
    from port instead of pipe. Thus, we can't rely on pipe scanline
    registers to get the timing information. Some cases scanline
    register read will not be functional.
    This is causing vblank evasion logic to fail since it relies on
    scanline, causing atomic update failure warnings.
    
    This patch uses pipe framestamp and current timestamp registers
    to calculate scanline. This is an indirect way to get the scanline.
    It helps resolve atomic update failure for gen9 dsi platforms.
    
    v2: Addressed Ville and Daniel's review comments. Updated the
    register MACROs, handled race condition for register reads,
    extracted timings from the hwmode. Removed the dependency on
    crtc->config to get the encoder type.
    
    v3: Made get scanline function generic
    
    v4: Addressed Ville's review comments. Added a flag to decide timestamp
    based scanline reporting. Changed 64bit variables to u32
    
    v5: Adressed Ville's review comments. Put the scanline compute function
    at the place of caller. Removed hwmode flags from uapi and used a local
    i915 data structure instead.
    
    v6: Used vblank hwmode to get the timings.
    
    v7: Fixed sparse warnings, indentation and minor review comments.
    
    v8: Limited this only for Gen9 DSI.
    
    Credits-to: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarUma Shankar <uma.shankar@intel.com>
    Signed-off-by: default avatarChandra Konduru <chandra.konduru@intel.com>
    Signed-off-by: default avatarVidya Srinivas <vidya.srinivas@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1506347761-4201-1-git-send-email-vidya.srinivas@intel.com
    aec0246f
i915_reg.h 365 KB