1. 10 10月, 2020 2 次提交
  2. 29 8月, 2020 1 次提交
    • J
      drm/i915/tgl: Fix stepping WA matching · c33298cb
      José Roberto de Souza 提交于
      TGL made stepping a litte mess, workarounds refer to the stepping of
      the IP(GT or Display) not of the GPU stepping so it would already
      require the same solution as used in commit 96c5a15f
      ("drm/i915/kbl: Fix revision ID checks").
      But to make things even more messy it have a different IP stepping
      mapping between SKUs and the same stepping revision of GT do not match
      the same HW between TGL U/Y and regular TGL.
      
      So it was required to have 2 different macros to check GT WAs while
      for Display we are able to use just one macro that uses the right
      revids table.
      
      All TGL workarounds checked and updated accordingly.
      
      v2:
      - removed TODO to check if WA 14010919138 applies to regular TGL.
      - fixed display stepping in regular TGL (Anusha)
      
      BSpec: 52890
      BSpec: 55378
      BSpec: 44455
      Reviewed-by: NAnusha Srivatsa <anusha.srivtsa@intel.com>
      Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
      Cc: Penne Lee <penne.y.lee@intel.com>
      Cc: Guangyao Bai <guangyao.bai@intel.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200827233943.400946-1-jose.souza@intel.com
      c33298cb
  3. 18 8月, 2020 2 次提交
  4. 03 7月, 2020 1 次提交
  5. 01 7月, 2020 1 次提交
  6. 23 6月, 2020 1 次提交
    • J
      drm/i915/params: switch to device specific parameters · 8a25c4be
      Jani Nikula 提交于
      Start using device specific parameters instead of module parameters for
      most things. The module parameters become the immutable initial values
      for i915 parameters. The device specific parameters in i915->params
      start life as a copy of i915_modparams. Any later changes are only
      reflected in the debugfs.
      
      The stragglers are:
      
      * i915.force_probe and i915.modeset. Needed before dev_priv is
        available. This is fine because the parameters are read-only and never
        modified.
      
      * i915.verbose_state_checks. Passing dev_priv to I915_STATE_WARN and
        I915_STATE_WARN_ON would result in massive and ugly churn. This is
        handled by not exposing the parameter via debugfs, and leaving the
        parameter writable in sysfs. This may be fixed up in follow-up work.
      
      * i915.inject_probe_failure. Only makes sense in terms of the module,
        not the device. This is handled by not exposing the parameter via
        debugfs.
      
      v2: Fix uc i915 lookup code (Michał Winiarski)
      
      Cc: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>
      Cc: Venkata Sandeep Dhanalakota <venkata.s.dhanalakota@intel.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Acked-by: NMichał Winiarski <michal.winiarski@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20200618150402.14022-1-jani.nikula@intel.com
      8a25c4be
  7. 08 6月, 2020 1 次提交
  8. 05 6月, 2020 2 次提交
  9. 14 5月, 2020 1 次提交
  10. 26 3月, 2020 1 次提交
    • J
      drm/i915/psr: use struct drm_device based logging · 85f691d3
      Jani Nikula 提交于
      Convert all the DRM_* logging macros to the struct drm_device based
      macros to provide device specific logging.
      
      No functional changes.
      
      Generated using the following semantic patch, originally written by
      Wambui Karuga <wambui.karugax@gmail.com>, with manual fixups on top:
      
      @@
      identifier fn, T;
      @@
      
      fn(...,struct drm_i915_private *T,...) {
      <+...
      (
      -DRM_INFO(
      +drm_info(&T->drm,
      ...)
      |
      -DRM_NOTE(
      +drm_notice(&T->drm,
      ...)
      |
      -DRM_ERROR(
      +drm_err(&T->drm,
      ...)
      |
      -DRM_WARN(
      +drm_warn(&T->drm,
      ...)
      |
      -DRM_DEBUG_DRIVER(
      +drm_dbg(&T->drm,
      ...)
      |
      -DRM_DEBUG_KMS(
      +drm_dbg_kms(&T->drm,
      ...)
      |
      -DRM_DEBUG_ATOMIC(
      +drm_dbg_atomic(&T->drm,
      ...)
      )
      ...+>
      }
      
      @@
      identifier fn, T;
      @@
      
      fn(...) {
      ...
      struct drm_i915_private *T = ...;
      <+...
      (
      -DRM_INFO(
      +drm_info(&T->drm,
      ...)
      |
      -DRM_NOTE(
      +drm_notice(&T->drm,
      ...)
      |
      -DRM_ERROR(
      +drm_err(&T->drm,
      ...)
      |
      -DRM_WARN(
      +drm_warn(&T->drm,
      ...)
      |
      -DRM_DEBUG_DRIVER(
      +drm_dbg(&T->drm,
      ...)
      |
      -DRM_DEBUG_KMS(
      +drm_dbg_kms(&T->drm,
      ...)
      |
      -DRM_DEBUG_ATOMIC(
      +drm_dbg_atomic(&T->drm,
      ...)
      )
      ...+>
      }
      
      Cc: Wambui Karuga <wambui.karugax@gmail.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/cac03aba0a363c8f704035f1f771c73385235a35.1584714939.git.jani.nikula@intel.com
      85f691d3
  11. 04 3月, 2020 1 次提交
    • L
      drm/dp: Introduce EDID-based quirks · 0883ce81
      Lyude Paul 提交于
      The whole point of using OUIs is so that we can recognize certain
      devices and potentially apply quirks for them. Normally this should work
      quite well, but there appears to be quite a number of laptop panels out
      there that will fill the OUI but not the device ID. As such, for devices
      like this I can't imagine it's a very good idea to try relying on OUIs
      for applying quirks. As well, some laptop vendors have confirmed to us
      that their panels have this exact issue.
      
      So, let's introduce the ability to apply DP quirks based on EDID
      identification. We reuse the same quirk bits for OUI-based quirks, so
      that callers can simply check all possible quirks using
      drm_dp_has_quirk().
      Signed-off-by: NLyude Paul <lyude@redhat.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Reviewed-by: NAdam Jackson <ajax@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200211183358.157448-2-lyude@redhat.com
      0883ce81
  12. 02 3月, 2020 1 次提交
  13. 25 2月, 2020 1 次提交
    • J
      drm/i915/psr: Force PSR probe only after full initialization · df1a5bfc
      José Roberto de Souza 提交于
      Commit 60c6a14b ("drm/i915/display: Force the state compute phase
      once to enable PSR") was forcing the state compute too earlier
      causing errors because not everything was initialized, so here
      moving to the end of i915_driver_modeset_probe() when the display is
      all initialized.
      
      Also fixing the place where it disarm the force probe as during the
      atomic check phase errors could happen like the ones due locking and
      it would cause PSR to never be enabled if that happens.
      Leaving the disarm to the atomic commit phase, intel_psr_enable() or
      intel_psr_update() will be called even if the current state do not
      allow PSR to be enabled.
      
      v2: Check if intel_dp is null in intel_psr_force_mode_changed_set()
      v3: Check intel_dp before get dev_priv
      v4:
      - renamed intel_psr_force_mode_changed_set() to
      intel_psr_set_force_mode_changed()
      - removed the set parameter from intel_psr_set_force_mode_changed()
      - not calling intel_psr_set_force_mode_changed() from
      intel_psr_enable/update(), directly setting it after the same checks
      that intel_psr_set_force_mode_changed() does
      - moved intel_psr_set_force_mode_changed() arm call to
      i915_driver_modeset_probe() as it is a better for a PSR call, all the
      functions calls happening between the old and the new function call
      will cause issue
      
      Fixes: 60c6a14b ("drm/i915/display: Force the state compute phase once to enable PSR")
      Closes: https://gitlab.freedesktop.org/drm/intel/issues/1151Tested-by: NRoss Zwisler <zwisler@google.com>
      Reported-by: NRoss Zwisler <zwisler@google.com>
      Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Anshuman Gupta <anshuman.gupta@intel.com>
      Reviewed-by: NGwan-gyeong Mun <gwan-gyeong.mun@intel.com>
      Signed-off-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200221212635.11614-1-jose.souza@intel.com
      df1a5bfc
  14. 11 2月, 2020 1 次提交
  15. 10 2月, 2020 1 次提交
  16. 04 2月, 2020 2 次提交
  17. 29 1月, 2020 1 次提交
  18. 28 1月, 2020 1 次提交
  19. 25 1月, 2020 2 次提交
  20. 22 1月, 2020 1 次提交
  21. 17 1月, 2020 1 次提交
  22. 14 1月, 2020 1 次提交
  23. 09 1月, 2020 1 次提交
  24. 03 12月, 2019 4 次提交
  25. 01 11月, 2019 3 次提交
  26. 28 10月, 2019 1 次提交
  27. 25 10月, 2019 1 次提交
  28. 23 10月, 2019 1 次提交
  29. 08 10月, 2019 1 次提交
    • A
      drm/i915/tgl: Switch between dc3co and dc5 based on display idleness · 1c4d821d
      Anshuman Gupta 提交于
      DC3CO is useful power state, when DMC detects PSR2 idle frame
      while an active video playback, playing 30fps video on 60hz panel
      is the classic example of this use case.
      
      B.Specs:49196 has a restriction to enable DC3CO only for Video Playback.
      It will be worthy to enable DC3CO after completion of each pageflip
      and switch back to DC5 when display is idle because driver doesn't
      differentiate between video playback and a normal pageflip.
      We will use Frontbuffer flush call tgl_dc3co_flush() to enable DC3CO
      state only for ORIGIN_FLIP flush call, because DC3CO state has primarily
      targeted for VPB use case. We are not interested here for frontbuffer
      invalidates calls because that triggers PSR2 exit, which will
      explicitly disable DC3CO.
      
      DC5 and DC6 saves more power, but can't be entered during video
      playback because there are not enough idle frames in a row to meet
      most PSR2 panel deep sleep entry requirement typically 4 frames.
      As PSR2 existing implementation is using minimum 6 idle frames for
      deep sleep, it is safer to enable DC5/6 after 6 idle frames
      (By scheduling a delayed work of 6 idle frames, once DC3CO has been
      enabled after a pageflip).
      
      After manually waiting for 6 idle frames DC5/6 will be enabled and
      PSR2 deep sleep idle frames will be restored to 6 idle frames, at this
      point DMC will triggers DC5/6 once PSR2 enters to deep sleep after
      6 idle frames.
      In future when we will enable S/W PSR2 tracking, we can change the
      PSR2 required deep sleep idle frames to 1 so DMC can trigger the
      DC5/6 immediately after S/W manual waiting of 6 idle frames get
      complete.
      
      v2: calculated s/w state to switch over dc3co when there is an
          update. [Imre]
          Used cancel_delayed_work_sync() in order to avoid any race
          with already scheduled delayed work. [Imre]
      v3: Cancel_delayed_work_sync() may blocked the commit work.
          hence dropping it, dc5_idle_thread() checks the valid wakeref before
          putting the reference count, which avoids any chances of dropping
          a zero wakeref. [Imre (IRC)]
      v4: Used frontbuffer flush mechanism. [Imre]
      v5: Used psr.pipe to extract frontbuffer busy bits. [Imre]
          Used cancel_delayed_work_sync() in encoder disable path. [Imre]
          Used mod_delayed_work() instead of cancelling and scheduling a
          delayed work. [Imre]
          Used psr.lock in tgl_dc5_idle_thread() to enable psr2 deep
          sleep. [Imre]
          Removed DC5_REQ_IDLE_FRAMES macro. [Imre]
      v6: Used dc3co_exitline check instead of TGL and dc3co allowed_dc_mask
          checks, used delayed_work_pending with the psr lock and removed the
          psr2_deep_slp_disabled flag. [Imre]
      v7: Code refactoring, moved most of functional code to inte_psr.c [Imre]
          Using frontbuffer_bits on psr.pipe check instead of
          busy_frontbuffer_bits. [Imre]
          Calculating dc3co_exit_delay in intel_psr_enable_locked. [Imre]
      
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Imre Deak <imre.deak@intel.com>
      Cc: Animesh Manna <animesh.manna@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NAnshuman Gupta <anshuman.gupta@intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191003081738.22101-6-anshuman.gupta@intel.com
      1c4d821d
  30. 05 9月, 2019 1 次提交