diff options
Diffstat (limited to 'drivers/gpu/drm/tilcdc/tilcdc_slave.c')
-rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_slave.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_slave.c b/drivers/gpu/drm/tilcdc/tilcdc_slave.c index 595068ba2d5e..3775fd49dac4 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_slave.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_slave.c | |||
@@ -166,6 +166,7 @@ struct slave_connector { | |||
166 | static void slave_connector_destroy(struct drm_connector *connector) | 166 | static void slave_connector_destroy(struct drm_connector *connector) |
167 | { | 167 | { |
168 | struct slave_connector *slave_connector = to_slave_connector(connector); | 168 | struct slave_connector *slave_connector = to_slave_connector(connector); |
169 | drm_connector_unregister(connector); | ||
169 | drm_connector_cleanup(connector); | 170 | drm_connector_cleanup(connector); |
170 | kfree(slave_connector); | 171 | kfree(slave_connector); |
171 | } | 172 | } |
@@ -261,7 +262,7 @@ static struct drm_connector *slave_connector_create(struct drm_device *dev, | |||
261 | if (ret) | 262 | if (ret) |
262 | goto fail; | 263 | goto fail; |
263 | 264 | ||
264 | drm_sysfs_connector_add(connector); | 265 | drm_connector_register(connector); |
265 | 266 | ||
266 | return connector; | 267 | return connector; |
267 | 268 | ||
@@ -295,17 +296,8 @@ static int slave_modeset_init(struct tilcdc_module *mod, struct drm_device *dev) | |||
295 | return 0; | 296 | return 0; |
296 | } | 297 | } |
297 | 298 | ||
298 | static void slave_destroy(struct tilcdc_module *mod) | ||
299 | { | ||
300 | struct slave_module *slave_mod = to_slave_module(mod); | ||
301 | |||
302 | tilcdc_module_cleanup(mod); | ||
303 | kfree(slave_mod); | ||
304 | } | ||
305 | |||
306 | static const struct tilcdc_module_ops slave_module_ops = { | 299 | static const struct tilcdc_module_ops slave_module_ops = { |
307 | .modeset_init = slave_modeset_init, | 300 | .modeset_init = slave_modeset_init, |
308 | .destroy = slave_destroy, | ||
309 | }; | 301 | }; |
310 | 302 | ||
311 | /* | 303 | /* |
@@ -355,10 +347,13 @@ static int slave_probe(struct platform_device *pdev) | |||
355 | } | 347 | } |
356 | 348 | ||
357 | slave_mod = kzalloc(sizeof(*slave_mod), GFP_KERNEL); | 349 | slave_mod = kzalloc(sizeof(*slave_mod), GFP_KERNEL); |
358 | if (!slave_mod) | 350 | if (!slave_mod) { |
359 | return -ENOMEM; | 351 | ret = -ENOMEM; |
352 | goto fail_adapter; | ||
353 | } | ||
360 | 354 | ||
361 | mod = &slave_mod->base; | 355 | mod = &slave_mod->base; |
356 | pdev->dev.platform_data = mod; | ||
362 | 357 | ||
363 | mod->preferred_bpp = slave_info.bpp; | 358 | mod->preferred_bpp = slave_info.bpp; |
364 | 359 | ||
@@ -373,10 +368,20 @@ static int slave_probe(struct platform_device *pdev) | |||
373 | tilcdc_slave_probedefer(false); | 368 | tilcdc_slave_probedefer(false); |
374 | 369 | ||
375 | return 0; | 370 | return 0; |
371 | |||
372 | fail_adapter: | ||
373 | i2c_put_adapter(slavei2c); | ||
374 | return ret; | ||
376 | } | 375 | } |
377 | 376 | ||
378 | static int slave_remove(struct platform_device *pdev) | 377 | static int slave_remove(struct platform_device *pdev) |
379 | { | 378 | { |
379 | struct tilcdc_module *mod = dev_get_platdata(&pdev->dev); | ||
380 | struct slave_module *slave_mod = to_slave_module(mod); | ||
381 | |||
382 | tilcdc_module_cleanup(mod); | ||
383 | kfree(slave_mod); | ||
384 | |||
380 | return 0; | 385 | return 0; |
381 | } | 386 | } |
382 | 387 | ||