Sending Audio InfoFrames is mandatory for getting audio to work over the
HDMI link. Warn if the driver requests HDMI audio support for the HDMI
connector, but there is no support for Audio InfoFrames.

Suggested-by: Maxime Ripard <mrip...@kernel.org>
Acked-by: Daniel Stone <dani...@collabora.com>
Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@oss.qualcomm.com>
---
 drivers/gpu/drm/display/drm_hdmi_audio_helper.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/display/drm_hdmi_audio_helper.c 
b/drivers/gpu/drm/display/drm_hdmi_audio_helper.c
index 
7d78b02c144621de528b40b1425f25e465edd1ae..35e0e79cb683a68af813344aa86c154c3a5531fe
 100644
--- a/drivers/gpu/drm/display/drm_hdmi_audio_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_audio_helper.c
@@ -10,6 +10,7 @@
 
 #include <drm/drm_connector.h>
 #include <drm/drm_device.h>
+#include <drm/drm_print.h>
 #include <drm/display/drm_hdmi_audio_helper.h>
 
 #include <sound/hdmi-codec.h>
@@ -178,6 +179,17 @@ int drm_connector_hdmi_audio_init(struct drm_connector 
*connector,
            !funcs->shutdown)
                return -EINVAL;
 
+       if (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
+           connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) {
+               unsigned long supported_infoframes =
+                       connector->hdmi.supported_infoframes;
+
+               if (supported_infoframes &&
+                   !(supported_infoframes & DRM_CONNECTOR_INFOFRAME_AUDIO))
+                       drm_warn(connector->dev, "HDMI Audio with no support 
for Audio InfoFrames\n");
+       }
+
+
        connector->hdmi_audio.funcs = funcs;
        connector->hdmi_audio.dai_port = dai_port;
 

-- 
2.47.3

Reply via email to