static void vc4_hdmi_set_infoframes(struct drm_encoder *encoder)
 {
+       struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
+
        vc4_hdmi_set_avi_infoframe(encoder);
        vc4_hdmi_set_spd_infoframe(encoder);
+       /*
+        * If audio was streaming, then we need to reenabled the audio
+        * infoframe here during encoder_enable.
+        */
+       if (vc4_hdmi->audio.streaming)
+               vc4_hdmi_set_audio_infoframe(encoder);
 }
 
 static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
        struct device *dev = &vc4_hdmi->pdev->dev;
        int ret;
 
+       vc4_hdmi->audio.streaming = false;
        ret = vc4_hdmi_stop_packet(encoder, HDMI_INFOFRAME_TYPE_AUDIO);
        if (ret)
                dev_err(dev, "Failed to stop audio infoframe: %d\n", ret);
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
                vc4_hdmi_set_audio_infoframe(encoder);
+               vc4_hdmi->audio.streaming = true;
 
                if (vc4_hdmi->variant->phy_rng_enable)
                        vc4_hdmi->variant->phy_rng_enable(vc4_hdmi);
                if (vc4_hdmi->variant->phy_rng_disable)
                        vc4_hdmi->variant->phy_rng_disable(vc4_hdmi);
 
+               vc4_hdmi->audio.streaming = false;
+
                break;
        default:
                break;