diff options
| -rw-r--r-- | drivers/media/platform/exynos-gsc/gsc-core.c | 17 |
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 | ||
| 1003 | static void gsc_clk_put(struct gsc_dev *gsc) | 1003 | static 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 | ||
| 1012 | static int gsc_clk_get(struct gsc_dev *gsc) | 1009 | static 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 | |||
| 1036 | err_clk_prepare: | ||
| 1037 | gsc_clk_put(gsc); | ||
| 1038 | err_clk_get: | ||
| 1039 | return -ENXIO; | ||
| 1040 | } | 1031 | } |
| 1041 | 1032 | ||
| 1042 | static int gsc_m2m_suspend(struct gsc_dev *gsc) | 1033 | static int gsc_m2m_suspend(struct gsc_dev *gsc) |
