• Vandana Kannan's avatar
    drm/i915/bxt: add display initialize/uninitialize sequence (CDCLK) · f8437dd1
    Vandana Kannan authored
    Add CDCLK specific display clock initialization sequence as per BSpec.
    
    Note that the CDCLK initialization/uninitialization are done at their
    current place only for simplicity, in a future patch - when more of the
    runtime PM features will be enabled - these will be moved to power
    well#1 and modeset encoder enabling/disabling hooks respectively. This
    also means that atm dynamic power gating power well #1 is effectively
    disabled.
    
    The call to uninitialize CDCLK during system/runtime suspend will be
    added later in this patchset.
    
    v1: Added function definitions in header files
    v2: Imre's review comments addressed
    - Moved CDCLK related definitions to i915_reg.h
    - Removed defintions for CDCLK frequency
    - Split uninit_cdclk() by adding a phy_uninit function
    - Calculate freq and decimal based on input frequency
    - Program SSA precharge based on input frequency
    - Use wait_for 1ms instead 200us udelay for DE PLL locking
    - Removed initial value for divider, freq, decimal, ratio.
    - Replaced polling loops with wait_for
    - Parameterized latency optim setting
    - Fix the parts where DE PLL has to be disabled.
    - Call CDCLK selection from mode set
    
    v3: (imre)
    - add note about the plan to move the cdclk/phy init to a better place
    - take rps.hw_lock around pcode access
    - move DE PLL register macros here from another patch since they are
      used here first
    - add BXT_ prefix to CDCLK flags
    - add missing masking when programming CDCLK_FREQ_DECIMAL
    
    v4: (ville)
    - split the CDCLK/PHY parts into two patches, update commit message
      accordingly
    - s/DISPLAY_PCU_CONTROL/HSW_PCODE_DE_WRITE_FREQ_REQ/
    - simplify BXT_DE_PLL_RATIO macros
    - fix BXT_DE_PLL_RATIO_MASK
    - s/bxt_select_cdclk_freq/broxton_set_cdclk_freq/
    - move cdclk init/uninit/set code from intel_ddi.c to intel_display.c
    - remove redundant code comments for broxton_set_cdclk_freq()
    - sanitize fixed point<->integer frequency value conversion
    - use DRM_ERROR instead of WARN
    - do RMW when programming BXT_DE_PLL_CTL for safety
    - add note about PLL lock timeout being exactly 200us
    - make PCU error messages more descriptive
    - instead of using 0 freq to mean PLL off/bypass freq use 19200
      for clarity, as the latter one is the actual rate
    - simplify pcode programming, removing duplicated
      sandybridge_pcode_write() call
    - sanitize code flow, remove unnecessary scratch vars in
      broxton_set_cdclk() (imre)
    - Remove bound check for maxmimum freq to match current code.
      This check will be added later at a more proper platform
      independent place once atomic support lands.
    - add note to remove freq guard band which isn't needed on BXT
    - add note to reduce freq to minimum if no pipe is enabled
    - combine broxton_modeset_global_pipes() with
      valleyview_modeset_global_pipes()
    
    Signed-off-by: Vandana Kannan <vandana.kannan@intel.com> (v2)
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    f8437dd1
intel_display.c 423 KB