return -ENODEV;
        }
 
-       err = anx7625_attach_dsi(ctx);
-       if (err) {
-               DRM_DEV_ERROR(dev, "Fail to attach to dsi : %d\n", err);
-               return err;
-       }
-
        if (ctx->pdata.panel_bridge) {
                err = drm_bridge_attach(bridge->encoder,
                                        ctx->pdata.panel_bridge,
        platform->bridge.type = DRM_MODE_CONNECTOR_eDP;
        drm_bridge_add(&platform->bridge);
 
+       ret = anx7625_attach_dsi(platform);
+       if (ret) {
+               DRM_DEV_ERROR(dev, "Fail to attach to dsi : %d\n", ret);
+               goto unregister_bridge;
+       }
+
        DRM_DEV_DEBUG_DRIVER(dev, "probe done\n");
 
        return 0;
 
+unregister_bridge:
+       drm_bridge_remove(&platform->bridge);
+
+       if (!platform->pdata.low_power_mode)
+               pm_runtime_put_sync_suspend(&client->dev);
+
+       anx7625_unregister_i2c_dummy_clients(platform);
+
 free_wq:
        if (platform->workqueue)
                destroy_workqueue(platform->workqueue);