1. 21 10月, 2020 3 次提交
    • V
      drm/i915: Reorder hpd init vs. display resume · 4c8d4651
      Ville Syrjälä 提交于
      Currently we call .hpd_irq_setup() directly just before display
      resume, and follow it with another call via intel_hpd_init()
      just afterwards. Assuming the hpd pins are marked as enabled
      during the open-coded call these two things do exactly the
      same thing (ie. enable HPD interrupts). Which even makes sense
      since we definitely need working HPD interrupts for MST sideband
      during the display resume.
      
      So let's nuke the open-coded call and move the intel_hpd_init()
      call earlier. However we need to leave the poll_init_work stuff
      behind after the display resume as that will trigger display
      detection while we're resuming. We don't want that trampling over
      the display resume process. To make this a bit more symmetric
      we turn this into a intel_hpd_poll_{enable,disable}() pair.
      So we end up with the following transformation:
      intel_hpd_poll_init() -> intel_hpd_poll_enable()
      lone intel_hpd_init() -> intel_hpd_init()+intel_hpd_poll_disable()
      .hpd_irq_setup()+resume+intel_hpd_init() -> intel_hpd_init()+resume+intel_hpd_poll_disable()
      
      If we really would like to prevent all *long* HPD processing during
      display resume we'd need some kind of software mechanism to simply
      ignore all long HPDs. Currently we appear to have that just for
      fbdev via ifbdev->hpd_suspended. Since we aren't exploding left and
      right all the time I guess that's mostly sufficient.
      
      For a bit of history on this, we first got a mechanism to block
      hotplug processing during suspend in commit 15239099 ("drm/i915:
      enable irqs earlier when resuming") on account of moving the irq enable
      earlier. This then got removed in commit 50c3dc97 ("drm/fb-helper:
      Fix hpd vs. initial config races") because the fdev initial config
      got pushed to a later point. The second ad-hoc hpd_irq_setup() for
      resume was added in commit 0e32b39c ("drm/i915: add DP 1.2 MST
      support (v0.7)") to be able to do MST sideband during the resume.
      And finally we got a partial resurrection of the hpd blocking
      mechanism in commit e8a8fedd ("drm/i915: Block fbdev HPD
      processing during suspend"), but this time it only prevent fbdev
      from handling hpd while resuming.
      
      v2: Leave the poll_init_work behind
      v3: Remove the extra intel_hpd_poll_disable() from display reset (Lyude)
          Add the missing intel_hpd_poll_disable() to display init (Imre)
      
      Cc: Lyude Paul <lyude@redhat.com>
      Cc: Imre Deak <imre.deak@intel.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201013181137.30560-1-ville.syrjala@linux.intel.comReviewed-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NLyude Paul <lyude@redhat.com>
      4c8d4651
    • V
      drm/i915: s/intel_dp_sink_dpms/intel_dp_set_power/ · 0e634efd
      Ville Syrjälä 提交于
      Rename intel_dp_sink_dpms() to intel_dp_set_power()
      so one doesn't always have to convert from the DPMS
      enum values to the actual DP D-states.
      
      Also when dealing with a branch device this has nothing to
      do with any sink, so the old name was nonsense anyway.
      Also adjust the debug message accordingly, and pimp it
      with the standard encoder id+name thing.
      
      Trivial bits done with cocci:
      @@
      expression DP;
      @@
      (
      - intel_dp_sink_dpms(DP, DRM_MODE_DPMS_OFF)
      + intel_dp_set_power(DP, DP_SET_POWER_D3)
      |
      - intel_dp_sink_dpms(DP, DRM_MODE_DPMS_ON)
      + intel_dp_set_power(DP, DP_SET_POWER_D0)
      )
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201016194800.25581-2-ville.syrjala@linux.intel.comReviewed-by: NImre Deak <imre.deak@intel.com>
      0e634efd
    • V
      drm/i915: Move the lspcon resume from .reset() to intel_dp_sink_dpms() · 0a5a7499
      Ville Syrjälä 提交于
      Rather that try to trick LSPCON back into PCON mode from the .reset()
      hook let's just do that as a regular part of the normal modeset
      sequence, which is going to take care of the system resume case. During
      a normal modeset this should normally be a nop as the mode should have
      already been switched by .detect().
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201016194800.25581-1-ville.syrjala@linux.intel.comReviewed-by: NImre Deak <imre.deak@intel.com>
      0a5a7499
  2. 20 10月, 2020 4 次提交
  3. 17 10月, 2020 5 次提交
  4. 16 10月, 2020 12 次提交
  5. 14 10月, 2020 1 次提交
  6. 13 10月, 2020 3 次提交
  7. 12 10月, 2020 6 次提交
  8. 10 10月, 2020 6 次提交