1. 28 5月, 2015 1 次提交
  2. 22 5月, 2015 3 次提交
    • V
      drm/i915: Enable GTT caching on gen8 · 6d50b065
      Ville Syrjälä 提交于
      GTT caching was disabled by default on gen8 due to not working with
      big pages. Some information suggests that it got fixed, but still
      GTT caching has been left disabled by default. Or could be it just
      meant that the default was changed to off, and hence the problem
      got solved.
      
      Enable GTT caching in the hopes of some performance increase.
      Whether or not the big pages issue has been fixed is irrelevant
      at this stage since we don't use big pages.
      
      This gives me a 1-2% improvement in xonotic on my BSW. Haven't tried
      BDW, but supposedly it has larger TLBs so might not benefit as much.
      On HSW GTT caching is enabled by default.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6d50b065
    • V
      drm/i915: Clean up the CPT DP .get_hw_state() port readout · adc289d7
      Ville Syrjälä 提交于
      Define a TRANS_DP_PIPE_TO_PORT() to make the CPT DP .get_hw_state()
      pipe readout neater.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      adc289d7
    • D
      drm/i915/skl: Deinit/init the display at suspend/resume · 5d96d8af
      Damien Lespiau 提交于
      We need to re-init the display hardware when going out of suspend. This
      includes:
      
        - Hooking the PCH to the reset logic
        - Restoring CDCDLK
        - Enabling the DDB power
      
      Among those, only the CDCDLK one is a bit tricky. There's some
      complexity in that:
      
        - DPLL0 (which is the source for CDCLK) has two VCOs, each with a set
          of supported frequencies. As eDP also uses DPLL0 for its link rate,
          once DPLL0 is on, we restrict the possible eDP link rates the chosen
          VCO.
        - CDCLK also limits the bandwidth available to push pixels.
      
      So, as a first step, this commit restore what the BIOS set, until I can
      do more testing.
      
      In case that's of interest for the reviewer, I've unit tested the
      function that derives the decimal frequency field:
      
        #include <stdio.h>
        #include <stdint.h>
        #include <assert.h>
      
        #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
      
        static const struct dpll_freq {
                unsigned int freq;
                unsigned int decimal;
        } freqs[] = {
                { .freq = 308570, .decimal = 0b01001100111},
                { .freq = 337500, .decimal = 0b01010100001},
                { .freq = 432000, .decimal = 0b01101011110},
                { .freq = 450000, .decimal = 0b01110000010},
                { .freq = 540000, .decimal = 0b10000110110},
                { .freq = 617140, .decimal = 0b10011010000},
                { .freq = 675000, .decimal = 0b10101000100},
        };
      
        static void intbits(unsigned int v)
        {
                int i;
      
                for(i = 10; i >= 0; i--)
                        putchar('0' + ((v >> i) & 1));
        }
      
        static unsigned int freq_decimal(unsigned int freq /* in kHz */)
        {
                return (freq - 1000) / 500;
        }
      
        static void test_freq(const struct dpll_freq *entry)
        {
                unsigned int decimal = freq_decimal(entry->freq);
      
                printf("freq: %d, expected: ", entry->freq);
                intbits(entry->decimal);
                printf(", got: ");
                intbits(decimal);
                putchar('\n');
      
                assert(decimal == entry->decimal);
        }
      
        int main(int argc, char **argv)
        {
                int i;
      
                for (i = 0; i < ARRAY_SIZE(freqs); i++)
                        test_freq(&freqs[i]);
      
                return 0;
        }
      
      v2:
        - Rebase on top of -nightly
        - Use (freq - 1000) / 500 for the decimal frequency (Ville)
        - Fix setting the enable bit of HSW_NDE_RSTWRN_OPT (Ville)
        - Rename skl_display_{resume,suspend} to skl_{init,uninit}_cdclk to
          be consistent with the BXT code (Ville)
        - Store boot CDCLK in ddi_pll_init (Ville)
        - Merge dev_priv's skl_boot_cdclk into cdclk_freq
        - Use LCPLL_PLL_LOCK instead of (1 << 30) (Ville)
        - Replace various '0' by SKL_DPLL0 to be a bit more explicit that
          we're programming DPLL0
        - Busy poll the PCU before doing the frequency change. It takes about
          3/4 cycles, each separated by 10us, to get the ACK from the CPU
          (Ville)
      
      v3:
        - Restore dev_priv->skl_boot_cdclk, leaving unification with
          dev_priv->cdclk_freq for a later patch (Daniel, Ville)
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5d96d8af
  3. 21 5月, 2015 1 次提交
  4. 20 5月, 2015 2 次提交
    • V
      drm/i915/bxt: Port PLL programming BUN · b6dc71f3
      Vandana Kannan 提交于
      BUN 1: prop_coeff, int_coeff, tdctargetcnt programming updated and tied to
      VCO frequencies. Program i_lockthresh in PORT_PLL_9.
      
      VCO calculated based on the formula:
      Desired Output = Port bit rate in MHz (DisplayPort HBR2 is 5400 MHz)
      Fast Clock = Desired Output / 2
      VCO = Fast Clock * P1 * P2
      
      Prop_coeff, int_coeff, and tdctargetcnt modified according to above
      calculation.
      
      BUN 2: Port PLLs require additional programming at certain frequencies -
      DCO amplitude in PORT_PLL_10
      
      Review comments from Siva which were addressed in the initial version of the
      patch.
      	- Change PORT_PLL_LOCK_THRESHOLD to PORT_PLL_LOCK_THRESHOLD_MASK
      	- Calculate for HDMI
      	- Correct values for vco = 5.4
      	- return in case of invalid vco range
      
      v2: Imre's review comments addressed
      	- change dcoampovr_en to dcoampovr_en_h
      	- change PORT_PLL_DCO_AMP_OVR_EN to PORT_PLL_DCO_AMP_OVR_EN_H
      	- Correct lane stagger value for 324MHz
      	- Make coef common for HDMI and DP
      	- remove superfluous comments
      
      v3: Imre's comments addressed
      	- Remove Prop_coeff, int_coeff, tdctargetcnt, dcoampovr_en, gain_ctl,
      	dcoampovr_en_h from bxt_clk_div and make them local variables.
      Signed-off-by: NVandana Kannan <vandana.kannan@intel.com>
      Reviewed-by: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> [v1]
      Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b6dc71f3
    • C
      drm/i915: Adding dbuf support for skl nv12 format. · 2cd601c6
      Chandra Konduru 提交于
      Skylake nv12 format requires dbuf (aka. ddb) calculations
      and programming for each of y and uv sub-planes. Made minor
      changes to reuse current dbuf calculations and programming
      for uv plane. i.e., with this change, existing computation
      is used for either packed format or uv portion of nv12
      depending on incoming format. Added new code for dbuf
      computation and programming for y plane.
      
      This patch is a pre-requisite for adding NV12 format support.
      Actual nv12 support is coming in later patches.
      Signed-off-by: NChandra Konduru <chandra.konduru@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2cd601c6
  5. 08 5月, 2015 10 次提交
  6. 28 4月, 2015 1 次提交
  7. 24 4月, 2015 1 次提交
  8. 16 4月, 2015 6 次提交
    • V
      drm/i915/bxt: VSwing programming sequence · 96fb9f9b
      Vandana Kannan 提交于
      VSwing programming sequence as specified in the updated BXT BSpec
      
      v2: Satheesh's review comments addressed.
      - clear value before setting into registers
      - move print statement to bxt function
      Other changes
      - since signal level will not be set into DDI_BUF_CTL, the value need
        not be returned to intel_dp_set_signal_levels(). Making the bxt
        specific function to return void and setting signal_levels = 0 for
        bxt inside intel_dp_set_signal_levels()
      - instead of signal levels, printing vswing level and pre-emphasis
        level
      - in case none of the pre-emphasis levels or vswing levels are set,
        setting default of 400mV + 0dB
      
      v3: Satheesh's review comments
      - Check for mask before printing signal_levels.
      - Removing redundant register writes
      - Call intel_prepare_ddi_buffers only for HAS_PCH_SPLIT
      - Making register write part generic as it will be required for HDMI as
        well.
      
      Re-structure the code to include an array for vswing related values, set
      signal levels
      
      v4: Satheesh's review comments
      - Rebase over latest renaming patches
      - use hsw_signal_levels for HAS_DDI
      Other changes
      - Modified vswing_sequence() func definition
      - Rebased on top of register macro definitions
      
      v5: Satheesh's review comments
      - Check ddi translation table size
      
      v6: Imre's review comments
      - removed comments in vswing sequence
      - added vswing, pre-emphasis prints in intel_dp_set_signal_levels
      - added comment explaining use of DP vswing values for eDP
      - initialize n_entries and ddi_transaltion table based on encoder type
      - create bxt_ddi_buf_trans structure and use decimal values
      - adding a flag in bxt buffer translation table to indicate def entry
      
      v7: (imre)
      - squash in Vandana's "VSwing register definition",
        "HDMI VSwing programming", "Re-enable vswing programming",
        "Fix vswing sequence" patches
      - use BXT_PORT_* regs directly instead of via a temp var
      - simplify BXT_PORT_* macro definitions
      - add code comment why we read lane while write group registers
      - fix readout of DP_TRAIN_PRE_EMPHASIS in debug message
      
      Signed-off-by: Vandana Kannan <vandana.kannan@intel.com> (v6)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NSivakumar Thulasimani <sivakumar.thulasimani@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      96fb9f9b
    • S
      drm/i915/bxt: Define bxt DDI PLLs and implement enable/disable sequence · dfb82408
      Satheeshakrishna M 提交于
      Plug bxt PLL code into existing shared DPLL framework.
      
      v2: (imre)
      - squash in Satheeshakrishna's "Define BXT clock registers" and
        "Add state variables for bxt clock registers" patches
      - squash in Vandanas's "Change grp access to lane access for PLL"
      - fix group vs. lane access in bxt_ddi_pll_get_hw_state
      - add code comment why we read from lane registers while writing to
        group registers
      - clean up register macros
      - use BXT_PORT_PLL_* macros instead of open-coding the same
      - check if BXT_PORT_PCS_DW12_LN01 matches BXT_PORT_PCS_DW12_LN23
        during hardware state readout
      - add missing LANESTAGGER_STRAP_OVRD masking
      - add note about missing step according to the latest BUN for
        PORT_PLL_9/lockthresh
      
      Signed-off-by: Satheeshakrishna M <satheeshakrishna.m@intel.com> (v1)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      dfb82408
    • A
      drm/i915/bxt: Implement enable/disable for Display C9 state · 664326f8
      A.Sunil Kamath 提交于
      v2: Modified as per review comments from Imre
      - Mention enabling instead of allowing in the debug trace and
        remove unnecessary comments.
      
      v3:
      - Rebase to latest.
      - Move DC9-related functions from intel_display.c to intel_runtime_pm.c.
      
      v4: (imre)
      - remove DC5 disabling, it's a nop at this point
      - squashed in Suketu's "Assert the requirements to enter or exit DC9"
        patch
      - remove check for RUNTIME_PM from assert_can_enable_dc9, it's not a
        dependency
      
      Signed-off-by: A.Sunil Kamath <sunil.kamath@intel.com> (v3)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NSagar Kamble <sagar.a.kamble@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      664326f8
    • I
      drm/i915/bxt: add description about the BXT PHYs · eee21566
      Imre Deak 提交于
      Extend the VLV/CHV DPIO (PHY) documentation with the BXT specifics.
      
      v2:
      - add more detail about the mapping between ports and transcoders (ville)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      eee21566
    • V
      drm/i915/bxt: add display initialize/uninitialize sequence (PHY) · 5c6706e5
      Vandana Kannan 提交于
      Add PHY specific display initialization sequence as per BSpec.
      
      Note that the PHY 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.
      
      The call to uninitialize the PHY 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
      - fix DDI PHY timeout value
      - squash in Vandana's "PORT_CL2CM_DW6_A BUN fix",
        "DDI PHY programming register defn", "Do ddi_phy_init always",
      - move PHY register macros next to the corresponding CHV/VLV macros
      - move DE PLL register macros here from another patch since they are
        used here first
      - add BXT_ prefix to CDCLK flags
      - s/COMMON_RESET/COMMON_RESET_DIS/ and clarify related code comments
      - fix incorrect read value for the RMW of BXT_PHY_CTL_FAMILY_DDI
      - fix using GT_DISPLAY_EDP_POWER_ON vs. GT_DISPLAY_DDI_POWER_ON
        when powering on DDI ports
      - fix incorrect port when setting BXT_PORT_TX_DW14_LN for DDI ports
      - add missing masking when programming CDCLK_FREQ_DECIMAL
      - add missing powering on for DDI-C port, rename OCL2_LDOFUSE_PWR_EN
        to OCL2_LDOFUSE_PWR_DIS to reduce confusion
      - add note about mismatch with bspec in the PORT_REF_DW6 fields
      - factor out PHY init code to a new function, so we can call it for
        PHY1 and PHY0, instead of open-coding the same
      
      v4: (ville)
      - split the CDCLK/PHY parts into two patches, update commit message
        accordingly
      - use the existing dpio_phy enum instead of adding a new one for the
        same purpose
      - flip the meaning of PHYs so that PHY_A is PHY1 and PHY_BC is PHY0 to
        better match CHV
      - s/BXT_PHY/_BXT_PHY/
      - use _PIPE for _BXT_PHY instead of open-coding it
      - drop _0_2_0_GTTMMADR suffix from BXT_P_CR_GT_DISP_PWRON
      - define GT_DISPLAY_POWER_ON in a more standard way
      - make a note that the CHV ConfigDB also disagrees about GRC_CODE field
        definitions
      - fix lane optimization refactoring fumble from v3
      - add per PHY uninit functions to match the init counterparts
      
      Signed-off-by: Vandana Kannan <vandana.kannan@intel.com> (v2)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5c6706e5
    • V
      drm/i915/bxt: add display initialize/uninitialize sequence (CDCLK) · f8437dd1
      Vandana Kannan 提交于
      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: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f8437dd1
  9. 15 4月, 2015 1 次提交
  10. 14 4月, 2015 6 次提交
  11. 13 4月, 2015 1 次提交
  12. 10 4月, 2015 4 次提交
  13. 09 4月, 2015 3 次提交