drm/vc4: Add module dependency on hdmi-codec
authorMaxime Ripard <maxime@cerno.tech>
Fri, 2 Sep 2022 14:41:11 +0000 (16:41 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Thu, 13 Oct 2022 11:44:40 +0000 (13:44 +0200)
commitd1c0b7de4dfa5505cf7a1d6220aa72aace4435d0
tree1a4d0ae034a85eee48d0bc0ef5f495e7313f0fce
parentcc62d98bd56d45de4531844ca23913a15136c05b
drm/vc4: Add module dependency on hdmi-codec

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: 91e99e113929 ("drm/vc4: hdmi: Register HDMI codec")
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20220902144111.3424560-1-maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_drv.c