]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/vc4: hdmi: Disable audio if dmas property is present but empty
authorPhil Elwell <phil@raspberrypi.org>
Mon, 13 Jun 2022 14:47:44 +0000 (16:47 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Tue, 28 Jun 2022 12:55:41 +0000 (14:55 +0200)
The dmas property is used to hold the dmaengine channel used for audio
output.

Older device trees were missing that property, so if it's not there we
disable the audio output entirely.

However, some overlays have set an empty value to that property, mostly
to workaround the fact that overlays cannot remove a property. Let's add
a test for that case and if it's empty, let's disable it as well.

Cc: <stable@vger.kernel.org>
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
Link: https://lore.kernel.org/r/20220613144800.326124-18-maxime@cerno.tech
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/vc4_hdmi.c

index 823d812f49829bcb6929c7a9db68c51043250397..ac723776c6e0a0a18d49f69e3f12f2adfdb3f19b 100644 (file)
@@ -2035,12 +2035,12 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
        struct device *dev = &vc4_hdmi->pdev->dev;
        struct platform_device *codec_pdev;
        const __be32 *addr;
-       int index;
+       int index, len;
        int ret;
 
-       if (!of_find_property(dev->of_node, "dmas", NULL)) {
+       if (!of_find_property(dev->of_node, "dmas", &len) || !len) {
                dev_warn(dev,
-                        "'dmas' DT property is missing, no HDMI audio\n");
+                        "'dmas' DT property is missing or empty, no HDMI audio\n");
                return 0;
        }