1. 19 3月, 2014 1 次提交
  2. 11 3月, 2014 1 次提交
  3. 08 3月, 2014 4 次提交
  4. 06 3月, 2014 2 次提交
  5. 03 3月, 2014 1 次提交
    • D
      drm/i915: sprinkle static · b5ea642a
      Daniel Vetter 提交于
      Apparently we've missed a few more than what Fengguang's 0-day tester
      recently reported in i915_irq.c ... Makes sparse happy again (ignore
      some spurious stuff about ksyms of exported functions).
      
      Cc: kbuild test robot <fengguang.wu@intel.com>
      Cc: Imre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b5ea642a
  6. 13 2月, 2014 5 次提交
    • D
      drm/i915: Some polish for the new pipestat_irq_handler · bbb5eebf
      Daniel Vetter 提交于
      Just a bit of polish which I hope will help me with massaging some
      internal patches to use Imre's reworked pipestat handling:
      - Don't check for underrun reporting or enable pipestat interrupts
        twice.
      - Frob the comments a bit.
      - Do the iir PIPE_EVENT to pipe mapping explicitly with a switch. We
        only have one place which does this, so better to make it explicit.
      
      v2: Ville noticed that I've broken the logic a bit with trying to
      avoid checking whether we're interested in a given pipe twice. push
      the PIPESTAT read down after we've computed the mask of interesting
      bits first to avoid that duplication properly.
      
      v3: Squash in fixups from Imre on irc.
      
      Cc: Imre Deak <imre.deak@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      bbb5eebf
    • I
      drm/i915: vlv: handle only enabled pipestat interrupt events · 91d181dd
      Imre Deak 提交于
      Atm we call the handlers for pending pipestat interrupt events even if
      they aren't explicitly enabled by i915_enable_pipestat(). This isn't an
      issue for events other than the vblank start event, since those are
      always enabled anyways. Otoh, we enable the vblank start event
      on-demand, so we'll end up calling the vblank handler at times when they
      are disabled.
      
      I haven't checked if this causes any real problem, but for consistency
      and to remove some overhead we should still fix this by clearing /
      handling only the enabled interrupt events. Also this is a dependency
      for the upcoming VLV power domain patchset where we need to disable all
      the pipestat interrupts whenever the display power well is off.
      
      v2:
      - inline the status->enable mask mapping (Ville)
      - don't check for invalid PSR bit on platforms other than VLV (Ville)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      [danvet: Frob conflict due to different merge order.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      91d181dd
    • I
      drm/i915: vlv: fix mapping of pipestat enable to status bits · 10c59c51
      Imre Deak 提交于
      At least on VLV we can't get at the pipestat status bits by simply right
      shifting the corresponding enable bits. The mapping between enable and
      status bits for the sprite0,1 flip done and the PSR events don't follow
      this rule, so we need to map them separately.
      
      The PSR enable for pipe A is DPFLIPSTAT[22], but I haven't added support
      for this, since there is no user of it atm. Until support is added WARN
      if someone tries to enable PSR interrupts, or tries to enable the same
      (1 << 6) bit on pipe B, which MBZ.
      
      v2:
      - inline the status->enable mask mapping (Ville)
      - fix bogus use of status bits in enable mask (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>
      10c59c51
    • I
      drm/i915: pass status instead of enable flags to i915_enable_pipestat · 755e9019
      Imre Deak 提交于
      There isn't any PSR interrupt enable bit for pipe A, so we couldn't
      enable it through the current API. Passing the corresponding status bits
      solves this and also makes the mapping between enable and status bits
      simpler on VLV (addressed in an upcoming patch).
      
      Except of checking for invalid status bit arguments, no functional
      change.
      
      v2: split out the low level parts of i915_enable_pipestat accepting
          separate enabled and status masks, to make the non-standard mapping
          between those masks stand out more (added in the next patch)
          (Jesse,Daniel)
      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>
      755e9019
    • D
      drm/i915: Always use INTEL_INFO() to access the device_info structure · 3d13ef2e
      Damien Lespiau 提交于
      If we make sure that all the dev_priv->info usages are wrapped by
      INTEL_INFO(), we can easily modify the ->info field to be structure and
      not a pointer while keeping the const protection in the INTEL_INFO()
      macro.
      
      v2: Rebased onto latest drm-nightly
      Suggested-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>
      3d13ef2e
  7. 11 2月, 2014 1 次提交
  8. 06 2月, 2014 4 次提交
  9. 04 2月, 2014 2 次提交
  10. 30 1月, 2014 1 次提交
  11. 28 1月, 2014 1 次提交
    • J
      drm/i915: move module parameters into a struct, in a new file · d330a953
      Jani Nikula 提交于
      With 20+ module parameters, I think referring to them via a struct
      improves clarity over just having a bunch of globals. While at it, move
      the parameter initialization and definitions into a new file
      i915_params.c to reduce clutter in i915_drv.c.
      
      Apart from the ill-named i915_enable_rc6, i915_enable_fbc and
      i915_enable_ppgtt parameters, for which we lose the "i915_" prefix
      internally, the module parameters now look the same both on the kernel
      command line and in code. For example, "i915.modeset".
      
      The downsides of the change are losing static on a couple of variables
      and not having the initialization and module_param_named() right next to
      each other. On the other hand, all module parameters are now defined in
      one place at i915_params.c. Plus you can do this to find all module
      parameter references:
      
      $ git grep "i915\." -- drivers/gpu/drm/i915
      
      v2:
      - move the definitions into a new file
      - s/i915_params/i915/
      - make i915_try_reset i915.reset, for consistency
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d330a953
  12. 26 1月, 2014 2 次提交
  13. 25 1月, 2014 4 次提交
  14. 20 1月, 2014 4 次提交
    • V
      drm/i915: Add a kludge for DSL incrementing too late and ISR not working · 095163ba
      Ville Syrjälä 提交于
      On pre-PCH platforms ISR doesn't seem to be an actual ISR, at least as
      far as display interrupts are concerned. Instead it sort of looks like
      some ISR bits just directly reflect the corresponding bit from PIPESTAT.
      The bit appears in the ISR only if the PIPESTAT interrupt is enabled. So
      in that sense it sort of looks a bit like the south interrupt scheme on
      PCH platforms. So it goes something a bit like this:
      PIPESTAT.status & PIPESTAT.enable -> ISR -> IMR -> IIR -> IER -> actual
      interrupt
      
      In any case that means the intel_pipe_in_vblank_locked() doesn't actually
      work for pre-PCH platforms. As a last resort, add a similar kludge as radeon
      has that fixes things up if we got called from the vblank interrupt,
      but the scanline counter value indicates that we're not quite there yet.
      We know that the scanline counter increments at hsync but is otherwise
      accurate, so we can limit the kludge to the line just prior to vblank
      start, instead of the relative distance that radeon uses.
      
      Reviewed-by: mario.kleiner.de@gmail.com
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      095163ba
    • V
      drm: Pass 'flags' from the caller to .get_scanout_position() · abca9e45
      Ville Syrjälä 提交于
      Preparation for moving the early vblank IRQ logic into
      radeon_get_crtc_scanoutpos().
      
      v2: Fix radeon_drv.c compile warning (Mario)
      
      Reviewed-by: mario.kleiner.de@gmail.com
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      abca9e45
    • V
      drm/i915: Fix scanoutpos calculations for interlaced modes · d31faf65
      Ville Syrjälä 提交于
      The scanline counter counts lines in the current field, not the entire
      frame. But the crtc_ timings are the values for the entire frame. Divide
      the vertical timings by 2 to make them match the scanline counter.
      
      The rounding was carefully chosen to make it do the right thing wrt. the
      observed scanline counter and ISR vblank bit behaviour.
      
      Reviewed-by: mario.kleiner.de@gmail.com
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      d31faf65
    • V
      drm: Pass the display mode to drm_calc_vbltimestamp_from_scanoutpos() · 7da903ef
      Ville Syrjälä 提交于
      Rather than using crtc->hwmode, just pass the relevant mode to
      drm_calc_vbltimestamp_from_scanoutpos(). This removes the last hwmode
      usage from core drm.
      
      Reviewed-by: mario.kleiner.de@gmail.com
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      7da903ef
  15. 11 1月, 2014 5 次提交
  16. 10 1月, 2014 2 次提交
    • D
      drm/i915: Drop I915_ prefix from HAS_FBC · 3a77c4c4
      Daniel Vetter 提交于
      My OCD just couldn't let this slide. Spotted while reviewing Ville's
      patch to only flip planes when we have FBC.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      3a77c4c4
    • V
      drm/i915: Don't swap planes on 830M · 38af6096
      Ville Syrjälä 提交于
      Looks like 830M doesn't quite like it when you try to move a plane from
      one pipe to another. It seems that the plane's old pipe has to be active
      even if the plane is already disabled, otherwise the relevant register
      just won't accept new values.
      
      The following commit:
      
       commit 1f1c2e24
       Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
       Date:   Thu Nov 28 17:30:01 2013 +0200
      
          drm/i915: Swap primary planes on gen2 for FBC
      
      caused a regression on 830M. It will attempt to swap the planes when the
      driver is loaded, but at that time only pipe A might be active, so plane
      A gets disabled, but plane B won't get enabled since pipe B is not
      active when we try to move the plane over to pipe A.
      
      There's no reason to swap planes on 830M since it doesn't support
      FBC. Change the logic a bit to limit the plane swapping to platforms
      which actually support FBC. This should avoid getting a black screen on
      830M.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      38af6096