Commit f18acdeacbcf038df3c9b03a96193cb01ca45cbb
Committed by
Linus Torvalds
1 parent
0c98082621
Exists in
master
and in
20 other branches
drivers/video/exynos/exynos_mipi_dsi.c: use devm_* APIs
devm_* APIs are device managed and make exit and cleanup code simpler. While at it also remove some unused labels and fix an error path. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Acked-by: Donghwa Lee <dh09.lee@samsung.com> Cc: Inki Dae <inki.dae@samsung.com> Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 2 changed files with 17 additions and 52 deletions Side-by-side Diff
drivers/video/exynos/exynos_mipi_dsi.c
... | ... | @@ -338,7 +338,8 @@ |
338 | 338 | struct mipi_dsim_ddi *dsim_ddi; |
339 | 339 | int ret = -EINVAL; |
340 | 340 | |
341 | - dsim = kzalloc(sizeof(struct mipi_dsim_device), GFP_KERNEL); | |
341 | + dsim = devm_kzalloc(&pdev->dev, sizeof(struct mipi_dsim_device), | |
342 | + GFP_KERNEL); | |
342 | 343 | if (!dsim) { |
343 | 344 | dev_err(&pdev->dev, "failed to allocate dsim object.\n"); |
344 | 345 | return -ENOMEM; |
345 | 346 | |
... | ... | @@ -352,13 +353,13 @@ |
352 | 353 | dsim_pd = (struct mipi_dsim_platform_data *)dsim->pd; |
353 | 354 | if (dsim_pd == NULL) { |
354 | 355 | dev_err(&pdev->dev, "failed to get platform data for dsim.\n"); |
355 | - goto err_clock_get; | |
356 | + return -EINVAL; | |
356 | 357 | } |
357 | 358 | /* get mipi_dsim_config. */ |
358 | 359 | dsim_config = dsim_pd->dsim_config; |
359 | 360 | if (dsim_config == NULL) { |
360 | 361 | dev_err(&pdev->dev, "failed to get dsim config data.\n"); |
361 | - goto err_clock_get; | |
362 | + return -EINVAL; | |
362 | 363 | } |
363 | 364 | |
364 | 365 | dsim->dsim_config = dsim_config; |
365 | 366 | |
366 | 367 | |
367 | 368 | |
368 | 369 | |
369 | 370 | |
370 | 371 | |
... | ... | @@ -366,41 +367,28 @@ |
366 | 367 | |
367 | 368 | mutex_init(&dsim->lock); |
368 | 369 | |
369 | - ret = regulator_bulk_get(&pdev->dev, ARRAY_SIZE(supplies), supplies); | |
370 | + ret = devm_regulator_bulk_get(&pdev->dev, ARRAY_SIZE(supplies), | |
371 | + supplies); | |
370 | 372 | if (ret) { |
371 | 373 | dev_err(&pdev->dev, "Failed to get regulators: %d\n", ret); |
372 | - goto err_clock_get; | |
374 | + return ret; | |
373 | 375 | } |
374 | 376 | |
375 | - dsim->clock = clk_get(&pdev->dev, "dsim0"); | |
377 | + dsim->clock = devm_clk_get(&pdev->dev, "dsim0"); | |
376 | 378 | if (IS_ERR(dsim->clock)) { |
377 | 379 | dev_err(&pdev->dev, "failed to get dsim clock source\n"); |
378 | - ret = -ENODEV; | |
379 | - goto err_clock_get; | |
380 | + return -ENODEV; | |
380 | 381 | } |
381 | 382 | |
382 | 383 | clk_enable(dsim->clock); |
383 | 384 | |
384 | 385 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
385 | - if (!res) { | |
386 | - dev_err(&pdev->dev, "failed to get io memory region\n"); | |
387 | - ret = -ENODEV; | |
388 | - goto err_platform_get; | |
389 | - } | |
390 | 386 | |
391 | - dsim->res = request_mem_region(res->start, resource_size(res), | |
392 | - dev_name(&pdev->dev)); | |
393 | - if (!dsim->res) { | |
394 | - dev_err(&pdev->dev, "failed to request io memory region\n"); | |
395 | - ret = -ENOMEM; | |
396 | - goto err_mem_region; | |
397 | - } | |
398 | - | |
399 | - dsim->reg_base = ioremap(res->start, resource_size(res)); | |
387 | + dsim->reg_base = devm_request_and_ioremap(&pdev->dev, res); | |
400 | 388 | if (!dsim->reg_base) { |
401 | 389 | dev_err(&pdev->dev, "failed to remap io region\n"); |
402 | 390 | ret = -ENOMEM; |
403 | - goto err_ioremap; | |
391 | + goto error; | |
404 | 392 | } |
405 | 393 | |
406 | 394 | mutex_init(&dsim->lock); |
407 | 395 | |
408 | 396 | |
409 | 397 | |
... | ... | @@ -410,26 +398,27 @@ |
410 | 398 | if (!dsim_ddi) { |
411 | 399 | dev_err(&pdev->dev, "mipi_dsim_ddi object not found.\n"); |
412 | 400 | ret = -EINVAL; |
413 | - goto err_bind; | |
401 | + goto error; | |
414 | 402 | } |
415 | 403 | |
416 | 404 | dsim->irq = platform_get_irq(pdev, 0); |
417 | 405 | if (IS_ERR_VALUE(dsim->irq)) { |
418 | 406 | dev_err(&pdev->dev, "failed to request dsim irq resource\n"); |
419 | 407 | ret = -EINVAL; |
420 | - goto err_platform_get_irq; | |
408 | + goto error; | |
421 | 409 | } |
422 | 410 | |
423 | 411 | init_completion(&dsim_wr_comp); |
424 | 412 | init_completion(&dsim_rd_comp); |
425 | 413 | platform_set_drvdata(pdev, dsim); |
426 | 414 | |
427 | - ret = request_irq(dsim->irq, exynos_mipi_dsi_interrupt_handler, | |
415 | + ret = devm_request_irq(&pdev->dev, dsim->irq, | |
416 | + exynos_mipi_dsi_interrupt_handler, | |
428 | 417 | IRQF_SHARED, dev_name(&pdev->dev), dsim); |
429 | 418 | if (ret != 0) { |
430 | 419 | dev_err(&pdev->dev, "failed to request dsim irq\n"); |
431 | 420 | ret = -EINVAL; |
432 | - goto err_bind; | |
421 | + goto error; | |
433 | 422 | } |
434 | 423 | |
435 | 424 | /* enable interrupts */ |
436 | 425 | |
... | ... | @@ -471,22 +460,8 @@ |
471 | 460 | |
472 | 461 | return 0; |
473 | 462 | |
474 | -err_bind: | |
475 | - iounmap(dsim->reg_base); | |
476 | - | |
477 | -err_ioremap: | |
478 | - release_mem_region(dsim->res->start, resource_size(dsim->res)); | |
479 | - | |
480 | -err_mem_region: | |
481 | - release_resource(dsim->res); | |
482 | - | |
483 | -err_platform_get: | |
463 | +error: | |
484 | 464 | clk_disable(dsim->clock); |
485 | - clk_put(dsim->clock); | |
486 | -err_clock_get: | |
487 | - kfree(dsim); | |
488 | - | |
489 | -err_platform_get_irq: | |
490 | 465 | return ret; |
491 | 466 | } |
492 | 467 | |
493 | 468 | |
494 | 469 | |
... | ... | @@ -496,14 +471,8 @@ |
496 | 471 | struct mipi_dsim_ddi *dsim_ddi, *next; |
497 | 472 | struct mipi_dsim_lcd_driver *dsim_lcd_drv; |
498 | 473 | |
499 | - iounmap(dsim->reg_base); | |
500 | - | |
501 | 474 | clk_disable(dsim->clock); |
502 | - clk_put(dsim->clock); | |
503 | 475 | |
504 | - release_resource(dsim->res); | |
505 | - release_mem_region(dsim->res->start, resource_size(dsim->res)); | |
506 | - | |
507 | 476 | list_for_each_entry_safe(dsim_ddi, next, &dsim_ddi_list, list) { |
508 | 477 | if (dsim_ddi) { |
509 | 478 | if (dsim->id != dsim_ddi->bus_id) |
... | ... | @@ -517,9 +486,6 @@ |
517 | 486 | kfree(dsim_ddi); |
518 | 487 | } |
519 | 488 | } |
520 | - | |
521 | - regulator_bulk_free(ARRAY_SIZE(supplies), supplies); | |
522 | - kfree(dsim); | |
523 | 489 | |
524 | 490 | return 0; |
525 | 491 | } |