diff options
author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2013-07-19 09:05:17 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2013-08-24 03:52:23 -0400 |
commit | 044c372aeb87946c64f10fe7bbe0f8c4b3222121 (patch) | |
tree | 823535c7f5208e501db134bd4b582130bdb8d479 /drivers/media | |
parent | b74bee1584cf88ed28d15520ff7e74bdc69a7f64 (diff) |
[media] exynos4-is: Simplify sclk_cam clocks handling
Use clk_prepare_enable()/clk_disable_unprepare() instead of
separately prearing/unparing the clk_cam clocks. This simplifies
the code that is now mostly not going to be used, function
__fimc_md_set_camclk() is only left for S5PV210 platform which
is not yet converted to Device Tree.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/platform/exynos4-is/media-dev.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c index 42f121ca91ee..ef6642b3fab5 100644 --- a/drivers/media/platform/exynos4-is/media-dev.c +++ b/drivers/media/platform/exynos4-is/media-dev.c | |||
@@ -1150,7 +1150,6 @@ static void fimc_md_put_clocks(struct fimc_md *fmd) | |||
1150 | while (--i >= 0) { | 1150 | while (--i >= 0) { |
1151 | if (IS_ERR(fmd->camclk[i].clock)) | 1151 | if (IS_ERR(fmd->camclk[i].clock)) |
1152 | continue; | 1152 | continue; |
1153 | clk_unprepare(fmd->camclk[i].clock); | ||
1154 | clk_put(fmd->camclk[i].clock); | 1153 | clk_put(fmd->camclk[i].clock); |
1155 | fmd->camclk[i].clock = ERR_PTR(-EINVAL); | 1154 | fmd->camclk[i].clock = ERR_PTR(-EINVAL); |
1156 | } | 1155 | } |
@@ -1169,7 +1168,7 @@ static int fimc_md_get_clocks(struct fimc_md *fmd) | |||
1169 | struct device *dev = NULL; | 1168 | struct device *dev = NULL; |
1170 | char clk_name[32]; | 1169 | char clk_name[32]; |
1171 | struct clk *clock; | 1170 | struct clk *clock; |
1172 | int ret, i; | 1171 | int i, ret = 0; |
1173 | 1172 | ||
1174 | for (i = 0; i < FIMC_MAX_CAMCLKS; i++) | 1173 | for (i = 0; i < FIMC_MAX_CAMCLKS; i++) |
1175 | fmd->camclk[i].clock = ERR_PTR(-EINVAL); | 1174 | fmd->camclk[i].clock = ERR_PTR(-EINVAL); |
@@ -1187,12 +1186,6 @@ static int fimc_md_get_clocks(struct fimc_md *fmd) | |||
1187 | ret = PTR_ERR(clock); | 1186 | ret = PTR_ERR(clock); |
1188 | break; | 1187 | break; |
1189 | } | 1188 | } |
1190 | ret = clk_prepare(clock); | ||
1191 | if (ret < 0) { | ||
1192 | clk_put(clock); | ||
1193 | fmd->camclk[i].clock = ERR_PTR(-EINVAL); | ||
1194 | break; | ||
1195 | } | ||
1196 | fmd->camclk[i].clock = clock; | 1189 | fmd->camclk[i].clock = clock; |
1197 | } | 1190 | } |
1198 | if (ret) | 1191 | if (ret) |
@@ -1249,7 +1242,7 @@ static int __fimc_md_set_camclk(struct fimc_md *fmd, | |||
1249 | ret = pm_runtime_get_sync(fmd->pmf); | 1242 | ret = pm_runtime_get_sync(fmd->pmf); |
1250 | if (ret < 0) | 1243 | if (ret < 0) |
1251 | return ret; | 1244 | return ret; |
1252 | ret = clk_enable(camclk->clock); | 1245 | ret = clk_prepare_enable(camclk->clock); |
1253 | dbg("Enabled camclk %d: f: %lu", si->clk_id, | 1246 | dbg("Enabled camclk %d: f: %lu", si->clk_id, |
1254 | clk_get_rate(camclk->clock)); | 1247 | clk_get_rate(camclk->clock)); |
1255 | } | 1248 | } |
@@ -1260,7 +1253,7 @@ static int __fimc_md_set_camclk(struct fimc_md *fmd, | |||
1260 | return 0; | 1253 | return 0; |
1261 | 1254 | ||
1262 | if (--camclk->use_count == 0) { | 1255 | if (--camclk->use_count == 0) { |
1263 | clk_disable(camclk->clock); | 1256 | clk_disable_unprepare(camclk->clock); |
1264 | pm_runtime_put(fmd->pmf); | 1257 | pm_runtime_put(fmd->pmf); |
1265 | dbg("Disabled camclk %d", si->clk_id); | 1258 | dbg("Disabled camclk %d", si->clk_id); |
1266 | } | 1259 | } |