aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/platform/exynos-gsc/gsc-core.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
index c8b82c006bd0..0c22ad570500 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.c
+++ b/drivers/media/platform/exynos-gsc/gsc-core.c
@@ -1002,11 +1002,8 @@ static void *gsc_get_drv_data(struct platform_device *pdev)
1002 1002
1003static void gsc_clk_put(struct gsc_dev *gsc) 1003static void gsc_clk_put(struct gsc_dev *gsc)
1004{ 1004{
1005 if (!IS_ERR(gsc->clock)) { 1005 if (!IS_ERR(gsc->clock))
1006 clk_unprepare(gsc->clock); 1006 clk_unprepare(gsc->clock);
1007 clk_put(gsc->clock);
1008 gsc->clock = NULL;
1009 }
1010} 1007}
1011 1008
1012static int gsc_clk_get(struct gsc_dev *gsc) 1009static int gsc_clk_get(struct gsc_dev *gsc)
@@ -1015,28 +1012,22 @@ static int gsc_clk_get(struct gsc_dev *gsc)
1015 1012
1016 dev_dbg(&gsc->pdev->dev, "gsc_clk_get Called\n"); 1013 dev_dbg(&gsc->pdev->dev, "gsc_clk_get Called\n");
1017 1014
1018 gsc->clock = clk_get(&gsc->pdev->dev, GSC_CLOCK_GATE_NAME); 1015 gsc->clock = devm_clk_get(&gsc->pdev->dev, GSC_CLOCK_GATE_NAME);
1019 if (IS_ERR(gsc->clock)) { 1016 if (IS_ERR(gsc->clock)) {
1020 dev_err(&gsc->pdev->dev, "failed to get clock~~~: %s\n", 1017 dev_err(&gsc->pdev->dev, "failed to get clock~~~: %s\n",
1021 GSC_CLOCK_GATE_NAME); 1018 GSC_CLOCK_GATE_NAME);
1022 goto err_clk_get; 1019 return PTR_ERR(gsc->clock);
1023 } 1020 }
1024 1021
1025 ret = clk_prepare(gsc->clock); 1022 ret = clk_prepare(gsc->clock);
1026 if (ret < 0) { 1023 if (ret < 0) {
1027 dev_err(&gsc->pdev->dev, "clock prepare failed for clock: %s\n", 1024 dev_err(&gsc->pdev->dev, "clock prepare failed for clock: %s\n",
1028 GSC_CLOCK_GATE_NAME); 1025 GSC_CLOCK_GATE_NAME);
1029 clk_put(gsc->clock);
1030 gsc->clock = ERR_PTR(-EINVAL); 1026 gsc->clock = ERR_PTR(-EINVAL);
1031 goto err_clk_prepare; 1027 return ret;
1032 } 1028 }
1033 1029
1034 return 0; 1030 return 0;
1035
1036err_clk_prepare:
1037 gsc_clk_put(gsc);
1038err_clk_get:
1039 return -ENXIO;
1040} 1031}
1041 1032
1042static int gsc_m2m_suspend(struct gsc_dev *gsc) 1033static int gsc_m2m_suspend(struct gsc_dev *gsc)