return ret;
        }
 
-       if (adv->type == ADV7533 || adv->type == ADV7535)
-               ret = adv7533_attach_dsi(adv);
-
        if (adv->i2c_main->irq)
                regmap_write(adv->regmap, ADV7511_REG_INT_ENABLE(0),
                             ADV7511_INT0_HPD);
        drm_bridge_add(&adv7511->bridge);
 
        adv7511_audio_init(dev, adv7511);
+
+       if (adv7511->type == ADV7533 || adv7511->type == ADV7535) {
+               ret = adv7533_attach_dsi(adv7511);
+               if (ret)
+                       goto err_unregister_audio;
+       }
+
        return 0;
 
+err_unregister_audio:
+       adv7511_audio_exit(adv7511);
+       drm_bridge_remove(&adv7511->bridge);
 err_unregister_cec:
        i2c_unregister_device(adv7511->i2c_cec);
        clk_disable_unprepare(adv7511->cec_clk);