{
        u32 value;
 
+       /*
+        * Enable and unmask the HDA codec SCRATCH0 register interrupt. This
+        * is used for interoperability between the HDA codec driver and the
+        * HDMI/DP driver.
+        */
+       value = SOR_INT_CODEC_SCRATCH1 | SOR_INT_CODEC_SCRATCH0;
+       tegra_sor_writel(sor, value, SOR_INT_ENABLE);
+       tegra_sor_writel(sor, value, SOR_INT_MASK);
+
        tegra_sor_write_eld(sor);
 
        value = SOR_AUDIO_HDA_PRESENSE_ELDV | SOR_AUDIO_HDA_PRESENSE_PD;
 static void tegra_sor_audio_unprepare(struct tegra_sor *sor)
 {
        tegra_sor_writel(sor, 0, SOR_AUDIO_HDA_PRESENSE);
+       tegra_sor_writel(sor, 0, SOR_INT_MASK);
+       tegra_sor_writel(sor, 0, SOR_INT_ENABLE);
 }
 
 static int tegra_sor_hdmi_enable_audio_infoframe(struct tegra_sor *sor)
        struct tegra_sor *sor = host1x_client_to_sor(client);
        int connector = DRM_MODE_CONNECTOR_Unknown;
        int encoder = DRM_MODE_ENCODER_NONE;
-       u32 value;
        int err;
 
        if (!sor->aux) {
        if (err < 0)
                return err;
 
-       /*
-        * Enable and unmask the HDA codec SCRATCH0 register interrupt. This
-        * is used for interoperability between the HDA codec driver and the
-        * HDMI/DP driver.
-        */
-       value = SOR_INT_CODEC_SCRATCH1 | SOR_INT_CODEC_SCRATCH0;
-       tegra_sor_writel(sor, value, SOR_INT_ENABLE);
-       tegra_sor_writel(sor, value, SOR_INT_MASK);
-
        return 0;
 }
 
        struct tegra_sor *sor = host1x_client_to_sor(client);
        int err;
 
-       tegra_sor_writel(sor, 0, SOR_INT_MASK);
-       tegra_sor_writel(sor, 0, SOR_INT_ENABLE);
-
        tegra_output_exit(&sor->output);
 
        if (sor->aux) {