1. 12 11月, 2012 11 次提交
    • V
      drm/i915: Fix display pixel format handling · 57779d06
      Ville Syrjälä 提交于
      Fix support for all RGB/BGR pixel formats (except the 16:16:16:16 float
      format).
      
      Fix intel_init_framebuffer() to match hardware and driver limitations:
      * RGB332 is not supported at all
      * CI8 is supported
      * XRGB1555 & co. are supported on Gen3 and earlier
      * XRGB210101010 & co. are supported from Gen4 onwards
      * BGR formats are supported from Gen4 onwards
      * YUV formats are supported from Gen5 onwards (driver limitation)
      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>
      57779d06
    • D
      drm/i915: Flush using only the correct base address register · 14f86147
      Damien Lespiau 提交于
      We were writing DSP_ADDR and DSP_SURF unconditionally. This did not
      trigger an unclaimed write before HSW as the address of DSP_ADDR has
      been repurposed as DSP_LINOFF.
      
      On HSW, though, DSP_LINOFF has been removed and then writting to it
      triggers an unclaimed write.
      
      This patch writes to DSP_ADDR or DSP_SURF to flush the display plane
      configuration depending on the gen we're running on.
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      14f86147
    • D
      drm/i915: adjust sprite base address · 5a35e99e
      Damien Lespiau 提交于
      Just like in:
      
      commit c2c75131
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Thu Jul 5 12:17:30 2012 +0200
      
          drm/i915: adjust framebuffer base address on gen4+
      
      but this time, for the sprite planes. This ensures that the
      sprite offset are always inside the supported hardware limits since it
      becomes the offset into a page and we adjust the base address to a page
      boundary.
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5a35e99e
    • D
      drm/i915: Fix primary plane offset on HSW · bc1c91eb
      Damien Lespiau 提交于
      Haswell consolidates DSP_TILEOFF and DSP_LINOFF into DSP_OFFSET (aka
      PRI_OFFSET).
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      bc1c91eb
    • D
      drm/i915: check fdi B/C lane sharing constraint · 01a415fd
      Daniel Vetter 提交于
      And properly toggle the chicken bit in the pch to enable/disable fdi C
      rx. If we don't set this bit correctly, the rx gets confused in link
      training, which can result in an fdi link that silently fails to train
      the link (since the corresponding register reports success). Note that
      both fdi link B and C can suffer when this bit is not set correctly.
      
      The code as-is has a few deficiencies:
      - We presume all pipes use the pch which is not the case for cpu edp.
      - We don't bother with disabling both pipes when we could make things
        work, e.g. when pipe B switched from 4 to 2 lanes due to a mode
        change, we don't bother updating the w/a bit.
      - It's ugly.
      
      All of these are because we compute ->fdi_lanes way too late, when
      we're already setting up individual pipes. We need to have this
      information in ->modeset_global_resources already, to set things up
      correctly. But that is a much larger reorg of the code.
      
      Note that we actually hit the 2 lanes limit in practice rather
      quickly: Even though the 1920x1200 mode native mode of my screen fits
      into 2 lanes, it needs 3 lanes for the 1920x1080 (since that somehow
      has much more blanking ...). Not obeying this restriction seems to
      results in cute-looking digital noise.
      
      v2: Only ever clear the chicken bit when both pipes are off.
      
      v3: Use the new ->modeset_global_resources callback.
      
      v4: Move the WARNs to the right place. Oh how I hate hacks.
      
      v5: Fix spelling, noticed by Paulo Zanoni.
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      01a415fd
    • D
      drm/i915: add ->display.modeset_global_resources callback · 47fab737
      Daniel Vetter 提交于
      After all relevant pipes are disabled and after we've updated all the
      state with the staged state, but before we call the per-crtc
      ->mode_set functions there's a very natural point to set up any
      shared/global resources like
      - shared plls (obviously only the setup, the enabling needs to be
        separately handling with a separate refcount)
      - global watermark state like the DSPARB on gmch platforms
      - workaround bits that depend upon the exact global output
        configuration
      - enabling the right set of refclocks
      - enabling/disabling manual power wells.
      
      Now for a lot of these things we can't move them into this function
      yet, most often because we only compute the required information in
      the per-crtc ->mode_set callback. Which is too late. But due to a
      bunch of reasons (check-only atomic modeset, fastboot&hw state checks,
      ...) we need to separate the computation of that state from the actual
      hw frobbery anyway. So we can move things into this new callback step-
      by-step.
      
      Others can't be moved here (or implemented at all) because our code
      lacks the smarts to properly update them. E.g. the DSPARB can only be
      updated when all pipes are disabled, so if we decide to change it's
      value, we need to disable _all_ pipes. The infrastructure for that is
      already in place (with the various pipe masks that driver the modeset
      logic). But again we need to move a few things out of ->mode_set
      first before we can even implement the correct decision making.
      
      In any case, we need to start somewhere, so let's start with the
      callback: Some small follow-up patches will make immediate good use of
      it.
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      47fab737
    • D
      drm/i915: BUG on impossible pch dp port · e95d41e1
      Daniel Vetter 提交于
      Since it is one. We need to move this code to encoder specific callbacks
      eventually, to kill all that inversion of control ...
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e95d41e1
    • D
      drm/i915: add comment about pch pll enabling rules · 572deb37
      Daniel Vetter 提交于
      Atm we have a few funny issues where we enable/disable shared
      pll clocks. To make it clear that we are not required to enable/
      disable the pch plls together with the other pch resources (and
      so should keep it running when it's used by another pipe in
      a shared pll configuration) add a comment.
      
      This note is lifted from "Graphics BSpec: vol4g North Display Engine
      Registers [IVB], Display Mode Set Sequence", step 9.d. of the enable
      sequence:
      
      "Configure and enable PCH DPLL, wait for PCH DPLL warmup (Can be
      done anytime before enabling PCH transcoder)."
      
      Since fixing the pll sharing code to no longer disable shared plls
      if they're still in use is more involved, let's just stick with the
      comment for now.
      
      v2: Make the comment in the code clearer, to address questions raised
      by Paulo Zanoni in review.
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      572deb37
    • D
      drm/i915: set FDI_RX_MISC to recommended values on CPT/PPT · d74cf324
      Daniel Vetter 提交于
      My machine here has the correct ones already, but better safe
      than sorry. IBX has different settings for that register, and
      on IBX the device defaults match the recommended values. Hence
      I did not add the respective writes for IBX.
      
      LPT needs the same settings, but that has been done already
      
      commit 4acf5186
      Author: Eugeni Dodonov <eugeni.dodonov@intel.com>
      Date:   Wed Jul 4 20:15:16 2012 -0300
      
          drm/i915: program FDI_RX TP and FDI delays
      
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d74cf324
    • D
      drm/i915: clarify why we need to enable fdi plls so early · fff367c7
      Daniel Vetter 提交于
      For reference, see "Graphics BSpec: vol4g North Display Engine
      Registers [IVB], Display Mode Set Sequence", step 4 of the enabling
      sequence:
      
      a. "Enable PCH FDI Receiver PLL, wait for warmup plus DMI latency
      b. "Switch from Rawclk to PCDclk in FDI Receiver
      c. "Enable CPU FDI Transmitter PLL, wait for warmup"
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fff367c7
    • D
      drm/i915: Write the FDI RX TU size reg at the right time · cd986abb
      Daniel Vetter 提交于
      According to "Graphics BSpec: vol4g North Display Engine Registers [IVB],
      Display Mode Set Sequence" We need to write the TU size register
      of the fdi RX unit _before_ starting to train the link.
      
      Note: The current code is actually correct as Paulo mentioned in
      review, but it's a bit confusion since only the fdi rx/tx plls need to
      be enabled before the cpu pipes/planes. Hence it's still a good idea
      to move the TU_SIZE setting to the "right" spot in the sequence, to
      better match Bspec.
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      cd986abb
  2. 02 11月, 2012 1 次提交
    • J
      drm/i915: pass adjusted_mode to intel_choose_pipe_bpp_dither(), again · c8241969
      Jani Nikula 提交于
      Daniel's backmerge
      
      commit c2fb7916
      Merge: 29de6ce5 6f0c0580
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Mon Oct 22 14:34:51 2012 +0200
      
          Merge tag 'v3.7-rc2' into drm-intel-next-queued
      
      to solve conflicts blew up (either git or Daniel was trying to be too
      clever for their own good; it's usually convenient to blame tools ;) and
      caused the changes of
      
      commit 0c96c65b
      Author: Jani Nikula <jani.nikula@intel.com>
      Date:   Wed Sep 26 18:43:10 2012 +0300
      
          drm/i915: use adjusted_mode instead of mode for checking the 6bpc force flag
      
      in ironlake_crtc_mode_set() to be dropped.
      
      Fix the call in ironlake_crtc_mode_set() again, and while at it, also fix
      the new, copy-pasted haswell_crtc_mode_set() to use adjusted_mode.
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c8241969
  3. 26 10月, 2012 12 次提交
  4. 24 10月, 2012 1 次提交
  5. 19 10月, 2012 1 次提交
  6. 18 10月, 2012 2 次提交
  7. 12 10月, 2012 2 次提交
    • D
      drm/i915: fixup the plane->pipe fixup code · fa555837
      Daniel Vetter 提交于
      We need to check whether the _other plane is on our pipe, not whether
      our plane is on the other pipe. Otherwise if not both pipes/planes are
      active, we won't properly clean up the mess and set up our desired
      plane->pipe mapping.
      
      v2: Fixup the logic, I've totally fumbled it. Noticed by Chris Wilson.
      
      v3: I've checked Bspec, and the flexible plane->pipe mapping is a
      gen2/3 feature, so test for that instead of PCH_SPLIT
      
      v4: Check whether we indeed have 2 pipes before checking the other
      pipe, to avoid upsetting i845g/i865g. Noticed by Chris Wilson.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51265
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49838Tested-by: NDave Airlie <airlied@gmail.com>
      Tested-by: Chris Wilson <chris@chris-wilson.co.uk> #855gm
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fa555837
    • D
      drm/i915: rip out the pipe A quirk for i855gm · ccd0d36e
      Daniel Vetter 提交于
      This seems to be the root-cause that breaks resume on my i855gm when I
      apply the "drm/i915: fixup the plane->pipe fixup code" patch. And that
      code doesn't even run on my machine, so it's pure timing changes
      causing the regression.
      
      Furthermore resume has been constantly switching between working and
      broken on this machine ever since kms support has been merged,
      seemingly with no related change as a root cause. And always with the
      same symptoms of the backlight lighting up, but the lvds panel only
      displaying black.
      
      Also, of both i855gm variants only one is in the table. And in the
      past we've only ever removed entries from this quirk table because it
      breaks things.
      
      So let's just remove it - in case there's indeed a bios out there
      relying on a running pipe A, we can add back in a more precise quirk
      entry, like all the others (save for i830/i845).
      
      Tested-by: Chris Wilson <chris@chris-wilson.co.uk> #855gm
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ccd0d36e
  8. 11 10月, 2012 1 次提交
  9. 10 10月, 2012 7 次提交
  10. 09 10月, 2012 1 次提交
  11. 04 10月, 2012 1 次提交