Skip to content
  • Maxime Ripard's avatar
    37b254f1
    drm/vc4: dsi: Only register our component once a DSI device is attached · 37b254f1
    Maxime Ripard authored
    
    
    If the DSI driver is the last to probe, component_add will try to run all
    the bind callbacks straight away and return the error code.
    
    However, since we depend on a power domain, we're pretty much guaranteed to
    be in that case on the BCM2711, and are just lucky on the previous SoCs
    since the v3d also depends on that power domain and is further in the probe
    order.
    
    In that case, the DSI host will not stick around in the system: the DSI
    bind callback will be executed, will not find any DSI device attached and
    will return EPROBE_DEFER, and we will then remove the DSI host and ask to
    be probed later on.
    
    But since that host doesn't stick around, DSI devices like the RaspberryPi
    touchscreen whose probe is not linked to the DSI host (unlike the usual DSI
    devices that will be probed through the call to mipi_dsi_host_register)
    cannot attach to the DSI host, and we thus end up in a situation where the
    DSI host cannot probe because the panel hasn't probed yet, and the panel
    cannot probe because the DSI host hasn't yet.
    
    In order to break this cycle, let's wait until there's a DSI device that
    attaches to the DSI host to register the component and allow to progress
    further.
    
    Acked-by: default avatarEric Anholt <eric@anholt.net>
    Suggested-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200707101912.571531-1-maxime@cerno.tech
    37b254f1
    drm/vc4: dsi: Only register our component once a DSI device is attached
    Maxime Ripard authored
    
    
    If the DSI driver is the last to probe, component_add will try to run all
    the bind callbacks straight away and return the error code.
    
    However, since we depend on a power domain, we're pretty much guaranteed to
    be in that case on the BCM2711, and are just lucky on the previous SoCs
    since the v3d also depends on that power domain and is further in the probe
    order.
    
    In that case, the DSI host will not stick around in the system: the DSI
    bind callback will be executed, will not find any DSI device attached and
    will return EPROBE_DEFER, and we will then remove the DSI host and ask to
    be probed later on.
    
    But since that host doesn't stick around, DSI devices like the RaspberryPi
    touchscreen whose probe is not linked to the DSI host (unlike the usual DSI
    devices that will be probed through the call to mipi_dsi_host_register)
    cannot attach to the DSI host, and we thus end up in a situation where the
    DSI host cannot probe because the panel hasn't probed yet, and the panel
    cannot probe because the DSI host hasn't yet.
    
    In order to break this cycle, let's wait until there's a DSI device that
    attaches to the DSI host to register the component and allow to progress
    further.
    
    Acked-by: default avatarEric Anholt <eric@anholt.net>
    Suggested-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200707101912.571531-1-maxime@cerno.tech
Loading