From: Stefan Wahren <wahre...@gmx.net>

drm_atomic_helper_connector_hdmi_hotplug() must be called
regardless of the connection status, otherwise the HDMI audio
disconnect event won't be notified.  Also update the comment on
drm_atomic_helper_connector_hdmi_hotplug() to explain that this is
necessary.

Fixes: 2ea9ec5d2c20 ("drm/vc4: hdmi: use 
drm_atomic_helper_connector_hdmi_hotplug()")
Suggested-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
Signed-off-by: Stefan Wahren <wahre...@gmx.net>
Signed-off-by: David Turner <david.tur...@raspberrypi.com>
---
 drivers/gpu/drm/display/drm_hdmi_state_helper.c | 3 ++-
 drivers/gpu/drm/vc4/vc4_hdmi.c                  | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c 
b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
index 
c205f37da1e12b11c384670db83e43613e031340..d26d51902ba1a73175b23eec71562a30ceda1082
 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
@@ -816,7 +816,8 @@ drm_atomic_helper_connector_hdmi_update(struct 
drm_connector *connector,
  * @status: Connection status
  *
  * This function should be called as a part of the .detect() / .detect_ctx()
- * callbacks, updating the HDMI-specific connector's data.
+ * callbacks, updating the HDMI-specific connector's data. It also needs to be
+ * called for disconnects to notify audio users of the unplug.
  */
 void drm_atomic_helper_connector_hdmi_hotplug(struct drm_connector *connector,
                                              enum drm_connector_status status)
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 
37238a12baa58a06a5d6f40d1ab64abc7fac60d7..37a7d45695f236d3ab281d9a8676921fd434955c
 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -372,13 +372,13 @@ static void vc4_hdmi_handle_hotplug(struct vc4_hdmi 
*vc4_hdmi,
         * the lock for now.
         */
 
+       drm_atomic_helper_connector_hdmi_hotplug(connector, status);
+
        if (status == connector_status_disconnected) {
                cec_phys_addr_invalidate(vc4_hdmi->cec_adap);
                return;
        }
 
-       drm_atomic_helper_connector_hdmi_hotplug(connector, status);
-
        cec_s_phys_addr(vc4_hdmi->cec_adap,
                        connector->display_info.source_physical_address, false);
 

-- 
2.34.1

Reply via email to