The HDMI driver unbind hook doesn't have any ALSA-related code anymore, so
let's move the ALSA sanity checks and comments we have to some other part
of the driver dedicated to ALSA.

Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 40 +++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index ca0bc8be3e6a..814517c1fdaa 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -2041,6 +2041,26 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
        int index;
        int ret;
 
+       /*
+        * ASoC makes it a bit hard to retrieve a pointer to the
+        * vc4_hdmi structure. Registering the card will overwrite our
+        * device drvdata with a pointer to the snd_soc_card structure,
+        * which can then be used to retrieve whatever drvdata we want
+        * to associate.
+        *
+        * However, that doesn't fly in the case where we wouldn't
+        * register an ASoC card (because of an old DT that is missing
+        * the dmas properties for example), then the card isn't
+        * registered and the device drvdata wouldn't be set.
+        *
+        * We can deal with both cases by making sure a snd_soc_card
+        * pointer and a vc4_hdmi structure are pointing to the same
+        * memory address, so we can treat them indistinctly without any
+        * issue.
+        */
+       BUILD_BUG_ON(offsetof(struct vc4_hdmi_audio, card) != 0);
+       BUILD_BUG_ON(offsetof(struct vc4_hdmi, audio) != 0);
+
        if (!of_find_property(dev->of_node, "dmas", NULL)) {
                dev_warn(dev,
                         "'dmas' DT property is missing, no HDMI audio\n");
@@ -3006,26 +3026,6 @@ static int vc4_hdmi_bind(struct device *dev, struct 
device *master, void *data)
 static void vc4_hdmi_unbind(struct device *dev, struct device *master,
                            void *data)
 {
-       /*
-        * ASoC makes it a bit hard to retrieve a pointer to the
-        * vc4_hdmi structure. Registering the card will overwrite our
-        * device drvdata with a pointer to the snd_soc_card structure,
-        * which can then be used to retrieve whatever drvdata we want
-        * to associate.
-        *
-        * However, that doesn't fly in the case where we wouldn't
-        * register an ASoC card (because of an old DT that is missing
-        * the dmas properties for example), then the card isn't
-        * registered and the device drvdata wouldn't be set.
-        *
-        * We can deal with both cases by making sure a snd_soc_card
-        * pointer and a vc4_hdmi structure are pointing to the same
-        * memory address, so we can treat them indistinctly without any
-        * issue.
-        */
-       BUILD_BUG_ON(offsetof(struct vc4_hdmi_audio, card) != 0);
-       BUILD_BUG_ON(offsetof(struct vc4_hdmi, audio) != 0);
-
        pm_runtime_disable(dev);
 }
 
-- 
2.36.1

Reply via email to