Merge tag 'drm-next-2019-09-27' of git://anongit.freedesktop.org/drm/drm
[linux-2.6-microblaze.git] / drivers / gpu / drm / bridge / adv7511 / adv7511_drv.c
index 98bccac..9e13e46 100644 (file)
@@ -874,6 +874,9 @@ 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);
@@ -978,10 +981,10 @@ static int adv7511_init_cec_regmap(struct adv7511 *adv)
 {
        int ret;
 
-       adv->i2c_cec = i2c_new_secondary_device(adv->i2c_main, "cec",
+       adv->i2c_cec = i2c_new_ancillary_device(adv->i2c_main, "cec",
                                                ADV7511_CEC_I2C_ADDR_DEFAULT);
-       if (!adv->i2c_cec)
-               return -EINVAL;
+       if (IS_ERR(adv->i2c_cec))
+               return PTR_ERR(adv->i2c_cec);
        i2c_set_clientdata(adv->i2c_cec, adv);
 
        adv->regmap_cec = devm_regmap_init_i2c(adv->i2c_cec,
@@ -1162,20 +1165,20 @@ static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
 
        adv7511_packet_disable(adv7511, 0xffff);
 
-       adv7511->i2c_edid = i2c_new_secondary_device(i2c, "edid",
+       adv7511->i2c_edid = i2c_new_ancillary_device(i2c, "edid",
                                        ADV7511_EDID_I2C_ADDR_DEFAULT);
-       if (!adv7511->i2c_edid) {
-               ret = -EINVAL;
+       if (IS_ERR(adv7511->i2c_edid)) {
+               ret = PTR_ERR(adv7511->i2c_edid);
                goto uninit_regulators;
        }
 
        regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR,
                     adv7511->i2c_edid->addr << 1);
 
-       adv7511->i2c_packet = i2c_new_secondary_device(i2c, "packet",
+       adv7511->i2c_packet = i2c_new_ancillary_device(i2c, "packet",
                                        ADV7511_PACKET_I2C_ADDR_DEFAULT);
-       if (!adv7511->i2c_packet) {
-               ret = -EINVAL;
+       if (IS_ERR(adv7511->i2c_packet)) {
+               ret = PTR_ERR(adv7511->i2c_packet);
                goto err_i2c_unregister_edid;
        }
 
@@ -1219,17 +1222,8 @@ 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)