1. 17 Jan, 2015 3 commits
  2. 15 Jan, 2015 6 commits
  3. 13 Jan, 2015 1 commit
  4. 12 Jan, 2015 20 commits
    • Ville Syrjälä's avatar
      drm/i915: Don't pretend SDVO hotplug works on 915 · 1d83d957
      Ville Syrjälä authored
      915 doens't support hotplug at all, so we shouldn't try to pretend
      otherwise in the SDVO code.
      
      Note: i915 does have hotplug support in hw, we simply never enabled it
      in i915.ko: There's only one hpd bit for all outputs, so not worth the
      bother to add this special case for this rather old platform.
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      [danvet: Clarify that only i915.ko doesn't support hpd on i915g.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      1d83d957
    • Ville Syrjälä's avatar
      drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV · d2182a66
      Ville Syrjälä authored
      If we determine that a specific port is eDP, don't register the HDMI
      connector/encoder for it. The reason being that we want to disable
      HPD interrupts for eDP ports when the display is off, but the presence
      of the extra HDMI connector would demand the HPD interrupt to remain
      enabled all the time.
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      d2182a66
    • Ville Syrjälä's avatar
      drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() · 778eb334
      Ville Syrjälä authored
      The dev_priv->display.hpd_irq_setup hook is optional, so we can move the
      I915_HAS_HOTPLUG() check out of i915_hpd_irq_setup() and only set up the
      hook when hotplug support is present.
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      778eb334
    • Ville Syrjälä's avatar
      drm/i915: Make hpd arrays big enough to avoid out of bounds access · 7c7e10db
      Ville Syrjälä authored
      intel_hpd_irq_handler() walks the passed in hpd[] array assuming it
      contains HPD_NUM_PINS elements. Currently that's not true as we don't
      specify an explicit size for the arrays when initializing them. Avoid
      the out of bounds accesses by specifying the size for the arrays.
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      7c7e10db
    • Rodrigo Vivi's avatar
      Revert "drm/i915/chv: Use timeout mode for RC6 on chv" · e85a5c79
      Rodrigo Vivi authored
      This reverts commit 5a0afd4b.
      
      Although timeout mode allows higher residency it impact badly on performance.
      I believe while we don't have a way to balance between performance and
      power savings at runtime I believe we have to revert and prioritize
      performance that was impacted a lot.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88103
      Cc: Deepak S <deepak.s@linux.intel.com>
      Cc: Wendy Wang <wendy.wang@intel.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      e85a5c79
    • Kenneth Graunke's avatar
      drm/i915: Improve HiZ throughput on Cherryview. · d60de81d
      Kenneth Graunke authored
      Found by reading the HIZ_CHICKEN documentation.
      
      Improves performance in a HiZ microbenchmark by around 50%.
      Improves performance in OglZBuffer by around 18%.
      
      Thanks to Chris Wilson for helping me figure out where to put this.
      Signed-off-by: default avatarKenneth Graunke <kenneth@whitecape.org>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      d60de81d
    • Thomas Daniel's avatar
      drm/i915: Reset CSB read pointer in ring init · c0a03a2e
      Thomas Daniel authored
      A previous commit enabled execlists by default:
      
             commit 27401d12 ("drm/i915/bdw: Enable execlists by default where supported")
      
      This allowed routine testing of execlists which exposed a regression when
      resuming from suspend.  The cause was tracked down the to recent changes to the
      ring init sequence:
      
             commit 35a57ffb ("drm/i915: Only init engines once")
      
      During a suspend/resume cycle the hardware Context Status Buffer write pointer
      is reset.  However since the recent changes to the init sequence the software CSB
      read pointer is no longer reset.  This means that context status events are not
      handled correctly and new contexts are not written to the ELSP, resulting in an
      apparent GPU hang.
      
      Pending further changes to the ring init code, just move the
      ring->next_context_status_buffer initialization into gen8_init_common_ring to
      fix this regression.
      
      v2: Moved init into gen8_init_common_ring rather than context_enable after
      feedback from Daniel Vetter.  Updated commit msg to reflect this and also cite
      commits related to the regression.  Fixed bz link to correct bug.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88096
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Dave Gordon <david.s.gordon@intel.com>
      Signed-off-by: default avatarThomas Daniel <thomas.daniel@intel.com>
      Reviewed-by: default avatarDave Gordon <david.s.gordon@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      c0a03a2e
    • Matt Roper's avatar
      drm/i915: Drop unused position fields (v2) · 53a366b9
      Matt Roper authored
      The userspace-requested plane coordinates are now always available via
      plane->state.base (and the i915-adjusted values are stored in
      plane->state), so we no longer use the coordinate fields in intel_plane
      and can drop them.
      
      Also, note that the error case for pageflip calls update_plane() to
      program the values from plane->state; it's simpler to just call
      intel_plane_restore() which does the same thing.
      
      v2: Replace manual update_plane() with intel_plane_restore() in pageflip
          error handler.
      
      Reviewed-by(v1): Bob Paauwe <bob.j.paauwe@intel.com>
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      53a366b9
    • Matt Roper's avatar
      drm/i915: Move to atomic plane helpers (v9) · ea2c67bb
      Matt Roper authored
      Switch plane handling to use the atomic plane helpers.  This means that
      rather than provide our own implementations of .update_plane() and
      .disable_plane(), we expose the lower-level check/prepare/commit/cleanup
      entrypoints and let the DRM core implement update/disable for us using
      those entrypoints.
      
      The other main change that falls out of this patch is that our
      drm_plane's will now always have a valid plane->state that contains the
      relevant plane state (initial state is allocated at plane creation).
      The base drm_plane_state pointed to holds the requested source/dest
      coordinates, and the subclassed intel_plane_state holds the adjusted
      values that our driver actually uses.
      
      v2:
       - Renamed file from intel_atomic.c to intel_atomic_plane.c (Daniel)
       - Fix a copy/paste comment mistake (Bob)
      
      v3:
       - Use prepare/cleanup functions that we've already factored out
       - Use newly refactored pre_commit/commit/post_commit to avoid sleeping
         during vblank evasion
      
      v4:
       - Rebase to latest di-nightly requires adding an 'old_state' parameter
         to atomic_update;
      
      v5:
       - Must have botched a rebase somewhere and lost some work.  Restore
         state 'dirty' flag to let begin/end code know which planes to
         run the pre_commit/post_commit hooks for.  This would have actually
         shown up as broken in the next commit rather than this one.
      
      v6:
       - Squash kerneldoc patch into this one.
       - Previous patches have now already taken care of most of the
         infrastructure that used to be in this patch.  All we're adding here
         now is some thin wrappers.
      
      v7:
       - Check return of intel_plane_duplicate_state() for allocation
         failures.
      
      v8:
       - Drop unused drm_plane_state -> intel_plane_state cast.  (Ander)
       - Squash in actual transition to plane helpers.  Significant
         refactoring earlier in the patchset has made the combined
         prep+transition much easier to swallow than it was in earlier
         iterations. (Ander)
      
      v9:
       - s/track_fbs/disabled_planes/ in the atomic crtc flags.  The only fb's
         we need to update frontbuffer tracking for are those on a plane about
         to be disabled (since the atomic helpers never call prepare_fb() when
         disabling a plane), so the new name more accurately describes what
         we're actually tracking.
      
      Testcase: igt/kms_plane
      Testcase: igt/kms_universal_plane
      Testcase: igt/kms_cursor_crc
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      ea2c67bb
    • Matt Roper's avatar
      drm/i915: Clarify sprite plane function names (v4) · 4a3b8769
      Matt Roper authored
      A few of the sprite-related function names in i915 are very similar
      (e.g., intel_enable_planes() vs intel_crtc_enable_planes()) and don't
      make it clear whether they only operate on sprite planes, or whether
      they also apply to all universal plane types.  Rename a few functions to
      be more consistent with our function naming for primary/cursor planes or
      to clarify that they apply specifically to sprite planes:
      
       - s/intel_disable_planes/intel_disable_sprite_planes/
       - s/intel_enable_planes/intel_enable_sprite_planes/
      
      Also, drop the sprite-specific intel_destroy_plane() and just use
      the type-agnostic intel_plane_destroy() function.  The extra 'disable'
      call that intel_destroy_plane() did is unnecessary since the plane will
      already be disabled due to framebuffer destruction by the point it gets
      called.
      
      v2: Earlier consolidation patches have reduced the number of functions
          we need to rename here.
      
      v3: Also rename intel_plane_funcs vtable to intel_sprite_plane_funcs
          for consistency with primary/cursor.  (Ander)
      
      v4: Convert comment for intel_plane_destroy() to kerneldoc now that it
          is no longer a static function.  (Ander)
      
      Reviewed-by(v1): Bob Paauwe <bob.j.paauwe@intel.com>
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      4a3b8769
    • Matt Roper's avatar
      drm/i915: Move vblank evasion to commit (v4) · c34c9ee4
      Matt Roper authored
      Move the vblank evasion up from the low-level, hw-specific
      update_plane() handlers to the general plane commit operation.
      Everything inside commit should now be non-sleeping, so this brings us
      closer to how vblank evasion will behave once we move over to atomic.
      
      v2:
       - Restore lost intel_crtc->active check on vblank evasion
      
      v3:
       - Replace assert_pipe_enabled() in intel_disable_primary_hw_plane()
         with an intel_crtc->active test; it turns out assert_pipe_enabled()
         grabs some mutexes and can sleep, which we can't do with interrupts
         disabled.
      
      v4:
       - Equivalent to v2; v3 change is now squashed into an earlier patch
         of the series.  (Ander).
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      c34c9ee4
    • Matt Roper's avatar
      drm/i915: Refactor work that can sleep out of commit (v7) · 32b7eeec
      Matt Roper authored
      Once we integrate our work into the atomic pipeline, plane commit
      operations will need to happen with interrupts disabled, due to vblank
      evasion.  Our commit functions today include sleepable work, so those
      operations need to be split out and run either before or after the
      atomic register programming.
      
      The solution here calculates which of those operations will need to be
      performed during the 'check' phase and sets flags in an intel_crtc
      sub-struct.  New intel_begin_crtc_commit() and
      intel_finish_crtc_commit() functions are added before and after the
      actual register programming; these will eventually be called from the
      atomic plane helper's .atomic_begin() and .atomic_end() entrypoints.
      
      v2: Fix broken sprite code split
      
      v3: Make the pre/post commit work crtc-based to match how we eventually
          want this to be called from the atomic plane helpers.
      
      v4: Some platforms that haven't had their watermark code reworked were
          waiting for vblank, then calling update_sprite_watermarks in their
          platform-specific disable code.  These also need to be flagged out
          of the critical section.
      
      v5: Sprite plane test for primary show/hide should just set the flag to
          wait for pending flips, not actually perform the wait.  (Ander)
      
      v6:
       - Rebase onto latest di-nightly; picks up an important runtime PM fix.
       - Handle 'wait_for_flips' flag in intel_begin_crtc_commit(). (Ander)
       - Use wait_for_flips flag for primary plane update rather than
         performing the wait in the check routine.
       - Added kerneldoc to pre_disable/post_enable functions that are no
         longer static.  (Ander)
       - Replace assert_pipe_enabled() in intel_disable_primary_hw_plane()
         with an intel_crtc->active test; it turns out assert_pipe_enabled()
         grabs some mutexes and can sleep, which we can't do with interrupts
         disabled.
      
      v7:
       - Check for fb != NULL when deciding whether the sprite plane hides the
         primary plane during a sprite update.  (PRTS)
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      32b7eeec
    • Jani Nikula's avatar
      drm/i915: fix build for CONFIG_BUG=n · 2f3408c7
      Jani Nikula authored
      If CONFIG_BUG=n __WARN_printf won't be defined leading to the below
      build failure. The double underscores should have told us to steer clear
      of it anyway.
      
      drivers/gpu/drm/i915/intel_display.c: In function ‘assert_pll’:
      drivers/gpu/drm/i915/intel_display.c:1027:2: error: implicit declaration
      of function ‘__WARN_printf’ [-Werror=implicit-function-declaration]
        I915_STATE_WARN(cur_state != state,
      
      Use WARN(1, ...) instead. It handles CONFIG_BUG=n gracefully and, with
      the constant condition, a sane compiler should reduce it to
      __WARN_printf.
      
      This is a regression introduced by
      
      commit e2c719b7
      Author: Rob Clark <robdclark@gmail.com>
      Date:   Mon Dec 15 13:56:32 2014 -0500
      
          drm/i915: tame the chattermouth (v2)
      Reported-by: default avatarJim Davis <jim.epost@gmail.com>
      Reference: http://mid.gmane.org/CA+r1ZhgHTi7bS2irhtuSUs9aO=Br1dumN8=oAOeaMJDZ_ZhwBw@mail.gmail.com
      Cc: Rob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      2f3408c7
    • Daniel Vetter's avatar
      Merge tag 'topic/i915-hda-componentized-2015-01-12' into drm-intel-next-queued · 0a87a2db
      Daniel Vetter authored
      Conflicts:
      	drivers/gpu/drm/i915/intel_runtime_pm.c
      
      Separate branch so that Takashi can also pull just this refactoring
      into sound-next.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      0a87a2db
    • Imre Deak's avatar
      drm/i915: remove unused power_well/get_cdclk_freq api · fcf3aac5
      Imre Deak authored
      After switching to using the component interface this API isn't needed
      any more.
      
      v2-3: unchanged
      v4:
      - move the removal of i915_powerwell.h to this patch (Takashi)
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      fcf3aac5
    • Imre Deak's avatar
      ALSA: hda: add component support · d7055bd6
      Imre Deak authored
      Register a component master to be used to interface with the i915
      driver. This is meant to replace the current interface which is based on
      module symbol lookups.
      
      Note that currently we keep the existing behavior and pin the i915
      module while the hda driver is loaded. Using the component interface
      allows us to remove this dependency once support for dynamically
      enabling / disabling the HDMI functionality is added to the driver.
      
      v2:
      - change roles between the hda and i915 components (Daniel)
      v3:
      - rename display_component to audio_component (Daniel)
      v4:
      - move removal of i915_powerwell.h from this patch to the next (Takashi)
      - request_module fails if module support isn't enabled, so ignore
        any error it returns and depend on the following NULL check of the
        component ops (Takashi)
      - change over to using dev_* instead of pr_* (Takashi)
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      d7055bd6
    • Imre Deak's avatar
      ALSA: hda: pass intel_hda to all i915 interface functions · 926981ae
      Imre Deak authored
      chip is already passed to most of the i915 interface functions. Unify
      the interface by passing intel_hda instead of chip and passing it to all
      functions. Passing intel_hda instead of chip makes more sense since this
      is an intel specific interface. Also in an upcoming patch we will use
      intel_hda in all of these functions so by passing intel_hda we can save
      on some pointer casts from chip to intel_hda.
      
      This will be needed by an upcoming patch adding component support.
      
      No functional change.
      
      v2-3: unchanged
      v4:
      - pass intel_hda instead of chip
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      926981ae
    • Imre Deak's avatar
      ALSA: hda: export struct hda_intel · 347de1f8
      Imre Deak authored
      This struct will be needed by the component code added in an upcoming
      patch, so export it into a new hda_intel.h file. At the same time also
      merge hda_i915.h into this new header, there is no reason to keep two
      separate intel specific header file.
      Suggested-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      347de1f8
    • Imre Deak's avatar
      drm/i915: add component support · 58fddc28
      Imre Deak authored
      Register a component to be used to interface with the snd_hda_intel
      driver. This is meant to replace the same interface that is currently
      based on module symbol lookup.
      
      v2:
      - change roles between the hda and i915 components (Daniel)
      - add the implementation to a new file (Jani)
      - use better namespacing (Jani)
      v3:
      - move the implementation to intel_audio.c (Daniel)
      - rename display_component to audio_component (Daniel)
      - add kerneldoc (Daniel)
      v4:
      - run forgotten git rm i915_component.c (Jani)
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      58fddc28
    • Imre Deak's avatar
      drm/i915: add dev_to_i915 helper · 888d0d42
      Imre Deak authored
      This will be needed by later patches, so factor it out.
      
      No functional change.
      
      v2:
      - s/dev_to_i915_priv/dev_to_i915/ (Jani)
      - don't use the helper in i915_pm_suspend (Chris)
      - simplify the helper (Chris)
      v3:
      - remove redundant upcasting in the helper (Daniel)
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      888d0d42
  5. 11 Jan, 2015 9 commits
  6. 10 Jan, 2015 1 commit