aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/s5p-tv
diff options
context:
space:
mode:
authorMateusz Krawczuk <m.krawczuk@partner.samsung.com>2013-09-21 10:00:49 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-12-04 12:50:16 -0500
commit03ce1a13ccdfa61bf8f3bdcc7f10e2580db71149 (patch)
tree20dd7fc2450cbd41cd4502edd1879f79047c9ef7 /drivers/media/platform/s5p-tv
parenta889c11519b425dce284c6233cfb4629f519ccac (diff)
[media] s5p-tv: mixer: Prepare for common clock framework
Replace clk_enable() by clock_enable_prepare() and clk_disable() with clk_disable_unprepare(). clk_{prepare/unprepare} calls are required by common clock framework and this driver was missed while converting all users of the Samsung original clocks driver to its new implementation based on the common clock API. Signed-off-by: Mateusz Krawczuk <m.krawczuk@partner.samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Tomasz Stanislawski <t.stanislaws@samsung.com> [s.nawrocki@samsung.com: edited commit description] Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/platform/s5p-tv')
-rw-r--r--drivers/media/platform/s5p-tv/mixer_drv.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/drivers/media/platform/s5p-tv/mixer_drv.c b/drivers/media/platform/s5p-tv/mixer_drv.c
index 51805a5e2beb..bc08b5f28e44 100644
--- a/drivers/media/platform/s5p-tv/mixer_drv.c
+++ b/drivers/media/platform/s5p-tv/mixer_drv.c
@@ -347,19 +347,41 @@ static int mxr_runtime_resume(struct device *dev)
347{ 347{
348 struct mxr_device *mdev = to_mdev(dev); 348 struct mxr_device *mdev = to_mdev(dev);
349 struct mxr_resources *res = &mdev->res; 349 struct mxr_resources *res = &mdev->res;
350 int ret;
350 351
351 mxr_dbg(mdev, "resume - start\n"); 352 mxr_dbg(mdev, "resume - start\n");
352 mutex_lock(&mdev->mutex); 353 mutex_lock(&mdev->mutex);
353 /* turn clocks on */ 354 /* turn clocks on */
354 clk_enable(res->mixer); 355 ret = clk_prepare_enable(res->mixer);
355 clk_enable(res->vp); 356 if (ret < 0) {
356 clk_enable(res->sclk_mixer); 357 dev_err(mdev->dev, "clk_prepare_enable(mixer) failed\n");
358 goto fail;
359 }
360 ret = clk_prepare_enable(res->vp);
361 if (ret < 0) {
362 dev_err(mdev->dev, "clk_prepare_enable(vp) failed\n");
363 goto fail_mixer;
364 }
365 ret = clk_prepare_enable(res->sclk_mixer);
366 if (ret < 0) {
367 dev_err(mdev->dev, "clk_prepare_enable(sclk_mixer) failed\n");
368 goto fail_vp;
369 }
357 /* apply default configuration */ 370 /* apply default configuration */
358 mxr_reg_reset(mdev); 371 mxr_reg_reset(mdev);
359 mxr_dbg(mdev, "resume - finished\n"); 372 mxr_dbg(mdev, "resume - finished\n");
360 373
361 mutex_unlock(&mdev->mutex); 374 mutex_unlock(&mdev->mutex);
362 return 0; 375 return 0;
376
377fail_vp:
378 clk_disable_unprepare(res->vp);
379fail_mixer:
380 clk_disable_unprepare(res->mixer);
381fail:
382 mutex_unlock(&mdev->mutex);
383 dev_err(mdev->dev, "resume failed\n");
384 return ret;
363} 385}
364 386
365static int mxr_runtime_suspend(struct device *dev) 387static int mxr_runtime_suspend(struct device *dev)
@@ -369,9 +391,9 @@ static int mxr_runtime_suspend(struct device *dev)
369 mxr_dbg(mdev, "suspend - start\n"); 391 mxr_dbg(mdev, "suspend - start\n");
370 mutex_lock(&mdev->mutex); 392 mutex_lock(&mdev->mutex);
371 /* turn clocks off */ 393 /* turn clocks off */
372 clk_disable(res->sclk_mixer); 394 clk_disable_unprepare(res->sclk_mixer);
373 clk_disable(res->vp); 395 clk_disable_unprepare(res->vp);
374 clk_disable(res->mixer); 396 clk_disable_unprepare(res->mixer);
375 mutex_unlock(&mdev->mutex); 397 mutex_unlock(&mdev->mutex);
376 mxr_dbg(mdev, "suspend - finished\n"); 398 mxr_dbg(mdev, "suspend - finished\n");
377 return 0; 399 return 0;