Merge branch 'i2c/for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
[linux-2.6-block.git] / drivers / gpu / drm / bridge / adv7511 / adv7511_drv.c
index 9e13e466e72c09a52d84ee40ead55cef7b2d26a0..3d61c4fb4dec0f6fc108a7d7c1c057a5ac99aa12 100644 (file)
@@ -874,9 +874,6 @@ static int adv7511_bridge_attach(struct drm_bridge *bridge)
                                 &adv7511_connector_helper_funcs);
        drm_connector_attach_encoder(&adv->connector, bridge->encoder);
 
-       if (adv->type == ADV7533)
-               ret = adv7533_attach_dsi(adv);
-
        if (adv->i2c_main->irq)
                regmap_write(adv->regmap, ADV7511_REG_INT_ENABLE(0),
                             ADV7511_INT0_HPD);
@@ -1222,8 +1219,17 @@ static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
        drm_bridge_add(&adv7511->bridge);
 
        adv7511_audio_init(dev, adv7511);
+
+       if (adv7511->type == ADV7533) {
+               ret = adv7533_attach_dsi(adv7511);
+               if (ret)
+                       goto err_remove_bridge;
+       }
+
        return 0;
 
+err_remove_bridge:
+       drm_bridge_remove(&adv7511->bridge);
 err_unregister_cec:
        i2c_unregister_device(adv7511->i2c_cec);
        if (adv7511->cec_clk)