aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/tilcdc/tilcdc_slave.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/tilcdc/tilcdc_slave.c')
-rw-r--r--drivers/gpu/drm/tilcdc/tilcdc_slave.c29
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 {
166static void slave_connector_destroy(struct drm_connector *connector) 166static 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
298static 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
306static const struct tilcdc_module_ops slave_module_ops = { 299static 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
372fail_adapter:
373 i2c_put_adapter(slavei2c);
374 return ret;
376} 375}
377 376
378static int slave_remove(struct platform_device *pdev) 377static 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