1. 11 9月, 2019 2 次提交
    • M
      drm/i915: Use literal representation of cdclk tables · 736da811
      Matt Roper 提交于
      The bspec lays out legal cdclk frequencies, PLL ratios, and CD2X
      dividers in an easy-to-read table for most recent platforms.  We've been
      translating the data from that table into platform-specific code logic,
      but it's easy to overlook an area we need to update when adding new
      cdclk values or enabling new platforms.  Let's just add a form of the
      bspec table to the code and then adjust our functions to pull what they
      need directly out of the table.
      
      v2: Fix comparison when finding best cdclk.
      
      v3: Another logic fix for calc_cdclk.
      
      v4:
       - Use named initializers for cdclk tables. (Ville)
       - Include refclk as a field in the table instead of adding all three
         ratios for each entry. (Ville)
       - Terminate tables with an empty entry to avoid needing to store the
         table size. (Ville)
       - Don't try so hard to return reasonable values from our lookup
         functions if we get impossible inputs; just WARN and return 0.
         (Ville)
       - Keep a bxt_ prefix on the lookup functions since they're still only
         used on bxt+ for now.  We can rename them later if we extend this
         table-based approach back to older platforms.  (Ville)
      
      v5:
       - Fix cnl table's ratios for 24mhz refclk. (Ville)
       - Don't miss the named initializers on the cnl table. (Ville)
       - Represent refclk in table as u16 rather than u32. (Ville)
      
      Cc: Ville Syrjälä <ville.syrjala@linux.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/20190910161506.7158-1-matthew.d.roper@intel.com
      736da811
    • M
      drm/i915: Consolidate bxt/cnl/icl cdclk readout · 71dc367e
      Matt Roper 提交于
      Aside from a few minor register changes and some different clock values,
      cdclk design hasn't changed much since gen9lp.  Let's consolidate the
      handlers for bxt, cnl, and icl to keep the codeflow consistent.
      
      Also, while we're at it, s/bxt_de_pll_update/bxt_de_pll_readout/ since
      "update" makes me think we should be writing to hardware rather than
      reading from it.
      
      v2:
       - Fix icl_calc_voltage_level() limits.  (Ville)
       - Use CNL_CDCLK_PLL_RATIO_MASK rather than BXT_DE_PLL_RATIO_MASK on
         gen10+ to avoid confusion.  (Ville)
      
      v3:
       - Also fix ehl_calc_voltage_level() limits.  (Ville)
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Suggested-by: NVille Syrjälä <ville.syrjala@linux.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/20190910160520.6587-1-matthew.d.roper@intel.com
      71dc367e
  2. 10 9月, 2019 3 次提交
  3. 06 9月, 2019 4 次提交
  4. 05 9月, 2019 4 次提交
  5. 04 9月, 2019 8 次提交
  6. 03 9月, 2019 1 次提交
    • C
      drm/i915: Replace obj->pin_global with obj->frontbuffer · 5a90606d
      Chris Wilson 提交于
      obj->pin_global was originally used as a means to keep the shrinker off
      the active scanout, but we use the vma->pin_count itself for that and
      the obj->frontbuffer to delay shrinking active framebuffers. The other
      role that obj->pin_global gained was for spotting display objects inside
      GEM and working harder to keep those coherent; for which we can again
      simply inspect obj->frontbuffer directly.
      
      Coming up next, we will want to manipulate the pin_global counter
      outside of the principle locks, so would need to make pin_global atomic.
      However, since obj->frontbuffer is already managed atomically, it makes
      sense to use that the primary key for display objects instead of having
      pin_global.
      
      Ville pointed out the principle difference is that obj->frontbuffer is
      set for as long as an intel_framebuffer is attached to an object, but
      obj->pin_global was only raised for as long as the object was active. In
      practice, this means that we consider the object as being on the scanout
      for longer than is strictly required, causing us to be more proactive in
      flushing -- though it should be true that we would have flushed
      eventually when the back became the front, except that on the flip path
      that flush is async but when hit from another ioctl it will be
      synchronous.
      
      v2: i915_gem_object_is_framebuffer()
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190902040303.14195-5-chris@chris-wilson.co.uk
      5a90606d
  7. 02 9月, 2019 3 次提交
  8. 31 8月, 2019 3 次提交
  9. 30 8月, 2019 6 次提交
  10. 29 8月, 2019 4 次提交
  11. 27 8月, 2019 2 次提交