1. 15 10月, 2013 1 次提交
  2. 03 10月, 2013 1 次提交
  3. 04 9月, 2013 3 次提交
  4. 30 8月, 2013 2 次提交
  5. 23 8月, 2013 2 次提交
  6. 22 8月, 2013 1 次提交
  7. 19 8月, 2013 1 次提交
  8. 07 8月, 2013 1 次提交
  9. 06 8月, 2013 1 次提交
  10. 27 7月, 2013 1 次提交
  11. 24 7月, 2013 2 次提交
    • P
      drm/i915: add functions to disable and restore LCPLL · be256dc7
      Paulo Zanoni 提交于
      For now there are no callers, but these functions are going to be
      needed for the code that allows Package C8+. Other future features may
      also require this code.
      
      Also merge the commit which introduced assert_can_disable_lcpll and
      had the following commit message:
      
      Most of the hardware needs to be disabled before LCPLL is disabled, so
      let's add a function to assert some of items listed in the "Display
      Sequences for LCPLL disabling" documentation.
      
      The idea is that hsw_disable_lcpll should not disable the hardware,
      the callers need to take care of calling hsw_disable_lcpll only once
      everything is already disabled.
      
      v2: - Rebase.
          - Fix D_COMP wait timeout.
      v3: - Use wait_for_atomic_use (Ben)
          - Remove/add a useless/needed POSTING_READ (Ben)
          - Early return in case LCPLL is already restored (Ben)
          - Add ndelay(100) (Ben)
      v4: - Merge the commit that added assert_can_disable_lcpll (Ben)
          - Add interrupt assertions (Ben)
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      [danvet: Fix compile fail since there's no HAS_LP_PCH yet.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      be256dc7
    • P
      drm/i915: extend lpt_enable_clkout_dp · 2fa86a1f
      Paulo Zanoni 提交于
      Now it implements 3 different sequences from BSpec and also has
      support for ULT.
      
      v2: - Change IS_ULT checks for LPT-LP checks
          - Add check for LPT-LP + with_fdi (Ben)
          - Merge DBUFF0/GEN0 bit definitions since they're the same
            register (Ben)
          - DBUFF0 (1<<0) is Disable, not Enable
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2fa86a1f
  12. 20 7月, 2013 1 次提交
  13. 18 7月, 2013 3 次提交
  14. 16 7月, 2013 1 次提交
  15. 11 7月, 2013 2 次提交
    • D
      drm/i915: improve GEN7_ERR_INT clearing for fifo underrun reporting · 7336df65
      Daniel Vetter 提交于
      Same treatment as for SERR_INT: If we clear only the bit for the pipe
      we're enabling (but unconditionally) then we can always check for
      possible underruns after having disabled the interrupt. That way pipe
      underruns won't be lost, but at worst only get reported in a delayed
      fashion.
      
      v2: The same logic bug as in the SERR handling change also existed
      here. The same bugfix of only reporting missed underruns when the
      error interrupt was masked applies, too.
      
      v3: Do the same fixes as for the SERR handling that Paulo suggested in
      his review:
      - s/%i/%c/ fix in the debug output
      - move the DE_ERR_INT_IVB read into the respective if block
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      [danvet: Fix up the checkpatch bikeshed Paulo noticed.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7336df65
    • D
      drm/i915: improve SERR_INT clearing for fifo underrun reporting · 1dd246fb
      Daniel Vetter 提交于
      The current code won't report any fifo underruns on cpt if just one
      pipe has fifo underrun reporting disabled. We can't enable the
      interrupts, but we can still check the per-transcoder bits and so
      report the underrun delayed if:
      - We always clear the transcoder's bit (and none of the other bits)
        when enabling.
      - We check the transcoder's bit after disabling (to avoid racing with
        the interrupt handler).
      
      v2: I've forgotten to actually remove the old SERR_INT clearing.
      
      v3: Use transcoder_name as suggested by Paulo Zanoni. Paulo also
      noticed a logic bug: When an underrun interrupt fires we report it
      both in the interrupt handler and when checking for underruns when
      disabling it in cpt_set_fifo_underrun_reporting. But that second check
      is only required if the interrupt is disabled and we're switching of
      underrun reporting (e.g. because we're disabling the crtc). Hence
      check for that condition.
      
      At first I wanted to rework the code to pass that bit of information
      from the uppper functions down to cpt_set_fifo_underrun_reporting. But
      that turned out too messy. Hence the quick&dirty check whether the
      south error interrupt source is masked off or not.
      
      v4: Streamline the control flow a bit.
      
      v5: s/pipe/pch transcoder/ in the dmesg output, suggested by Paulo.
      
      v6: Review from Paulo:
      - Reorder the was_enabled assignment to only read the register when we
        need it. Also add a comment that we need to do that before updating
        the register.
      - s/%i/%c/ fix for the debug output.
      - Fix the checkpath complaint in the SERR_INT_TRANS_FIFO_UNDERRUN
        #define.
      
      v7: Hopefully put that elusive SERR hunk back into this patch, spotted
      by Paulo.
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1dd246fb
  16. 09 7月, 2013 1 次提交
  17. 02 7月, 2013 1 次提交
  18. 01 7月, 2013 4 次提交
  19. 18 6月, 2013 1 次提交
  20. 13 6月, 2013 1 次提交
    • V
      drm/i915: Try harder to disable trickle feed on VLV · e0d8d59b
      Ville Syrjälä 提交于
      The specs are a bit unclear whether the per-plane trickle feed disable
      control exists on VLV. There is another trickle feed disable control
      in the MI_ARB register.
      
      After some experimentation it turns out both the DSPCNTR trickle feed
      bits and the MI_ARB bit can be toggled. However the DSPCNTR bits don't
      seem to have any effect.
      
      The MI_ARB bit, on the other hand, has a noticable effect. I performed
      an experiment where I reduced the FIFO size via DSPARB and observed the
      effect of the MI_ARB trickle feed bit on the display.
      
      Using a 1920x1080-60 mode, with MI_ARB=0x4 the display started to have
      problems with DSPARB=0x42424242, whereas with MI_ARB=0x0 the problems
      didn't start until DSPARB=0x09090909. This seems to confirm that the
      MI_ARB trickle feed bit actually does work.
      
      So replace the use of the DSPCNTR trickle feed bits with MI_ARB
      on VLV.
      
      v2: Amend commit message with results from experimentation
      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>
      e0d8d59b
  21. 11 6月, 2013 2 次提交
  22. 07 6月, 2013 1 次提交
    • R
      drm/i915: WA: FBC Render Nuke. · fd3da6c9
      Rodrigo Vivi 提交于
      WaFbcNukeOn3DBlt for IVB, HSW.
      
      According BSPec: "Workaround: Do not enable Render Command Streamer tracking for FBC.
      Instead insert a LRI to address 0x50380 with data 0x00000004 after the PIPE_CONTROL that
      follows each render submission."
      
      v2: Chris noticed that flush_domains check was missing here and also suggested to do
          LRI only when fbc is enabled. To avoid do a I915_READ on every flush lets use the
          module parameter check.
      
      v3: Adding Wa name as Damien suggested.
      
      v4: Ville noticed VLV doesn't support fbc at all and comment came wrong from spec.
      
      v5: Ville noticed than on blt a Cache Clean LRI should be used instead the Nuke one.
      
      v6: Check for flush domain on blt (by Ville).
          Check for scanout dirty (by Chris).
      
      v7: Apply proper fbc_dirty implemented by Chris.
      
      v8: remove unused variables.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fd3da6c9
  23. 06 6月, 2013 1 次提交
  24. 05 6月, 2013 1 次提交
  25. 01 6月, 2013 4 次提交
    • P
      drm/i915: implement IPS feature · 42db64ef
      Paulo Zanoni 提交于
      Intermediate Pixel Storage is a feature that should reduce the number
      of times the display engine wakes up memory to read pixels, so it
      should allow deeper PC states. IPS can only be enabled on ULT pipe A
      with 8:8:8 pipe pixel formats.
      
      With eDP 1920x1080 and correct watermarks but without FBC this moves
      my PC7 residency from 2.5% to around 38%.
      
      v2: - It's tied to pipe A, not port A
          - Add pipe_config support (Chris)
          - Add some assertions (Chris)
          - Rebase against latest dinq
      v3: - Don't ever set ips_enabled to false (Daniel)
          - Only check for ips_enabled at hsw_disable_ips (Daniel)
      v4: - Add hsw_compute_ips_config (Daniel)
          - Use the new dump_pipe_config (Daniel)
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      42db64ef
    • B
      drm/i915: Enable vebox interrupts · 12638c57
      Ben Widawsky 提交于
      Similar to a patch originally written by:
      
      v2: Reversed the meanings of masked and enabled (Haihao)
      Made non-destructive writes in case enable/disabler rps runs first
      (Haihao)
      
      v3: Reword error message (Damien)
      Modify postinstall to do the right thing based on previous fixup. (Ben)
      
      CC: Xiang, Haihao <haihao.xiang@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      12638c57
    • B
      drm/i915: consolidate interrupt naming scheme · cc609d5d
      Ben Widawsky 提交于
      The motivation here is we're going to add some new interrupt definitions
      and handling outside of the GT interrupts which is all we've managed so
      far (with some RPS exceptions). By consolidating the names in the future
      we can make thing a bit cleaner as we don't need to define register
      names twice, and we can leverage pretty decent overlap in HW registers
      since ILK.
      
      To explain briefly what is in the comments: there are two sets of
      interrupt masking/enabling registers. At least so far, the definitions
      of the two sets overlap. The old code setup distinct names for
      interrupts in each set, ie. one for global, and one for ring. This made
      things confusing when using the wrong defines in the wrong places.
      
      rebase: Modified VLV bits
      
      v2: Renamed GT_RENDER_MASTER to GT_RENDER_CS_MASTER (Damien)
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      cc609d5d
    • B
      drm/i915: make PM interrupt writes non-destructive · 4848405c
      Ben Widawsky 提交于
      PM interrupts have an expanded role on HSW. It helps route the EBOX
      interrupts. This patch is necessary to make the existing code which
      touches the mask, and enable registers more friendly to other code paths
      that also will need these registers.
      
      To be more explicit:
      At preinstall all interrupts are masked and disabled. This implies that
      preinstall should always happen before any enabling/disabling of RPS or
      other interrupts.
      
      The PMIMR is touched by the workqueue, so enable/disable touch IER and
      IIR. Similarly, the code currently expects IMR has no use outside of the
      RPS related interrupts so they unconditionally set 0, or ~0. We could
      use IER in the workqueue, and IMR elsewhere, but since the workqueue
      use-case is more transient the existing usage makes sense.
      
      Disable RPS events:
      IER := IER & ~GEN6_PM_RPS_EVENTS // Disable RPS related interrupts
      IIR := GEN6_PM_RPS_EVENTS // Disable any outstanding interrupts
      
      Enable RPS events:
      IER := IER | GEN6_PM_RPS_EVENTS // Enable the RPS related interrupts
      IIR := GEN6_PM_RPS_EVENTS // Make sure there were no leftover events
      (really shouldn't happen)
      
      v2: Shouldn't destroy PMIIR or PMIMR VEBOX interrupt state in
      enable/disable rps functions (Haihao)
      
      v3: Bug found by Chris where we were clearing the wrong bits at rps
      disable.
          expanded commit message
      
      v4: v3 was based off the wrong branch
      
      v5: Added the setting of PMIMR because of previous patch update
      
      CC: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4848405c