diff options
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_rotator.c')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_rotator.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_rotator.c b/drivers/gpu/drm/exynos/exynos_drm_rotator.c index 947f09f15ad1..9b6c70964d71 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_rotator.c +++ b/drivers/gpu/drm/exynos/exynos_drm_rotator.c | |||
@@ -666,8 +666,8 @@ static int rotator_probe(struct platform_device *pdev) | |||
666 | return rot->irq; | 666 | return rot->irq; |
667 | } | 667 | } |
668 | 668 | ||
669 | ret = request_threaded_irq(rot->irq, NULL, rotator_irq_handler, | 669 | ret = devm_request_threaded_irq(dev, rot->irq, NULL, |
670 | IRQF_ONESHOT, "drm_rotator", rot); | 670 | rotator_irq_handler, IRQF_ONESHOT, "drm_rotator", rot); |
671 | if (ret < 0) { | 671 | if (ret < 0) { |
672 | dev_err(dev, "failed to request irq\n"); | 672 | dev_err(dev, "failed to request irq\n"); |
673 | return ret; | 673 | return ret; |
@@ -676,8 +676,7 @@ static int rotator_probe(struct platform_device *pdev) | |||
676 | rot->clock = devm_clk_get(dev, "rotator"); | 676 | rot->clock = devm_clk_get(dev, "rotator"); |
677 | if (IS_ERR(rot->clock)) { | 677 | if (IS_ERR(rot->clock)) { |
678 | dev_err(dev, "failed to get clock\n"); | 678 | dev_err(dev, "failed to get clock\n"); |
679 | ret = PTR_ERR(rot->clock); | 679 | return PTR_ERR(rot->clock); |
680 | goto err_clk_get; | ||
681 | } | 680 | } |
682 | 681 | ||
683 | pm_runtime_enable(dev); | 682 | pm_runtime_enable(dev); |
@@ -709,10 +708,7 @@ static int rotator_probe(struct platform_device *pdev) | |||
709 | return 0; | 708 | return 0; |
710 | 709 | ||
711 | err_ippdrv_register: | 710 | err_ippdrv_register: |
712 | devm_kfree(dev, ippdrv->prop_list); | ||
713 | pm_runtime_disable(dev); | 711 | pm_runtime_disable(dev); |
714 | err_clk_get: | ||
715 | free_irq(rot->irq, rot); | ||
716 | return ret; | 712 | return ret; |
717 | } | 713 | } |
718 | 714 | ||
@@ -722,13 +718,10 @@ static int rotator_remove(struct platform_device *pdev) | |||
722 | struct rot_context *rot = dev_get_drvdata(dev); | 718 | struct rot_context *rot = dev_get_drvdata(dev); |
723 | struct exynos_drm_ippdrv *ippdrv = &rot->ippdrv; | 719 | struct exynos_drm_ippdrv *ippdrv = &rot->ippdrv; |
724 | 720 | ||
725 | devm_kfree(dev, ippdrv->prop_list); | ||
726 | exynos_drm_ippdrv_unregister(ippdrv); | 721 | exynos_drm_ippdrv_unregister(ippdrv); |
727 | 722 | ||
728 | pm_runtime_disable(dev); | 723 | pm_runtime_disable(dev); |
729 | 724 | ||
730 | free_irq(rot->irq, rot); | ||
731 | |||
732 | return 0; | 725 | return 0; |
733 | } | 726 | } |
734 | 727 | ||