diff options
Diffstat (limited to 'drivers/gpu/drm/drm_encoder_slave.c')
| -rw-r--r-- | drivers/gpu/drm/drm_encoder_slave.c | 15 | 
1 files changed, 5 insertions, 10 deletions
| diff --git a/drivers/gpu/drm/drm_encoder_slave.c b/drivers/gpu/drm/drm_encoder_slave.c index cf804389f5ec..e464429d32df 100644 --- a/drivers/gpu/drm/drm_encoder_slave.c +++ b/drivers/gpu/drm/drm_encoder_slave.c @@ -61,13 +61,8 @@ int drm_i2c_encoder_init(struct drm_device *dev,  	request_module("%s%s", I2C_MODULE_PREFIX, info->type); -	client = i2c_new_device(adap, info); -	if (!client) { -		err = -ENOMEM; -		goto fail; -	} - -	if (!client->dev.driver) { +	client = i2c_new_client_device(adap, info); +	if (!i2c_client_has_driver(client)) {  		err = -ENODEV;  		goto fail_unregister;  	} @@ -84,7 +79,7 @@ int drm_i2c_encoder_init(struct drm_device *dev,  	err = encoder_drv->encoder_init(client, dev, encoder);  	if (err) -		goto fail_unregister; +		goto fail_module_put;  	if (info->platform_data)  		encoder->slave_funcs->set_config(&encoder->base, @@ -92,10 +87,10 @@ int drm_i2c_encoder_init(struct drm_device *dev,  	return 0; +fail_module_put: +	module_put(module);  fail_unregister:  	i2c_unregister_device(client); -	module_put(module); -fail:  	return err;  }  EXPORT_SYMBOL(drm_i2c_encoder_init); |