• Rodrigo Vivi's avatar
    drm/i915: Enable/Disable PSR · 2b28bb1b
    Rodrigo Vivi authored
    Adding Enable and Disable PSR functionalities. This includes setting the
    PSR configuration over AUX, sending SDP VSC DIP over the eDP PIPE config,
    enabling PSR in the sink via DPCD register and finally enabling PSR on
    the host.
    
    This patch is based on initial PSR code by Sateesh Kavuri and Kumar Shobhit
    but in a different implementation.
    
    v2: * moved functions around and changed its names.
        * removed VSC DIP unset from disable.
        * remove FBC wa.
        * don't mask LSPS anymore.
        * incorporate new crtc usage after a rebase.
    v3: Make a clear separation between Sink (Panel) and Source (HW) enabling.
    v4: Fix identation and other style issues raised by checkpatch (by Paulo).
    v5: Changes according to Paulo's review:
        static on write_vsc;
        avoid using dp_to_dev when already calling dp_to_dig_port;
        remove unecessary TP default time setting;
        remove unecessary interrupts disabling;
        remove unecessary wait_for_vblank when disabling psr;
    v6: remove unecessary wait_for_vblank when writing vsc;
    v7: adding setup once function to avoid unnecessarily write to vsc
        and set debug_ctl every time we enable or disable psr.
    
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Credits-by: default avatarSateesh Kavuri <sateesh.kavuri@intel.com>
    Credits-by: default avatarShobhit Kumar <shobhit.kumar@intel.com>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@gmail.com>
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Reviewed-by: default avatarShobhit Kumar <shobhit.kumar@intel.com>
    [danvet: Apply Paulo's suggestion for unconditionally clearing the
    control register when writing the DIP.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    2b28bb1b
i915_reg.h 188 KB