• Maxime Ripard's avatar
    drm/vc4: Add module dependency on hdmi-codec · d1c0b7de
    Maxime Ripard authored
    The VC4 HDMI controller driver relies on the HDMI codec ASoC driver. In
    order to set it up properly, in vc4_hdmi_audio_init(), our HDMI driver
    will register a device matching the HDMI codec driver, and then register
    an ASoC card using that codec.
    
    However, if vc4 is compiled as a module, chances are that the hdmi-codec
    driver will be too. In such a case, the module loader will have a very
    narrow window to load the module between the device registration and the
    card registration.
    
    If it fails to load the module in time, the card registration will fail
    with EPROBE_DEFER, and we'll abort the audio initialisation,
    unregistering the HDMI codec device in the process.
    
    The next time the bind callback will be run, it's likely that we end up
    missing that window again, effectively preventing vc4 to probe entirely.
    
    In order to prevent this, we can create a soft dependency of the vc4
    driver on the HDMI codec one so that we're sure the HDMI codec will be
    loaded before the VC4 module is, and thus we'll never end up in the
    previous situation.
    
    Fixes: 91e99e11 ("drm/vc4: hdmi: Register HDMI codec")
    Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220902144111.3424560-1-maxime@cerno.tech
    d1c0b7de
vc4_drv.c 11.5 KB