1. 09 11月, 2013 13 次提交
    • B
      drm/i915/bdw: Support eDP PSR · ed8546ac
      Ben Widawsky 提交于
      Broadwell PSR support is a superset of Haswell. With this simple
      register base calculation, everything that worked on HSW for eDP PSR
      should work on BDW.
      
      Note that Broadwell provides additional PSR support. This is not
      addressed at this time.
      
      v2: Make the HAS_PSR include BDW
      
      v3: Use the correct offset (I had incorrectly used one from my faulty
      brain) (Art!)
      
      v4: It helps if you git add
      
      v5: Be explicit about not setting min link entry time for BDW. This
      should be no functional change over v4 (Jani)
      Reviewed-by: NArt Runyan <arthur.j.runyan@intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ed8546ac
    • B
      drm/i915/bdw: Use The GT mailbox for IPS enable/disable · 2a114cc1
      Ben Widawsky 提交于
      v2: Squash in fixup from Ben to synchronize the GT mailbox commands.
      
      CC: Art Runyan <arthur.j.runyan@intel.com>
      Reviewed-by: NArt Runyan <arthur.j.runyan@intel.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2a114cc1
    • V
      drm/i915/bdw: Add Broadwell display FIFO limits · 416f4727
      Ville Syrjälä 提交于
      Broadwell has bigger display FIFOs than Haswell. Otherwise the
      two are very similar.
      
      v2: Fix FBC WM_LP shift for BDW
      
      v3: Rebase on top of the big Haswell wm rework.
      
      Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> (v2)
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      416f4727
    • P
      drm/i915/bdw: add support for BDW DP voltage swings and pre-emphasis · 8f93f4f1
      Paulo Zanoni 提交于
      They're not the same as the Haswell ones.
      Reviewed-by: NArt Runyan <arthur.j.runyan@intel.com>
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NTodd Previte <tprevite@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      8f93f4f1
    • P
      drm/i915/bdw: get the correct LCPLL frequency on Broadwell · e39bf98a
      Paulo Zanoni 提交于
      v2: Rebased onto Paulo's MHz->kHz change.
      
      v3: Rebased on top of the Haswell pc8+ adjustements.
      
      v4: Use the exact 337.5MHz clock, should have been done as part of v2.
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> (v1)
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e39bf98a
    • P
      drm/i915/bdw: Broadwell has PIPEMISC · 756f85cf
      Paulo Zanoni 提交于
      And it inherits some bits from the previous TRANS_CONF (aka PIPE_CONF
      on previous gens).
      
      v2: Rebase on to of the pipe config bpp handling rework.
      
      v3: Rebased on top of the pipe_config->dither refactoring.
      
      v4: Drop the read-modify-write cycle for PIPEMISC, similarly to how we
      now also build up PIPECONF completely ourselves - keeping around
      random stuff set by the BIOS just isn't a good idea. I've checked BDW
      BSpec and we already set all relevant bits.
      
      Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> (v1)
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      756f85cf
    • B
      drm/i915/bdw: Implement PPGTT enable · 94e409c1
      Ben Widawsky 提交于
      Legacy PPGTT on GEN8 requires programming 4 PDP registers per ring.
      Since all rings are using the same address space with the current code
      the logic is simply to program all the tables we've setup for the PPGTT.
      
      v2: Turn on PPGTT in GFX_MODE
      
      v3: v2 was the wrong patch
      
      v4: Resolve conflicts due to patch series reordering.
      
      v5: Squash in fixup from Ben: Use LRI to write PDPs
      
      The docs (and simulator seems to back up) suggest that we can only
      program legacy PPGTT PDPs with LRI commands.
      
      v6: Rebase around context differences conflicts.
      
      v7: Use #defines for per ring PDPs. (Damien)
      
      v8: Don't use typede'f private_t.
      
      Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (up to v3 and v7)
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      94e409c1
    • B
      drm/i915/bdw: Support BDW caching · fbe5d36e
      Ben Widawsky 提交于
      BDW caching works differently than the previous generations. Instead of
      having bits in the PTE which directly control how the page is cached,
      the 3 PTE bits PWT PCD and PAT provide an index into a PAT defined by
      register 0x40e0. This style of caching is functionally equivalent to how
      it works on HSW and before.
      
      v2: Tiny bikeshed as discussed on internal irc.
      
      v3: Squash in patch from Ville to mirror the x86 PAT setup more like
      in arch/x86/mm/pat.c. Primarily, the 0th index will be WB, and not
      uncached.
      
      v4: Comment for reason to not use a 64b write on the PPAT.
      
      v5: Add a FIXME comment that the caching bits in the PAT registers
      might be wrong due to doc confusion.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v1)
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fbe5d36e
    • B
      drm/i915/bdw: dispatch updates (64b related) · 1c7a0623
      Ben Widawsky 提交于
      The command to emit batch buffers has changed to address 48b addresses.
      It seemed reasonable that we could still use the old instruction where
      emitting 0 for length would do the right thing, but it seems to bother
      the simulator when the code does that.
      
      Now the second dword in the command has the upper 16b of the address of
      the batchbuffer.
      
      v2: Remove duplicated vfun assignment.
      
      v3: Squash in VECS support changes from Zhao Yakui <yakui.zhao@intel.com>
      
      v4: Make checkpatch happy.
      
      Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v2)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1c7a0623
    • B
      drm/i915/bdw: Implement interrupt changes · abd58f01
      Ben Widawsky 提交于
      The interrupt handling implementation remains the same as previous
      generations with the 4 types of registers, status, identity, mask, and
      enable. However the layout of where the bits go have changed entirely.
      To address these changes, all of the interrupt vfuncs needed special
      gen8 code.
      
      The way it works is there is a top level status register now which
      informs the interrupt service routine which unit caused the interrupt,
      and therefore which interrupt registers to read to process the
      interrupt. For display the division is quite logical, a set of interrupt
      registers for each pipe, and in addition to those, a set each for "misc"
      and port.
      
      For GT the things get a bit hairy, as seen by the code. Each of the GT
      units has it's own bits defined. They all look *very similar* and
      resides in 16 bits of a GT register. As an example, RCS and BCS share
      register 0. To compact the code a bit, at a slight expense to
      complexity, this is exactly how the code works as well. 2 structures are
      added to the ring buffer so that our ring buffer interrupt handling code
      knows which ring shares the interrupt registers, and a shift value (ie.
      the top or bottom 16 bits of the register).
      
      The above allows us to kept the interrupt register caching scheme, the
      per interrupt enables, and the code to mask and unmask interrupts
      relatively clean (again at the cost of some more complexity).
      
      Most of the GT units mentioned above are command streamers, and so the
      symmetry should work quite well for even the yet to be implemented rings
      which Broadwell adds.
      
      v2: Fixes up a couple of bugs, and is more verbose about errors in the
      Broadwell interrupt handler.
      
      v3: fix DE_MISC IER offset
      
      v4: Simplify interrupts:
      I totally misread the docs the first time I implemented interrupts, and
      so this should greatly simplify the mess. Unlike GEN6, we never touch
      the regular mask registers in irq_get/put.
      
      v5: Rebased on to of recent pch hotplug setup changes.
      
      v6: Fixup on top of moving num_pipes to intel_info.
      
      v7: Rebased on top of Egbert Eich's hpd irq handling rework. Also
      wired up ibx_hpd_irq_setup for gen8.
      
      v8: Rebase on top of Jani's asle handling rework.
      
      v9: Rebase on top of Ben's VECS enabling for Haswell, where he
      unfortunately went OCD on the gt irq #defines. Not that they're still
      not yet fully consistent:
      - Used the GT_RENDER_ #defines + bdw shifts.
      - Dropped the shift from the L3_PARITY stuff, seemed clearer.
      - s/irq_refcount/irq_refcount.gt/
      
      v10: Squash in VECS enabling patches and the gen8_gt_irq_handler
      refactoring from Zhao Yakui <yakui.zhao@intel.com>
      
      v11: Rebase on top of the interrupt cleanups in upstream.
      
      v12: Rebase on top of Ben's DPF changes in upstream.
      
      v13: Drop bdw from the HAS_L3_DPF feature flag for now, it's unclear what
      exactly needs to be done. Requested by Ben.
      
      v14: Fix the patch.
      - Drop the mask of reserved bits and assorted logic, it doesn't match
        the spec.
      - Do the posting read inconditionally instead of commenting it out.
      - Add a GEN8_MASTER_IRQ_CONTROL definition and use it.
      - Fix up the GEN8_PIPE interrupt defines and give the GEN8_ prefixes -
        we actually will need to use them.
      - Enclose macros in do {} while (0) (checkpatch).
      - Clear DE_MISC interrupt bits only after having processed them.
      - Fix whitespace fail (checkpatch).
      - Fix overtly long lines where appropriate (checkpatch).
      - Don't use typedef'ed private_t (maintainer-scripts).
      - Align the function parameter list correctly.
      
      Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v4)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      
      bikeshed
      abd58f01
    • B
      drm/i915/bdw: display stuff · 4e0bbc31
      Ben Widawsky 提交于
      Just enough to make the code not barf...
      
      Init BDW display to look like HSW. For the simulator this should be
      fine, but this will probably require more work.
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      [danvet: Add a FIXME comment about RCS flips being untested on bdw.
      Also add a note that hblank events are reserved on bdw+ in DERRMR.]
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4e0bbc31
    • B
      drm/i915/bdw: HW context support · 8897644a
      Ben Widawsky 提交于
      BDW context sizes varies a bit.
      
      v2: Squash in fixup for the hw context size from Ben.
      
      Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v1)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      8897644a
    • B
      drm/i915/bdw: Swizzling support · 31a5336e
      Ben Widawsky 提交于
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      31a5336e
  2. 02 11月, 2013 1 次提交
  3. 31 10月, 2013 1 次提交
  4. 30 10月, 2013 2 次提交
  5. 27 10月, 2013 2 次提交
  6. 22 10月, 2013 4 次提交
  7. 18 10月, 2013 5 次提交
  8. 16 10月, 2013 2 次提交
  9. 15 10月, 2013 1 次提交
  10. 12 10月, 2013 1 次提交
  11. 04 10月, 2013 3 次提交
    • C
      drm/i915/vlv: Turn off power gate for BIOS-less system. · 02f4c9e0
      Chon Ming Lee 提交于
      During system boot up, by default, the power gate for render, media and
      display well still power gated.  Normally, BIOS will turn off the power
      gate.  In the BIOS-less system, the driver need to turn off the power
      gate very early during driver load.
      
      v2: Move this to intel_uncore_sanitize to allow it to get call during
      resume path. (Daniel)
      v3: Remove redundant write 0 to DPIO_CTL, and use DPIO_RESET instead of
      just 0x1 (Ville)
          Add turn of power gate for display 2d/render well/media well.
      v4: Remove toggle cmnreset in intel_uncore_sanitize.  Cmnreset should
      toggle after CRI clock source has been selected.  Jesse DPIO reset patch
      which toggle the cmnreset in intel_modeset_init_hw() should handle it.
      (Ville)
      Signed-off-by: NChon Ming Lee <chon.ming.lee@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      02f4c9e0
    • J
      drm/i915/vlv: reset DPIO on load and resume v2 · 40e9cf64
      Jesse Barnes 提交于
      DPIO needs to have common reset de-asserted on soft resets like boot and
      S3.  In some cases, the BIOS will have done this for us, but it should
      be safe to do at runtime as well, as long as we do it when the pipes are
      otherwise off.
      
      v2: update bit name to match docs better (Ville)
          reset after CRI clock select (Ville)
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=69166Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      40e9cf64
    • C
      drm/i915: Tweak RPS thresholds to more aggressively downclock · dd75fdc8
      Chris Wilson 提交于
      After applying wait-boost we often find ourselves stuck at higher clocks
      than required. The current threshold value requires the GPU to be
      continuously and completely idle for 313ms before it is dropped by one
      bin. Conversely, we require the GPU to be busy for an average of 90% over
      a 84ms period before we upclock. So the current thresholds almost never
      downclock the GPU, and respond very slowly to sudden demands for more
      power. It is easy to observe that we currently lock into the wrong bin
      and both underperform in benchmarks and consume more power than optimal
      (just by repeating the task and measuring the different results).
      
      An alternative approach, as discussed in the bspec, is to use a
      continuous threshold for upclocking, and an average value for downclocking.
      This is good for quickly detecting and reacting to state changes within a
      frame, however it fails with the common throttling method of waiting
      upon the outstanding frame - at least it is difficult to choose a
      threshold that works well at 15,000fps and at 60fps. So continue to use
      average busy/idle loads to determine frequency change.
      
      v2: Use 3 power zones to keep frequencies low in steady-state mostly
      idle (e.g. scrolling, interactive 2D drawing), and frequencies high
      for demanding games. In between those end-states, we use a
      fast-reclocking algorithm to converge more quickly on the desired bin.
      
      v3: Bug fixes - make sure we reset adj after switching power zones.
      
      v4: Tune - drop the continuous busy thresholds as it prevents us from
      choosing the right frequency for glxgears style swap benchmarks. Instead
      the goal is to be able to find the right clocks irrespective of the
      wait-boost.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Kenneth Graunke <kenneth@whitecape.org>
      Cc: Stéphane Marchesin <stephane.marchesin@gmail.com>
      Cc: Owen Taylor <otaylor@redhat.com>
      Cc: "Meng, Mengmeng" <mengmeng.meng@intel.com>
      Cc: "Zhuang, Lena" <lena.zhuang@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      dd75fdc8
  12. 03 10月, 2013 1 次提交
  13. 01 10月, 2013 4 次提交