1. 08 4月, 2018 1 次提交
    • L
      drm/i915/dp: Send DPCD ON for MST before phy_up · be1c63c8
      Lyude Paul 提交于
      When doing a modeset where the sink is transitioning from D3 to D0 , it
      would sometimes be possible for the initial power_up_phy() to start
      timing out. This would only be observed in the last action before the
      sink went into D3 mode was intel_dp_sink_dpms(DRM_MODE_DPMS_OFF). We
      originally thought this might be an issue with us accidentally shutting
      off the aux block when putting the sink into D3, but since the DP spec
      mandates that sinks must wake up within 1ms while we have 100ms to
      respond to an ESI irq, this didn't really add up. Turns out that the
      problem is more subtle then that:
      
      It turns out that the timeout is from us not enabling DPMS on the MST
      hub before actually trying to initiate sideband communications. This
      would cause the first sideband communication (power_up_phy()), to start
      timing out because the sink wasn't ready to respond. Afterwards, we
      would call intel_dp_sink_dpms(DRM_MODE_DPMS_ON) in
      intel_ddi_pre_enable_dp(), which would actually result in waking up the
      sink so that sideband requests would work again.
      
      Since DPMS is what lets us actually bring the hub up into a state where
      sideband communications become functional again, we just need to make
      sure to enable DPMS on the display before attempting to perform sideband
      communications.
      
      Changes since v1:
      - Remove comment above if (!intel_dp->is_mst) - vsryjala
      - Move intel_dp_sink_dpms() for MST into intel_dp_post_disable_mst() to
        keep enable/disable paths symmetrical
      - Improve commit message - dhnkrn
      Changes since v2:
      - Only send DPMS off when we're disabling the last sink, and only send
        DPMS on when we're enabling the first sink - dhnkrn
      Changes since v3:
      - Check against is_mst, not intel_dp->is_mst - dhnkrn/vsyrjala
      Signed-off-by: NLyude Paul <lyude@redhat.com>
      Reviewed-by: NDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Tested-by: NLaura Abbott <labbott@redhat.com>
      Cc: stable@vger.kernel.org
      Fixes: ad260ab3 ("drm/i915/dp: Write to SET_POWER dpcd to enable MST hub.")
      Link: https://patchwork.freedesktop.org/patch/msgid/20180407011053.22437-1-lyude@redhat.com
      be1c63c8
  2. 28 3月, 2018 1 次提交
  3. 27 3月, 2018 1 次提交
  4. 24 3月, 2018 2 次提交
  5. 23 3月, 2018 1 次提交
  6. 20 3月, 2018 1 次提交
  7. 19 3月, 2018 1 次提交
  8. 16 3月, 2018 1 次提交
  9. 09 3月, 2018 1 次提交
  10. 07 3月, 2018 3 次提交
  11. 05 3月, 2018 1 次提交
  12. 10 2月, 2018 1 次提交
  13. 31 1月, 2018 1 次提交
  14. 25 1月, 2018 1 次提交
  15. 09 1月, 2018 2 次提交
    • S
      drm/i915: Implement HDCP for HDMI · 2320175f
      Sean Paul 提交于
      This patch adds HDCP support for HDMI connectors by implementing
      the intel_hdcp_shim.
      
      Nothing too special, just a bunch of DDC reads/writes.
      
      Changes in v2:
      - Rebased on drm-intel-next
      Changes in v3:
      - Initialize new worker
      Changes in v4:
      - Remove SKL_ prefix from most register names (Daniel)
      - Wrap sanity checks in WARN_ON (Daniel)
      - Consolidate the enable/disable functions into one toggle fn
      - Use intel_hdcp_init (Daniel)
      Changes in v5:
      - checkpatch whitespace nits
      Changes in v6:
      - None
      
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NRamalingam C <ramalingam.c@intel.com>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-9-seanpaul@chromium.org
      2320175f
    • S
      drm/i915: Add HDCP framework + base implementation · ee5e5e7a
      Sean Paul 提交于
      This patch adds the framework required to add HDCP support to intel
      connectors. It implements Aksv loading from fuse, and parts 1/2/3
      of the HDCP authentication scheme.
      
      Note that without shim implementations, this does not actually implement
      HDCP. That will come in subsequent patches.
      
      Changes in v2:
      - Don't open code wait_fors (Chris)
      - drm_hdcp.c under MIT license (Daniel)
      - Move intel_hdcp_disable() call above ddi_disable (Ram)
      - Fix // comments (I wore a cone of shame for 12 hours to atone) (Daniel)
      - Justify intel_hdcp_shim with comments (Daniel)
      - Fixed async locking issues by adding hdcp_mutex (Daniel)
      - Don't alter connector_state in enable/disable (Daniel)
      Changes in v3:
      - Added hdcp_mutex/hdcp_value to make async reasonable
      - Added hdcp_prop_work to separate link checking & property setting
      - Added new helper for atomic_check state tracking (Daniel)
      - Moved enable/disable into atomic_commit with matching helpers
      - Moved intel_hdcp_check_link out of all locks when called from dp
      - Bumped up ksv_fifo timeout (noticed failure on one of my dongles)
      Changes in v4:
      - Remove SKL_ prefix from most register names (Daniel)
      - Move enable/disable back to modeset path (Daniel)
      - s/get_random_long/get_random_u32/ (Daniel)
      - Remove mode_config.mutex lock in prop_work (Daniel)
      - Add intel_hdcp_init to handle init of conn components (Daniel)
      - Actually check return value of attach_property
      - Check Bksv is valid before trying to authenticate (Ram)
      Changes in v5:
      - checkpatch whitespace changes
      - s/DRM_MODE_CONTENT_PROTECTION_OFF/DRM_MODE_CONTENT_PROTECTION_UNDESIRED/
      - Fix ksv list wait timeout (actually wait 5s)
      - Increase the R0 timeout to 300ms (Ram)
      Changes in v6:
      - SPDX license
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NRamalingam C <ramalingm.c@intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-6-seanpaul@chromium.org
      ee5e5e7a
  16. 19 12月, 2017 3 次提交
  17. 05 12月, 2017 1 次提交
  18. 02 12月, 2017 1 次提交
  19. 01 12月, 2017 1 次提交
  20. 14 11月, 2017 1 次提交
  21. 10 11月, 2017 1 次提交
    • V
      drm/i915: Nuke intel_digital_port->port · 8f4f2797
      Ville Syrjälä 提交于
      Remove intel_digital_port->port and replace its users with
      intel_encoder->port. intel_encoder->port is a superset of
      intel_digital_port->port, and it works correctly even for
      MST encoders.
      
      v2: Eliminate a few dp_to_dig_port()->base.port cases too (DK)
      
      Performed with cocci:
      @@
      @@
      struct intel_digital_port {
             ...
      -       enum port port;
             ...
      }
      
      @@
      struct intel_digital_port *D;
      expression E;
      @@
      - D->port = E;
      
      @@
      struct intel_digital_port *D;
      @@
      - D->port
      + D->base.port
      
      @
      expression E;
      @@
      (
      - dp_to_dig_port(E)->port
      + dp_to_dig_port(E)->base.port
      |
      - enc_to_dig_port(E)->port
      + to_intel_encoder(E)->port
      )
      
      @@
      expression E;
      @@
      - to_intel_encoder(&E->base)
      + E
      
      @@
      struct intel_digital_port *D;
      identifier I, M;
      @@
        I = &D->base
      <...
      (
      - D->base.M
      + I->M
      |
      - &D->base
      + I
      )
      ...>
      
      @@
      identifier D;
      expression E;
      identifier M;
      @@
       D = enc_to_dig_port(&E->base)
      <...
      (
      - D->base.M
      + E->M
      |
      - &D->base
      + E
      )
      ...>
      
      @@
      identifier D, DP;
      expression E;
      identifier M;
      @@
       DP = enc_to_intel_dp(&E->base)
      <...
      (
      - dp_to_dig_port(DP)->base.M
      + E->M
      |
      - &dp_to_dig_port(DP)->base
      + E
      )
      ...>
      
      @@
      expression E;
      identifier M;
      @@
      (
      - enc_to_dig_port(&E->base)->base.M
      + E->M
      |
      - enc_to_dig_port(&E->base)->base
      + E
      |
      - enc_to_mst(&E->base)->primary->base.port
      + E->port
      )
      
      @@
      expression E;
      identifier D;
      @@
      - struct intel_digital_port *D = E;
      ... when != D
      
      Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Reviewed-by: NDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Acked-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171109152434.32074-1-ville.syrjala@linux.intel.com
      8f4f2797
  22. 01 11月, 2017 1 次提交
  23. 31 10月, 2017 6 次提交
  24. 28 10月, 2017 1 次提交
  25. 27 10月, 2017 3 次提交
  26. 25 10月, 2017 2 次提交
    • V
      drm/i915: Adjust system agent voltage on CNL if required by DDI ports · 53e9bf5e
      Ville Syrjälä 提交于
      On CNL we may need to bump up the system agent voltage not only due
      to CDCLK but also when driving DDI port with a sufficiently high clock.
      To that end start tracking the minimum acceptable voltage for each crtc.
      We do the tracking via crtcs because we don't have any kind of encoder
      state. Also there's no downside to doing it this way, and it matches how
      we track cdclk requirements on account of pixel rate.
      
      v2: Allow disabled crtcs to use the min voltage
          Add IS_CNL check to intel_ddi_compute_min_voltage() since
          we're using CNL specific values there
          s/intel_compute_min_voltage/cnl_compute_min_voltage/ since
          the function makes hw specific assumptions about the voltage
          values
      v3: Drop the test hack leftovers from skl_modeset_calc_cdclk()
      v4: s/voltage/voltage_level/ (Rodrigo)
          Replace DPLL DVFS FIXMEs with an explanation why we don't
          do anything there (Rodrigo)
      
      Cc: Mika Kahola <mika.kahola@intel.com>
      Cc: Manasi Navare <manasi.d.navare@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171024095216.1638-9-ville.syrjala@linux.intel.com
      53e9bf5e
    • R
      drm/i915/cnl: Force DDI_A_4_LANES when needed. · 436009b5
      Rodrigo Vivi 提交于
      As we faced in BXT, on CNL DDI_A_4_LANES is not
      set as expected when system is boot with multiple
      monitors connected. This result in wrong lane
      setup impacting the max data rate available and
      consequently blocking modeset on eDP, resulting
      in a blank screen.
      
      Most of CNL SKUs don't support DDI-E.
      The only SKU that supports DDI-E is the same
      that supports the full A/E split called DDI-F.
      
      Also when DDI-F is used DDI-E cannot be used because
      they share Interrupts. So DDI-E is almost useless.
      Anyways let's consider this is possible and rely on
      VBT for that.
      
      This patch was initialy start by Clint, but required
      many changes including full commit message. So
      Credits entirely to Clint for finding this.
      
      v2: Extract all messy conditions into a helper function
          as suggested by Ville.
          Along with simplification I removed the debug
          message on the working case since now all conditions
          are grouped.
      v3: Split the conditions even more as suggested by Ville.
          Get's cleaner and easier to add new cases in the
          future.
      Suggested-by: NClint Taylor <clinton.a.taylor@intel.com>
      Cc: Clint Taylor <clinton.a.taylor@intel.com>
      Cc: Mika Kahola <mika.kahola@intel.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171023173920.22890-1-rodrigo.vivi@intel.com
      436009b5