1. 30 May, 2022 4 commits
  2. 27 May, 2022 1 commit
  3. 26 May, 2022 12 commits
  4. 25 May, 2022 2 commits
  5. 24 May, 2022 1 commit
  6. 23 May, 2022 13 commits
  7. 21 May, 2022 4 commits
  8. 20 May, 2022 3 commits
    • Douglas Anderson's avatar
      drm/dp: Export symbol / kerneldoc fixes for DP AUX bus · 39c28cdf
      Douglas Anderson authored
      While working on the DP AUX bus code I found a few small things that
      should be fixed. Namely the non-devm version of
      of_dp_aux_populate_ep_devices() was missing an export. There was also
      an extra blank line in a kerneldoc and a kerneldoc that incorrectly
      documented a return value. Fix these.
      
      Fixes: aeb33699 ("drm: Introduce the DP AUX bus")
      Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220510122726.v3.1.Ia91f4849adfc5eb9da1eb37ba79aa65fb3c95a0f@changeid
      39c28cdf
    • Douglas Anderson's avatar
      drm: Document the power requirements for DP AUX transfers · 69ef4a19
      Douglas Anderson authored
      When doing DP AUX transfers there are two actors that need to be
      powered in order for the DP AUX transfer to work: the DP source and
      the DP sink. Commit bacbab58 ("drm: Mention the power state
      requirement on side-channel operations") added some documentation
      saying that the DP source is required to power itself up (if needed)
      to do AUX transfers. However, that commit doesn't talk anything about
      the DP sink.
      
      For full fledged DP the sink isn't really a problem. It's expected
      that if an external DP monitor isn't plugged in that attempting to do
      AUX transfers won't work. It's also expected that if a DP monitor is
      plugged in (and thus asserting HPD) then AUX transfers will work.
      
      When we're looking at eDP, however, things are less obvious. Let's add
      some documentation about expectations. Here's what we'll say:
      
      1. We don't expect the DP AUX transfer function to power on an eDP
      panel. If an eDP panel is physically connected but powered off then it
      makes sense for the transfer to fail.
      
      2. We'll document that the official way to power on a panel is via the
      bridge chain, specifically by making sure that the panel's prepare
      function has been called (which is called by
      panel_bridge_pre_enable()). It's already specified in the kernel doc
      of drm_panel_prepare() that this is the way to power the panel on and
      also that after this call "it is possible to communicate with any
      integrated circuitry via a command bus."
      
      3. We'll also document that for code running in the panel driver
      itself that it is legal for the panel driver to power itself up
      however it wants (it doesn't need to officially call
      drm_panel_pre_enable()) and then it can do AUX bus transfers. This is
      currently the way that edp-panel works when it's running atop the DP
      AUX bus.
      
      NOTE: there was much discussion of all of this in response to v1 [1]
      of this patch. A summary of that is:
      * With the Intel i195 driver, apparently eDP panels do get powered
        up. We won't forbid this but it is expected that code that wants to
        run on a variety of platforms should ensure that the drm_panel's
        prepare() function has been called.
      * There is at least a reasonable amount of agreement that the
        transfer() functions itself shouldn't be responsible for powering
        the panel. It's proposed that if we need the DP AUX dev nodes to be
        robust for eDP that the code handling the DP AUX dev nodes could
        handle powering the panel by ensuring that the panel's prepare()
        call was made. Potentially drm_dp_aux_dev_get_by_minor() could be a
        good place to do this. This is left as a future exercise. Until
        that's fixed the DP AUX dev nodes for eDP are probably best just
        used for debugging.
      * If a panel could be in PSR and DP AUX via the dev node needs to be
        reliable then we need to be able to pull the panel out of PSR. On
        i915 this is also apparently handled as part of the transfer()
        function.
      
      [1] https://lore.kernel.org/r/20220503162033.1.Ia8651894026707e4fa61267da944ff739610d180@changeidSigned-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220509161733.v2.1.Ia8651894026707e4fa61267da944ff739610d180@changeid
      69ef4a19
    • Douglas Anderson's avatar
      drm/probe-helper: For DP, add 640x480 if all other modes are bad · e7c254d7
      Douglas Anderson authored
      As per Displayport spec section 5.2.1.2 ("Video Timing Format") says
      that all detachable sinks shall support 640x480 @60Hz as a fail safe
      mode.
      
      A DP compliance test expected us to utilize the above fact when all
      modes it presented to the DP source were not achievable. It presented
      only modes that would be achievable with more lanes and/or higher
      speeds than we had available and expected that when we couldn't do
      that then we'd fall back to 640x480 even though it didn't advertise
      this size.
      
      In order to pass the compliance test (and also support any users who
      might fall into a similar situation with their display), we need to
      add 640x480 into the list of modes. However, we don't want to add
      640x480 all the time. Despite the fact that the DP spec says all sinks
      _shall support_ 640x480, they're not guaranteed to support it
      _well_. Continuing to read the spec you can see that the display is
      not required to really treat 640x480 equal to all the other modes. It
      doesn't need to scale or anything--just display the pixels somehow for
      failsafe purposes. It should also be noted that it's not hard to find
      a display hooked up via DisplayPort that _doesn't_ support 640x480 at
      all. The HP ZR30w screen I'm sitting in front of has a native DP port
      and doesn't work at 640x480. I also plugged in a tiny 800x480 HDMI
      display via a DP to HDMI adapter and that screen definitely doesn't
      support 640x480.
      
      As a compromise solution, let's only add the 640x480 mode if:
      * We're on DP.
      * All other modes have been pruned.
      
      This acknowledges that 640x480 might not be the best mode to use but,
      since sinks are _supposed_ to support it, we will at least fall back
      to it if there's nothing else.
      
      Note that we _don't_ add higher resolution modes like 1024x768 in this
      case. We only add those modes for a failed EDID read where we have no
      idea what's going on. In the case where we've pruned all modes then
      instead we only want 640x480 which is the only defined "Fail Safe"
      resolution.
      
      This patch originated in response to Kuogee Hsieh's patch [1].
      
      [1] https://lore.kernel.org/r/1650671124-14030-1-git-send-email-quic_khsieh@quicinc.comSigned-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Tested-by: default avatarKuogee Hsieh <quic_khsieh@quicinc.com>
      Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
      Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220511155749.v3.2.I4ac7f55aa446699f8c200a23c10463256f6f439f@changeid
      e7c254d7