aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2012-12-24 03:33:51 -0500
committerInki Dae <inki.dae@samsung.com>2013-01-04 01:54:35 -0500
commit5cbd419cc533a821448fa47fc16f50990eef296f (patch)
treedd64eef88bff95917f76a636d58826bc6c7e8f23 /drivers/gpu/drm/exynos
parenta8527cf5c344df60485e2c0a9196f0550550ae00 (diff)
drm/exynos: Use devm_clk_get in exynos_drm_gsc.c
This eliminates the need for explicit clk_put and makes the cleanup and exit path code simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_gsc.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c
index 04cc46c37c7c..e8ebd6ea1cd6 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gsc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c
@@ -1684,7 +1684,7 @@ static int __devinit gsc_probe(struct platform_device *pdev)
1684 return -ENOMEM; 1684 return -ENOMEM;
1685 1685
1686 /* clock control */ 1686 /* clock control */
1687 ctx->gsc_clk = clk_get(dev, "gscl"); 1687 ctx->gsc_clk = devm_clk_get(dev, "gscl");
1688 if (IS_ERR(ctx->gsc_clk)) { 1688 if (IS_ERR(ctx->gsc_clk)) {
1689 dev_err(dev, "failed to get gsc clock.\n"); 1689 dev_err(dev, "failed to get gsc clock.\n");
1690 return PTR_ERR(ctx->gsc_clk); 1690 return PTR_ERR(ctx->gsc_clk);
@@ -1695,16 +1695,14 @@ static int __devinit gsc_probe(struct platform_device *pdev)
1695 ctx->regs = devm_request_and_ioremap(dev, ctx->regs_res); 1695 ctx->regs = devm_request_and_ioremap(dev, ctx->regs_res);
1696 if (!ctx->regs) { 1696 if (!ctx->regs) {
1697 dev_err(dev, "failed to map registers.\n"); 1697 dev_err(dev, "failed to map registers.\n");
1698 ret = -ENXIO; 1698 return -ENXIO;
1699 goto err_clk;
1700 } 1699 }
1701 1700
1702 /* resource irq */ 1701 /* resource irq */
1703 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); 1702 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1704 if (!res) { 1703 if (!res) {
1705 dev_err(dev, "failed to request irq resource.\n"); 1704 dev_err(dev, "failed to request irq resource.\n");
1706 ret = -ENOENT; 1705 return -ENOENT;
1707 goto err_clk;
1708 } 1706 }
1709 1707
1710 ctx->irq = res->start; 1708 ctx->irq = res->start;
@@ -1712,7 +1710,7 @@ static int __devinit gsc_probe(struct platform_device *pdev)
1712 IRQF_ONESHOT, "drm_gsc", ctx); 1710 IRQF_ONESHOT, "drm_gsc", ctx);
1713 if (ret < 0) { 1711 if (ret < 0) {
1714 dev_err(dev, "failed to request irq.\n"); 1712 dev_err(dev, "failed to request irq.\n");
1715 goto err_clk; 1713 return ret;
1716 } 1714 }
1717 1715
1718 /* context initailization */ 1716 /* context initailization */
@@ -1756,8 +1754,6 @@ err_ippdrv_register:
1756 pm_runtime_disable(dev); 1754 pm_runtime_disable(dev);
1757err_get_irq: 1755err_get_irq:
1758 free_irq(ctx->irq, ctx); 1756 free_irq(ctx->irq, ctx);
1759err_clk:
1760 clk_put(ctx->gsc_clk);
1761 return ret; 1757 return ret;
1762} 1758}
1763 1759
@@ -1775,7 +1771,6 @@ static int __devexit gsc_remove(struct platform_device *pdev)
1775 pm_runtime_disable(dev); 1771 pm_runtime_disable(dev);
1776 1772
1777 free_irq(ctx->irq, ctx); 1773 free_irq(ctx->irq, ctx);
1778 clk_put(ctx->gsc_clk);
1779 1774
1780 return 0; 1775 return 0;
1781} 1776}