1. 30 3月, 2021 3 次提交
  2. 24 3月, 2021 3 次提交
    • M
      drm/i915/display: Simplify GLK display version tests · 2b5a4562
      Matt Roper 提交于
      GLK has always been a bit of a special case since it reports INTEL_GEN()
      as 9, but has version 10 display IP.  Now we can properly represent the
      display version as 10 and simplify the display generation tests
      throughout the display code.
      
      Aside from manually adding the version to the glk_info structure, the
      rest of this patch is generated with a Coccinelle semantic patch.  Note
      that we also need to switch any code that matches gen10 today but *not*
      GLK to be CNL-specific:
      
              @@ expression dev_priv; @@
              - DISPLAY_VER(dev_priv) > 9
              + DISPLAY_VER(dev_priv) >= 10
      
              @@ expression dev_priv, E; @@
              (
              - DISPLAY_VER(dev_priv) >= 10 && E
              + (DISPLAY_VER(dev_priv) >= 11 || IS_CANNONLAKE(dev_priv)) && E
              |
              - DISPLAY_VER(dev_priv) >= 10
              + DISPLAY_VER(dev_priv) >= 11 || IS_CANNONLAKE(dev_priv)
              |
              - IS_DISPLAY_RANGE(dev_priv, 10, E)
              + IS_DISPLAY_RANGE(dev_priv, 11, E) || IS_CANNONLAKE(dev_priv)
              )
      
              @@ expression dev_priv, E, E2; @@
              (
              - (IS_CANNONLAKE(dev_priv) || IS_GEMINILAKE(dev_priv))
              + IS_DISPLAY_VER(dev_priv, 10)
              |
              - E || IS_CANNONLAKE(dev_priv) || IS_GEMINILAKE(dev_priv)
              + E || IS_DISPLAY_VER(dev_priv, 10)
              |
              - (IS_GEMINILAKE(dev_priv) || IS_CANNONLAKE(dev_priv))
              + IS_DISPLAY_VER(dev_priv, 10)
              |
              - IS_GEMINILAKE(dev_priv) || E || IS_CANNONLAKE(dev_priv)
              + E || IS_DISPLAY_VER(dev_priv, 10)
              |
              - E || IS_GEMINILAKE(dev_priv) || E2 || IS_CANNONLAKE(dev_priv)
              + E || E2 || IS_DISPLAY_VER(dev_priv, 10)
              |
              - (IS_DISPLAY_VER(dev_priv, 10) || IS_GEMINILAKE(dev_priv))
              + IS_DISPLAY_VER(dev_priv, 10)
              |
              - (IS_GEMINILAKE(dev_priv) || IS_DISPLAY_VER(dev_priv, 10))
              + IS_DISPLAY_VER(dev_priv, 10)
              )
      
              @@ expression dev_priv; @@
              - (IS_DISPLAY_VER(dev_priv, 9) && !IS_GEMINILAKE(dev_priv))
              + IS_DISPLAY_VER(dev_priv, 9)
      
              @@ expression dev_priv; @@
              (
              - !(DISPLAY_VER(dev_priv) >= 11 || IS_DISPLAY_VER(dev_priv, 10))
              + DISPLAY_VER(dev_priv) < 10
              |
              - (DISPLAY_VER(dev_priv) >= 11 || IS_DISPLAY_VER(dev_priv, 10))
              + DISPLAY_VER(dev_priv) >= 10
              )
      
              @@ expression dev_priv, E; @@
              - E || DISPLAY_VER(dev_priv) >= 11 || IS_DISPLAY_VER(dev_priv, 10)
              + E || DISPLAY_VER(dev_priv) >= 10
      
              @@ expression dev_priv, E; @@
              - (IS_DISPLAY_RANGE(dev_priv, 11, E) || IS_DISPLAY_VER(dev_priv, 10))
              + IS_DISPLAY_RANGE(dev_priv, 10, E)
      
              @@ expression dev_priv; @@
              (
              - DISPLAY_VER(dev_priv) >= 11 || IS_CANNONLAKE(dev_priv) || IS_GEN9_LP(dev_priv)
              + DISPLAY_VER(dev_priv) >= 10 || IS_GEN9_LP(dev_priv)
              |
              - IS_GEN9_LP(dev_priv) || DISPLAY_VER(dev_priv) >= 11 || IS_CANNONLAKE(dev_priv)
              + IS_GEN9_LP(dev_priv) || DISPLAY_VER(dev_priv) >= 10
              )
      
              @@ expression dev_priv, E; @@
              - !(DISPLAY_VER(dev_priv) >= E)
              + DISPLAY_VER(dev_priv) < E
      
      v2:
       - Convert gen10 conditions that don't include GLK into CNL conditions.
         (Ville)
      
      v3:
       - Rework coccinelle rules so that "ver>=10" turns into "ver>=11||is_cnl." (Ville)
      
      v3.1:
       - Manually re-add the ".display.version = 10" to glk_info after
         regenerating patch via Coccinelle.
      
      v4:
       - Also apply cocci rules to intel_pm.c and i915_irq.c!  (CI)
      
      Cc: Ville Syrjälä <ville.syrjala@intel.com>
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210322233840.4056851-1-matthew.d.roper@intel.com
      2b5a4562
    • M
      drm/i915/display: Eliminate most usage of INTEL_GEN() · 005e9537
      Matt Roper 提交于
      Use Coccinelle to convert most of the usage of INTEL_GEN() and IS_GEN()
      in the display code to use DISPLAY_VER() comparisons instead.  The
      following semantic patch was used:
      
              @@ expression dev_priv, E; @@
              - INTEL_GEN(dev_priv) == E
              + IS_DISPLAY_VER(dev_priv, E)
      
              @@ expression dev_priv; @@
              - INTEL_GEN(dev_priv)
              + DISPLAY_VER(dev_priv)
      
              @@ expression dev_priv; expression E; @@
              - IS_GEN(dev_priv, E)
              + IS_DISPLAY_VER(dev_priv, E)
      
              @@
              expression dev_priv;
              expression from, until;
              @@
              - IS_GEN_RANGE(dev_priv, from, until)
              + IS_DISPLAY_RANGE(dev_priv, from, until)
      
      There are still some display-related uses of INTEL_GEN() in intel_pm.c
      (watermark code) and i915_irq.c.  Those will be updated separately.
      
      v2:
       - Use new IS_DISPLAY_RANGE and IS_DISPLAY_VER helpers.  (Jani)
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NLucas De Marchi <lucas.demarchi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210320044245.3920043-4-matthew.d.roper@intel.com
      005e9537
    • M
      drm/i915/display: Convert gen5/gen6 tests to IS_IRONLAKE/IS_SANDYBRIDGE · d47d29a6
      Matt Roper 提交于
      ILK is the only platform that we consider "gen5" and SNB is the only
      platform we consider "gen6."  Add an IS_SANDYBRIDGE() macro and then
      replace numeric platform tests for these two generations with direct
      platform tests with the following Coccinelle semantic patch:
      
              @@ expression dev_priv; @@
              - IS_GEN(dev_priv, 5)
              + IS_IRONLAKE(dev_priv)
      
              @@ expression dev_priv; @@
              - IS_GEN(dev_priv, 6)
              + IS_SANDYBRIDGE(dev_priv)
      
              @@ expression dev_priv; @@
              - IS_GEN_RANGE(dev_priv, 5, 6)
              + IS_IRONLAKE(dev_priv) || IS_SANDYBRIDGE(dev_priv)
      
      This will simplify our upcoming patches which eliminate INTEL_GEN()
      usage in the display code.
      
      v2:
       - Reverse ilk/snb order for IS_GEN_RANGE conversion.  (Ville)
       - Rebase + regenerate from semantic patch
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210320044245.3920043-2-matthew.d.roper@intel.com
      d47d29a6
  3. 20 3月, 2021 3 次提交
  4. 13 3月, 2021 1 次提交
  5. 09 3月, 2021 4 次提交
  6. 05 3月, 2021 1 次提交
  7. 04 3月, 2021 3 次提交
  8. 03 3月, 2021 5 次提交
  9. 23 2月, 2021 1 次提交
  10. 19 2月, 2021 2 次提交
  11. 17 2月, 2021 1 次提交
    • V
      drm/i915: Disallow plane x+w>stride on ilk+ with X-tiling · 80cf9a88
      Ville Syrjälä 提交于
      ilk+ planes get notably unhappy when the plane x+w exceeds
      the stride. This wasn't a problem previously because we
      always aligned SURF to the closest tile boundary so the
      x offset never got particularly large. But now with async
      flips we have to align to 256KiB instead and thus this
      becomes a real issue.
      
      On ilk/snb/ivb it looks like the accesses just wrap
      early to the next tile row when scanout goes past the
      SURF+n*stride boundary, hsw/bdw suffer more heavily and
      start to underrun constantly. i965/g4x appear to be immune.
      vlv/chv I've not yet checked.
      
      Let's borrow another trick from the skl+ code and search
      backwards for a better SURF offset in the hopes of getting the
      x offset below the limit. IIRC when I ran into a similar issue
      on skl years ago it was causing the hardware to fall over
      pretty hard as well.
      
      And let's be consistent and include i965/g4x in the check
      as well, just in case I just got super lucky somehow when
      I wasn't able to reproduce the issue. Not that it really
      matters since we still use 4k SURF alignment for i965/g4x
      anyway.
      
      Fixes: 6ede6b06 ("drm/i915: Implement async flips for vlv/chv")
      Fixes: 4bb18054 ("drm/i915: Implement async flip for ilk/snb")
      Fixes: 2a636e24 ("drm/i915: Implement async flip for ivb/hsw")
      Fixes: cda195f1 ("drm/i915: Implement async flips for bdw")
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210209021918.16234-1-ville.syrjala@linux.intel.comReviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      (cherry picked from commit 59fb8218)
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      [Rodrigo also exported some functions from intel_display.c during backport]
      80cf9a88
  12. 14 2月, 2021 2 次提交
  13. 13 2月, 2021 1 次提交
  14. 12 2月, 2021 1 次提交
  15. 08 2月, 2021 5 次提交
  16. 05 2月, 2021 1 次提交
    • G
      drm/i915/display: Support PSR Multiple Instances · b64d6c51
      Gwan-gyeong Mun 提交于
      It is a preliminary work for supporting multiple EDP PSR and
      DP PanelReplay. And it refactors singleton PSR to Multi Transcoder
      supportable PSR.
      And this moves and renames the i915_psr structure of drm_i915_private's to
      intel_dp's intel_psr structure.
      It also causes changes in PSR interrupt handling routine for supporting
      multiple transcoders. But it does not change the scenario and timing of
      enabling and disabling PSR. And it not support multiple pipes with
      a single transcoder PSR case yet.
      
      v2: Fix indentation and add comments
      v3: Remove Blank line
      v4: Rebased
      v5: Rebased and Addressed Anshuman's review comment.
          - Move calling of intel_psr_init() to intel_dp_init_connector()
      v6: Address Anshuman's review comments
         - Remove wrong comments and add comments for a limit of supporting of
           a single pipe PSR
      v7: Update intel_psr_compute_config() for supporting multiple transcoder
          PSR on BDW+
      v8: Address Anshuman's review comments
         - Replace DRM_DEBUG_KMS with drm_dbg_kms() / DRM_WARN with drm_warn()
      v9: Fix commit message
      v10: Rebased
      v11: Address Jose's review comment.
        - Reorder calling order of intel_psr2_program_trans_man_trk_ctl().
        - In order to reduce changes keep the old name for drm_i915_private.
        - Change restrictions of multiple instances of PSR.
      v12: Address Jose's review comment.
        - Change the calling of intel_psr2_program_trans_man_trk_ctl() into
          commit_pipe_config().
        - Change a checking order of CAN_PSR() and connector_status to original
          on i915_psr_sink_status_show().
        - Drop unneeded intel_dp_update_pipe() function.
        - In order to wait a specific encoder which belong to crtc_state on
          intel_psr_wait_for_idle(), add checking of encoder.
        - Add an whitespace to comments.
      v13: Rebased and Address Jose's review comment.
        - Add and use for_each_intel_psr_enabled_encoder() macro.
        - In order to use correct frontbuffer_bit for each pipe,
          fix intel_psr_invalidate() and intel_psr_flush().
        - Remove redundant or unneeded codes.
        - Update comments.
      v14: Address Jose's review comment
        - Add and use for_each_intel_encoder_can_psr() macro and
          for_each_intel_encoder_mask_can_psr() macro.
        - Add source_support member variable into intel_psr structure.
        - Update CAN_PSR() macro that checks source_support.
        - Move encoder's PSR availity check to psr_init() from
          psr_compute_config().
        - Remove redundant or unneeded codes.
      v15: Remove wrong mutex lock/unlock of PSR from
           intel_psr2_program_trans_man_trk_ctl()
      Signed-off-by: NGwan-gyeong Mun <gwan-gyeong.mun@intel.com>
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
      Cc: Anshuman Gupta <anshuman.gupta@intel.com>
      Reviewed-by: NAnshuman Gupta <anshuman.gupta@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Signed-off-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210204134015.419036-1-gwan-gyeong.mun@intel.com
      b64d6c51
  17. 02 2月, 2021 2 次提交
  18. 30 1月, 2021 1 次提交