1. 10 4月, 2012 11 次提交
  2. 29 3月, 2012 9 次提交
  3. 28 3月, 2012 2 次提交
    • D
      drm/i915/intel_i2c: gmbus disabled and reserved ports are invalid · 2ed06c93
      Daniel Kurtz 提交于
      There is no GMBUS "disabled" port 0, nor "reserved" port 7.
      For the other 6 ports there is a fixed 1:1 mapping between pin pairs and
      gmbus ports, which means every real gmbus port has a gpio pin.
      
      Given these realizations, clean up gmbus initialization.
      
      Tested on Sandybridge (gen 6, PCH == CougarPoint) hardware.
      Signed-off-by: NDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2ed06c93
    • D
      drm/i915/intel_i2c: assign HDMI port D to pin pair 6 · e4fd17af
      Daniel Kurtz 提交于
      According to i915 documentation [1], "Port D" (DP/HDMI Port D) is
      actually gmbus pin pair 6 (gmbus0.2:0 == 110b GPIOF), not 7 (111b).
      Pin pair 7 is a reserved pair.
      
      [1] Documentation for [DevSNB+] and [DevIBX], as found on
      http://intellinuxgraphics.org:
      
      [DevSNB+]:
      http://intellinuxgraphics.org/documentation/SNB/IHD_OS_Vol3_Part3.pdf
       Section 2.2.2 lists the 6 gmbus ports (gpio pin pairs):
          [ 5: HDMI/DPD, 4: HDMIB, 3: HDMI/DPC, 2: LVDS, 1: SSC, 0: VGA ]
       2.2.2.1 lists the GPIO registers to control these 6 ports.
       2.2.3.1 lists the mapping between 5 of these gmbus ports and the 3
       Pin_Pair_Select bits (of the GMBUS0 register).  This table is missing
       HDMIB (port 101).
      
      [DevIBX]: http://intellinuxgraphics.org/IHD_OS_Vol3_Part3r2.pdf
       Section 2.2.2 lists the same 6 gmbus ports plus two 'reserved' gpio
       ports.
       2.2.2.1 lists 8 GPIO registers... however, it says the size of the
       block is 6x32, which implies that those 2 reserved GPIO registers
       (GPIO_6 & GPIO_7) don't actually exist (or are irrelevant).
       2.2.3.1 lists the mapping between the 6 named gmbus ports and the 3
       Pin_Pair_Select bits (of the GMBUS0 register).  This table has HDMIB.
      
      Note: the "reserved" and "disabled" pairs do not actually map to a
      physical pair of pins, nor GPIO regs and shouldn't be initialized or used.
      Fixing this is left for a later patch.
      
      This bug had not been noticed earlier for two reasons:
       1) Until recently, "gmbus" mode was disabled - all transfers actually
          used "bit-bang" mode on GPIO port 5 (the "HDMI/DPD CTLDATA/CLK"
          pair), at register 0x5024 (defined as GPIOF i915_reg.h).
          Since this is the correct pair of pins for HDMI1, transfers succeed.
      
       2) Even if gmbus mode is re-enabled, the first attempted transaction
          will fail because it tries to use the wrong ("Reserved") pin pair.
          However, the driver immediately falls back again to the bit-bang
          method, which correctly uses GPIOF, so again, transfers succeed.
      
      However, if gmbus mode is re-enabled and the GPIO fall-back mode is
      disabled, then reading an attached monitor's EDID fail.
      Signed-off-by: NDaniel Kurtz <djkurtz@chromium.org>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e4fd17af
  4. 24 3月, 2012 1 次提交
  5. 15 2月, 2012 1 次提交
  6. 12 2月, 2012 1 次提交
  7. 11 2月, 2012 3 次提交
  8. 10 2月, 2012 2 次提交
  9. 09 2月, 2012 1 次提交
    • D
      drm/i915: swizzling support for snb/ivb · f691e2f4
      Daniel Vetter 提交于
      We have to do this manually. Somebody had a Great Idea.
      
      I've measured speed-ups just a few percent above the noise level
      (below 5% for the best case), but no slowdows. Chris Wilson measured
      quite a bit more (10-20% above the usual snb variance) on a more
      recent and better tuned version of sna, but also recorded a few
      slow-downs on benchmarks know for uglier amounts of snb-induced
      variance.
      
      v2: Incorporate Ben Widawsky's preliminary review comments and
      elaborate a bit about the performance impact in the changelog.
      
      v3: Add a comment as to why we don't need to check the 3rd memory
      channel.
      
      v4: Fixup whitespace.
      Acked-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: NEric Anholt <eric@anholt.net>
      Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f691e2f4
  10. 30 1月, 2012 3 次提交
  11. 29 1月, 2012 1 次提交
  12. 26 1月, 2012 1 次提交
  13. 04 1月, 2012 4 次提交
    • E
      drm/i915: Add support for resetting the SO write pointers on gen7. · ae662d31
      Eric Anholt 提交于
      These registers are automatically incremented by the hardware during
      transform feedback to track where the next streamed vertex output
      should go.  Unlike the previous generation, which had a packet for
      setting the corresponding registers to a defined value, gen7 only has
      MI_LOAD_REGISTER_IMM to do so.  That's a secure packet (since it loads
      an arbitrary register), so we need to do it from the kernel, and it
      needs to be settable atomically with the batchbuffer execution so that
      two clients doing transform feedback don't stomp on each others'
      state.
      
      Instead of building a more complicated interface involcing setting the
      registers to a specific value, just set them to 0 when asked and
      userland can tweak its pointers accordingly.
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Reviewed-by: NEugeni Dodonov <eugeni.dodonov@intel.com>
      Reviewed-by: NKenneth Graunke <kenneth@whitecape.org>
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      ae662d31
    • E
      drm/i915: Set two chicken bits implicated in missed IRQs on Ivybridge. · 116ac8d2
      Eric Anholt 提交于
      They don't fix our problems alone, but we're told to set them.
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      116ac8d2
    • J
      drm/i915: add color key support v4 · 8ea30864
      Jesse Barnes 提交于
      Add new ioctls for getting and setting the current destination color
      key.  This allows for simple overlay display control by matching a color
      key value in the primary plane before blending the overlay on top.
      
      v2: remove unnecessary mutex acquire/release around reg accesses
      v3: add support for full color key management
      v4: fix copy & paste bug in snb_get_colorkey
          don't bother checking min/max values against docs as the docs are likely
          wrong (how could we handle 10bpc surface formats?)
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      8ea30864
    • J
      drm/i915: add SNB and IVB video sprite support v6 · b840d907
      Jesse Barnes 提交于
      The video sprites support various video surface formats natively and can
      handle scaling as well.  So add support for them using the new DRM core
      sprite support functions.
      
      v2: use drm specific fourcc header and defines
      v3: address Daniel's comments:
        - don't take struct mutex around register access (only needed for
          regs in the GT power well)
        - don't hold struct mutex across vblank waits
        - fix up update_plane API (pass obj instead of GTT offset)
        - add interlaced defines for sprite regs
        - drop unnecessary 'reg' variables
        - comment double buffered reg flushing
        Also fix w/h confusion when writing the scaling reg.
      v4: more fixes, address more comments from Daniel, and include Hai's fix
        - prevent divide by zero in scaling calculation (Hai Lan)
        - update to Ville's new DRM_FORMAT_* types
        - fix sprite watermark handling (calc based on CRTC size, separate
          from normal display wm)
        - remove private refcounts now that the fb cleanups handles things
      v5: add linear surface support
      v6: remove color key clearing & setting from update_plane
      
      For this version, I tested DPMS since it came up in the last review;
      DPMS off/on works ok when a video player is working under X, but for
      power saving we'll probably want to do something smarter.  I'll leave
      that for a separate patch on top.  Likewise with the refcounting/fb
      layer handling, which are really separate cleanups.
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      b840d907