• Douglas Anderson's avatar
    drm/dp: Add callbacks to make using DP AUX bus properly easier · 3800b171
    Douglas Anderson authored
    As talked about in this patch in the kerneldoc of
    of_dp_aux_populate_ep_device() and also in the past in commit
    a1e3667a ("drm/bridge: ti-sn65dsi86: Promote the AUX channel to
    its own sub-dev"), it can be difficult for eDP controller drivers to
    know when the panel has finished probing when they're using
    of_dp_aux_populate_ep_devices().
    
    The ti-sn65dsi86 driver managed to solve this because it was already
    broken up into a bunch of sub-drivers. That means we could solve the
    problem there by adding a new sub-driver to get the panel. We could
    use the traditional -EPROBE_DEFER retry mechansim to handle the case
    where the panel hadn't probed yet.
    
    In parade-ps8640 we didn't really solve this. The code just expects
    the panel to be ready right away. While reviewing the code originally
    I had managed to convince myself it was fine to just expect the panel
    right away, but additional testing has shown that not to be the
    case. We could fix parade-ps8640 like we did ti-sn65dsi86 but it's
    pretty cumbersome (since we're not already broken into multiple
    drivers) and requires a bunch of boilerplate code.
    
    After discussion [1] it seems like the best solution for most people
    is:
    - Accept that there's always at most one device that will probe as a
      result of the DP AUX bus (it may have sub-devices, but there will be
      one device _directly_ probed).
    - When that device finishes probing, we can just have a call back.
    
    This patch implements that idea. We'll now take a callback as an
    argument to the populate function. To make this easier to land in
    pieces, we'll make wrappers for the old functions. The functions with
    the new name (which make it clear that we only have one child) will
    take the callback and the functions with the old name will temporarily
    wrap.
    
    [1] https://lore.kernel.org/r/CAD=FV=Ur3afHhsXe7a3baWEnD=MFKFeKRbhFU+bt3P67G0MVzQ@mail.gmail.comSigned-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.2.I4182ae27e00792842cb86f1433990a0ef9c0a073@changeid
    3800b171
drm_dp_aux_bus.c 10.7 KB