summaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorSylwester Nawrocki <s.nawrocki@samsung.com>2013-07-19 09:05:17 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-08-24 03:52:23 -0400
commit044c372aeb87946c64f10fe7bbe0f8c4b3222121 (patch)
tree823535c7f5208e501db134bd4b582130bdb8d479 /drivers/media
parentb74bee1584cf88ed28d15520ff7e74bdc69a7f64 (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.c13
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 }