Re: [RESEND-PATCH] media:davinci: clk - {prepare/unprepare} for common clk

2012-10-27 Thread Sekhar Nori
Hi Murali,

On 10/26/2012 9:22 PM, Murali Karicheri wrote:
 On 10/25/2012 09:12 AM, Prabhakar Lad wrote:
 Hi Murali,

 Thanks for the patch.  I'll  queue this patch for 3.8.
 Please check with Sekhar as well. This is a preparation patch for common
 clk framework support. ALso fixes some bugs on the existing code. As the
 clk
 patches are dependent on these patches, I would suggest you queue this
 against 3.7 rcx.

The -rc cycle is for fixes only so this cannot get merged into v3.7
as-is. If the patch has some fixes embedded, its a good idea to separate
them out (and have the feature parts come after the fixes in the patch
series) so they can be considered for -rc cycle. The current description
does not detail what the issue is and what its impact is so when you do
separate it out, please mention those as well. It will help determine
the severity of the issue and convince maintainers to include it in v3.7.

Thanks,
Sekhar
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RESEND-PATCH] media:davinci: clk - {prepare/unprepare} for common clk

2012-10-27 Thread Prabhakar Lad
Sekhar,

On Sat, Oct 27, 2012 at 2:14 PM, Sekhar Nori nsek...@ti.com wrote:
 Hi Murali,

 On 10/26/2012 9:22 PM, Murali Karicheri wrote:
 On 10/25/2012 09:12 AM, Prabhakar Lad wrote:
 Hi Murali,

 Thanks for the patch.  I'll  queue this patch for 3.8.
 Please check with Sekhar as well. This is a preparation patch for common
 clk framework support. ALso fixes some bugs on the existing code. As the
 clk
 patches are dependent on these patches, I would suggest you queue this
 against 3.7 rcx.

 The -rc cycle is for fixes only so this cannot get merged into v3.7
 as-is. If the patch has some fixes embedded, its a good idea to separate
 them out (and have the feature parts come after the fixes in the patch
 series) so they can be considered for -rc cycle. The current description
 does not detail what the issue is and what its impact is so when you do
 separate it out, please mention those as well. It will help determine
 the severity of the issue and convince maintainers to include it in v3.7.

Splitting the patch into fixes + features would make sense, Since the features
patch would again change the same piece of code changed by the fixes patch.
The fixes are not so critical enough so as to go into the rc-cycle. I think
merging in 3.8 would be a good idea.

Regards,
--Prabhakar

 Thanks,
 Sekhar
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RESEND-PATCH] media:davinci: clk - {prepare/unprepare} for common clk

2012-10-26 Thread Murali Karicheri

On 10/25/2012 09:12 AM, Prabhakar Lad wrote:

Hi Murali,

Thanks for the patch.  I'll  queue this patch for 3.8.

On Mon, Oct 22, 2012 at 9:06 PM, Murali Karicheri m-kariche...@ti.com wrote:

As a first step towards migrating davinci platforms to use common clock
framework, replace all instances of clk_enable() with clk_prepare_enable()
and clk_disable() with clk_disable_unprepare().

Also fixes some issues related to clk clean up in the driver

Signed-off-by: Murali Karicheri m-kariche...@ti.com

Acked-by: Lad, Prabhakar prabhakar@ti.com
Tested-by: Lad, Prabhakar prabhakar@ti.com

Regards,
--Prabhakar


---
rebased to v3.7-rc1

  drivers/media/platform/davinci/dm355_ccdc.c  |8 ++--
  drivers/media/platform/davinci/dm644x_ccdc.c |   16 ++--
  drivers/media/platform/davinci/isif.c|5 -
  drivers/media/platform/davinci/vpbe.c|   10 +++---
  drivers/media/platform/davinci/vpif.c|8 
  5 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/drivers/media/platform/davinci/dm355_ccdc.c 
b/drivers/media/platform/davinci/dm355_ccdc.c
index ce0e413..030950d 100644
--- a/drivers/media/platform/davinci/dm355_ccdc.c
+++ b/drivers/media/platform/davinci/dm355_ccdc.c
@@ -1003,7 +1003,7 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.mclk);
 goto fail_nomap;
 }
-   if (clk_enable(ccdc_cfg.mclk)) {
+   if (clk_prepare_enable(ccdc_cfg.mclk)) {
 status = -ENODEV;
 goto fail_mclk;
 }
@@ -1014,7 +1014,7 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.sclk);
 goto fail_mclk;
 }
-   if (clk_enable(ccdc_cfg.sclk)) {
+   if (clk_prepare_enable(ccdc_cfg.sclk)) {
 status = -ENODEV;
 goto fail_sclk;
 }
@@ -1034,8 +1034,10 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
 printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
 return 0;
  fail_sclk:
+   clk_disable_unprepare(ccdc_cfg.sclk);
 clk_put(ccdc_cfg.sclk);
  fail_mclk:
+   clk_disable_unprepare(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.mclk);
  fail_nomap:
 iounmap(ccdc_cfg.base_addr);
@@ -1050,6 +1052,8 @@ static int dm355_ccdc_remove(struct platform_device *pdev)
  {
 struct resource *res;

+   clk_disable_unprepare(ccdc_cfg.sclk);
+   clk_disable_unprepare(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.sclk);
 iounmap(ccdc_cfg.base_addr);
diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c 
b/drivers/media/platform/davinci/dm644x_ccdc.c
index ee7942b..0215ab6 100644
--- a/drivers/media/platform/davinci/dm644x_ccdc.c
+++ b/drivers/media/platform/davinci/dm644x_ccdc.c
@@ -994,7 +994,7 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.mclk);
 goto fail_nomap;
 }
-   if (clk_enable(ccdc_cfg.mclk)) {
+   if (clk_prepare_enable(ccdc_cfg.mclk)) {
 status = -ENODEV;
 goto fail_mclk;
 }
@@ -1005,7 +1005,7 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.sclk);
 goto fail_mclk;
 }
-   if (clk_enable(ccdc_cfg.sclk)) {
+   if (clk_prepare_enable(ccdc_cfg.sclk)) {
 status = -ENODEV;
 goto fail_sclk;
 }
@@ -1013,8 +1013,10 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
 printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
 return 0;
  fail_sclk:
+   clk_disable_unprepare(ccdc_cfg.sclk);
 clk_put(ccdc_cfg.sclk);
  fail_mclk:
+   clk_disable_unprepare(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.mclk);
  fail_nomap:
 iounmap(ccdc_cfg.base_addr);
@@ -1029,6 +1031,8 @@ static int dm644x_ccdc_remove(struct platform_device 
*pdev)
  {
 struct resource *res;

+   clk_disable_unprepare(ccdc_cfg.mclk);
+   clk_disable_unprepare(ccdc_cfg.sclk);
 clk_put(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.sclk);
 iounmap(ccdc_cfg.base_addr);
@@ -1046,8 +1050,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
 /* Disable CCDC */
 ccdc_enable(0);
 /* Disable both master and slave clock */
-   clk_disable(ccdc_cfg.mclk);
-   clk_disable(ccdc_cfg.sclk);
+   clk_disable_unprepare(ccdc_cfg.mclk);
+   clk_disable_unprepare(ccdc_cfg.sclk);

 return 0;
  }
@@ -1055,8 +1059,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
  static int dm644x_ccdc_resume(struct device *dev)
  {
 /* Enable both master and slave clock */
-   clk_enable(ccdc_cfg.mclk);
-   

Re: [RESEND-PATCH] media:davinci: clk - {prepare/unprepare} for common clk

2012-10-25 Thread Prabhakar Lad
Hi Murali,

Thanks for the patch.  I'll  queue this patch for 3.8.

On Mon, Oct 22, 2012 at 9:06 PM, Murali Karicheri m-kariche...@ti.com wrote:
 As a first step towards migrating davinci platforms to use common clock
 framework, replace all instances of clk_enable() with clk_prepare_enable()
 and clk_disable() with clk_disable_unprepare().

 Also fixes some issues related to clk clean up in the driver

 Signed-off-by: Murali Karicheri m-kariche...@ti.com

Acked-by: Lad, Prabhakar prabhakar@ti.com
Tested-by: Lad, Prabhakar prabhakar@ti.com

Regards,
--Prabhakar

 ---
 rebased to v3.7-rc1

  drivers/media/platform/davinci/dm355_ccdc.c  |8 ++--
  drivers/media/platform/davinci/dm644x_ccdc.c |   16 ++--
  drivers/media/platform/davinci/isif.c|5 -
  drivers/media/platform/davinci/vpbe.c|   10 +++---
  drivers/media/platform/davinci/vpif.c|8 
  5 files changed, 31 insertions(+), 16 deletions(-)

 diff --git a/drivers/media/platform/davinci/dm355_ccdc.c 
 b/drivers/media/platform/davinci/dm355_ccdc.c
 index ce0e413..030950d 100644
 --- a/drivers/media/platform/davinci/dm355_ccdc.c
 +++ b/drivers/media/platform/davinci/dm355_ccdc.c
 @@ -1003,7 +1003,7 @@ static int __devinit dm355_ccdc_probe(struct 
 platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.mclk);
 goto fail_nomap;
 }
 -   if (clk_enable(ccdc_cfg.mclk)) {
 +   if (clk_prepare_enable(ccdc_cfg.mclk)) {
 status = -ENODEV;
 goto fail_mclk;
 }
 @@ -1014,7 +1014,7 @@ static int __devinit dm355_ccdc_probe(struct 
 platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.sclk);
 goto fail_mclk;
 }
 -   if (clk_enable(ccdc_cfg.sclk)) {
 +   if (clk_prepare_enable(ccdc_cfg.sclk)) {
 status = -ENODEV;
 goto fail_sclk;
 }
 @@ -1034,8 +1034,10 @@ static int __devinit dm355_ccdc_probe(struct 
 platform_device *pdev)
 printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
 return 0;
  fail_sclk:
 +   clk_disable_unprepare(ccdc_cfg.sclk);
 clk_put(ccdc_cfg.sclk);
  fail_mclk:
 +   clk_disable_unprepare(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.mclk);
  fail_nomap:
 iounmap(ccdc_cfg.base_addr);
 @@ -1050,6 +1052,8 @@ static int dm355_ccdc_remove(struct platform_device 
 *pdev)
  {
 struct resource *res;

 +   clk_disable_unprepare(ccdc_cfg.sclk);
 +   clk_disable_unprepare(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.sclk);
 iounmap(ccdc_cfg.base_addr);
 diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c 
 b/drivers/media/platform/davinci/dm644x_ccdc.c
 index ee7942b..0215ab6 100644
 --- a/drivers/media/platform/davinci/dm644x_ccdc.c
 +++ b/drivers/media/platform/davinci/dm644x_ccdc.c
 @@ -994,7 +994,7 @@ static int __devinit dm644x_ccdc_probe(struct 
 platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.mclk);
 goto fail_nomap;
 }
 -   if (clk_enable(ccdc_cfg.mclk)) {
 +   if (clk_prepare_enable(ccdc_cfg.mclk)) {
 status = -ENODEV;
 goto fail_mclk;
 }
 @@ -1005,7 +1005,7 @@ static int __devinit dm644x_ccdc_probe(struct 
 platform_device *pdev)
 status = PTR_ERR(ccdc_cfg.sclk);
 goto fail_mclk;
 }
 -   if (clk_enable(ccdc_cfg.sclk)) {
 +   if (clk_prepare_enable(ccdc_cfg.sclk)) {
 status = -ENODEV;
 goto fail_sclk;
 }
 @@ -1013,8 +1013,10 @@ static int __devinit dm644x_ccdc_probe(struct 
 platform_device *pdev)
 printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
 return 0;
  fail_sclk:
 +   clk_disable_unprepare(ccdc_cfg.sclk);
 clk_put(ccdc_cfg.sclk);
  fail_mclk:
 +   clk_disable_unprepare(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.mclk);
  fail_nomap:
 iounmap(ccdc_cfg.base_addr);
 @@ -1029,6 +1031,8 @@ static int dm644x_ccdc_remove(struct platform_device 
 *pdev)
  {
 struct resource *res;

 +   clk_disable_unprepare(ccdc_cfg.mclk);
 +   clk_disable_unprepare(ccdc_cfg.sclk);
 clk_put(ccdc_cfg.mclk);
 clk_put(ccdc_cfg.sclk);
 iounmap(ccdc_cfg.base_addr);
 @@ -1046,8 +1050,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
 /* Disable CCDC */
 ccdc_enable(0);
 /* Disable both master and slave clock */
 -   clk_disable(ccdc_cfg.mclk);
 -   clk_disable(ccdc_cfg.sclk);
 +   clk_disable_unprepare(ccdc_cfg.mclk);
 +   clk_disable_unprepare(ccdc_cfg.sclk);

 return 0;
  }
 @@ -1055,8 +1059,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
  static int dm644x_ccdc_resume(struct device *dev)
  {
 /* Enable both master and slave clock */
 -   clk_enable(ccdc_cfg.mclk);
 -   

[RESEND-PATCH] media:davinci: clk - {prepare/unprepare} for common clk

2012-10-22 Thread Murali Karicheri
As a first step towards migrating davinci platforms to use common clock
framework, replace all instances of clk_enable() with clk_prepare_enable()
and clk_disable() with clk_disable_unprepare().

Also fixes some issues related to clk clean up in the driver

Signed-off-by: Murali Karicheri m-kariche...@ti.com
---
rebased to v3.7-rc1

 drivers/media/platform/davinci/dm355_ccdc.c  |8 ++--
 drivers/media/platform/davinci/dm644x_ccdc.c |   16 ++--
 drivers/media/platform/davinci/isif.c|5 -
 drivers/media/platform/davinci/vpbe.c|   10 +++---
 drivers/media/platform/davinci/vpif.c|8 
 5 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/drivers/media/platform/davinci/dm355_ccdc.c 
b/drivers/media/platform/davinci/dm355_ccdc.c
index ce0e413..030950d 100644
--- a/drivers/media/platform/davinci/dm355_ccdc.c
+++ b/drivers/media/platform/davinci/dm355_ccdc.c
@@ -1003,7 +1003,7 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.mclk);
goto fail_nomap;
}
-   if (clk_enable(ccdc_cfg.mclk)) {
+   if (clk_prepare_enable(ccdc_cfg.mclk)) {
status = -ENODEV;
goto fail_mclk;
}
@@ -1014,7 +1014,7 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.sclk);
goto fail_mclk;
}
-   if (clk_enable(ccdc_cfg.sclk)) {
+   if (clk_prepare_enable(ccdc_cfg.sclk)) {
status = -ENODEV;
goto fail_sclk;
}
@@ -1034,8 +1034,10 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
return 0;
 fail_sclk:
+   clk_disable_unprepare(ccdc_cfg.sclk);
clk_put(ccdc_cfg.sclk);
 fail_mclk:
+   clk_disable_unprepare(ccdc_cfg.mclk);
clk_put(ccdc_cfg.mclk);
 fail_nomap:
iounmap(ccdc_cfg.base_addr);
@@ -1050,6 +1052,8 @@ static int dm355_ccdc_remove(struct platform_device *pdev)
 {
struct resource *res;
 
+   clk_disable_unprepare(ccdc_cfg.sclk);
+   clk_disable_unprepare(ccdc_cfg.mclk);
clk_put(ccdc_cfg.mclk);
clk_put(ccdc_cfg.sclk);
iounmap(ccdc_cfg.base_addr);
diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c 
b/drivers/media/platform/davinci/dm644x_ccdc.c
index ee7942b..0215ab6 100644
--- a/drivers/media/platform/davinci/dm644x_ccdc.c
+++ b/drivers/media/platform/davinci/dm644x_ccdc.c
@@ -994,7 +994,7 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.mclk);
goto fail_nomap;
}
-   if (clk_enable(ccdc_cfg.mclk)) {
+   if (clk_prepare_enable(ccdc_cfg.mclk)) {
status = -ENODEV;
goto fail_mclk;
}
@@ -1005,7 +1005,7 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.sclk);
goto fail_mclk;
}
-   if (clk_enable(ccdc_cfg.sclk)) {
+   if (clk_prepare_enable(ccdc_cfg.sclk)) {
status = -ENODEV;
goto fail_sclk;
}
@@ -1013,8 +1013,10 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
return 0;
 fail_sclk:
+   clk_disable_unprepare(ccdc_cfg.sclk);
clk_put(ccdc_cfg.sclk);
 fail_mclk:
+   clk_disable_unprepare(ccdc_cfg.mclk);
clk_put(ccdc_cfg.mclk);
 fail_nomap:
iounmap(ccdc_cfg.base_addr);
@@ -1029,6 +1031,8 @@ static int dm644x_ccdc_remove(struct platform_device 
*pdev)
 {
struct resource *res;
 
+   clk_disable_unprepare(ccdc_cfg.mclk);
+   clk_disable_unprepare(ccdc_cfg.sclk);
clk_put(ccdc_cfg.mclk);
clk_put(ccdc_cfg.sclk);
iounmap(ccdc_cfg.base_addr);
@@ -1046,8 +1050,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
/* Disable CCDC */
ccdc_enable(0);
/* Disable both master and slave clock */
-   clk_disable(ccdc_cfg.mclk);
-   clk_disable(ccdc_cfg.sclk);
+   clk_disable_unprepare(ccdc_cfg.mclk);
+   clk_disable_unprepare(ccdc_cfg.sclk);
 
return 0;
 }
@@ -1055,8 +1059,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
 static int dm644x_ccdc_resume(struct device *dev)
 {
/* Enable both master and slave clock */
-   clk_enable(ccdc_cfg.mclk);
-   clk_enable(ccdc_cfg.sclk);
+   clk_prepare_enable(ccdc_cfg.mclk);
+   clk_prepare_enable(ccdc_cfg.sclk);
/* Restore CCDC context */
ccdc_restore_context();
 
diff --git a/drivers/media/platform/davinci/isif.c 
b/drivers/media/platform/davinci/isif.c
index b99d542..2c26c3e 100644
--- a/drivers/media/platform/davinci/isif.c
+++ b/drivers/media/platform/davinci/isif.c

[RESEND-PATCH] media:davinci: clk - {prepare/unprepare} for common clk

2012-10-22 Thread Murali Karicheri
As a first step towards migrating davinci platforms to use common clock
framework, replace all instances of clk_enable() with clk_prepare_enable()
and clk_disable() with clk_disable_unprepare().

Also fixes some issues related to clk clean up in the driver

Signed-off-by: Murali Karicheri m-kariche...@ti.com
---
rebased to v3.7-rc1

 drivers/media/platform/davinci/dm355_ccdc.c  |8 ++--
 drivers/media/platform/davinci/dm644x_ccdc.c |   16 ++--
 drivers/media/platform/davinci/isif.c|5 -
 drivers/media/platform/davinci/vpbe.c|   10 +++---
 drivers/media/platform/davinci/vpif.c|8 
 5 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/drivers/media/platform/davinci/dm355_ccdc.c 
b/drivers/media/platform/davinci/dm355_ccdc.c
index ce0e413..030950d 100644
--- a/drivers/media/platform/davinci/dm355_ccdc.c
+++ b/drivers/media/platform/davinci/dm355_ccdc.c
@@ -1003,7 +1003,7 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.mclk);
goto fail_nomap;
}
-   if (clk_enable(ccdc_cfg.mclk)) {
+   if (clk_prepare_enable(ccdc_cfg.mclk)) {
status = -ENODEV;
goto fail_mclk;
}
@@ -1014,7 +1014,7 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.sclk);
goto fail_mclk;
}
-   if (clk_enable(ccdc_cfg.sclk)) {
+   if (clk_prepare_enable(ccdc_cfg.sclk)) {
status = -ENODEV;
goto fail_sclk;
}
@@ -1034,8 +1034,10 @@ static int __devinit dm355_ccdc_probe(struct 
platform_device *pdev)
printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
return 0;
 fail_sclk:
+   clk_disable_unprepare(ccdc_cfg.sclk);
clk_put(ccdc_cfg.sclk);
 fail_mclk:
+   clk_disable_unprepare(ccdc_cfg.mclk);
clk_put(ccdc_cfg.mclk);
 fail_nomap:
iounmap(ccdc_cfg.base_addr);
@@ -1050,6 +1052,8 @@ static int dm355_ccdc_remove(struct platform_device *pdev)
 {
struct resource *res;
 
+   clk_disable_unprepare(ccdc_cfg.sclk);
+   clk_disable_unprepare(ccdc_cfg.mclk);
clk_put(ccdc_cfg.mclk);
clk_put(ccdc_cfg.sclk);
iounmap(ccdc_cfg.base_addr);
diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c 
b/drivers/media/platform/davinci/dm644x_ccdc.c
index ee7942b..0215ab6 100644
--- a/drivers/media/platform/davinci/dm644x_ccdc.c
+++ b/drivers/media/platform/davinci/dm644x_ccdc.c
@@ -994,7 +994,7 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.mclk);
goto fail_nomap;
}
-   if (clk_enable(ccdc_cfg.mclk)) {
+   if (clk_prepare_enable(ccdc_cfg.mclk)) {
status = -ENODEV;
goto fail_mclk;
}
@@ -1005,7 +1005,7 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
status = PTR_ERR(ccdc_cfg.sclk);
goto fail_mclk;
}
-   if (clk_enable(ccdc_cfg.sclk)) {
+   if (clk_prepare_enable(ccdc_cfg.sclk)) {
status = -ENODEV;
goto fail_sclk;
}
@@ -1013,8 +1013,10 @@ static int __devinit dm644x_ccdc_probe(struct 
platform_device *pdev)
printk(KERN_NOTICE %s is registered with vpfe.\n, ccdc_hw_dev.name);
return 0;
 fail_sclk:
+   clk_disable_unprepare(ccdc_cfg.sclk);
clk_put(ccdc_cfg.sclk);
 fail_mclk:
+   clk_disable_unprepare(ccdc_cfg.mclk);
clk_put(ccdc_cfg.mclk);
 fail_nomap:
iounmap(ccdc_cfg.base_addr);
@@ -1029,6 +1031,8 @@ static int dm644x_ccdc_remove(struct platform_device 
*pdev)
 {
struct resource *res;
 
+   clk_disable_unprepare(ccdc_cfg.mclk);
+   clk_disable_unprepare(ccdc_cfg.sclk);
clk_put(ccdc_cfg.mclk);
clk_put(ccdc_cfg.sclk);
iounmap(ccdc_cfg.base_addr);
@@ -1046,8 +1050,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
/* Disable CCDC */
ccdc_enable(0);
/* Disable both master and slave clock */
-   clk_disable(ccdc_cfg.mclk);
-   clk_disable(ccdc_cfg.sclk);
+   clk_disable_unprepare(ccdc_cfg.mclk);
+   clk_disable_unprepare(ccdc_cfg.sclk);
 
return 0;
 }
@@ -1055,8 +1059,8 @@ static int dm644x_ccdc_suspend(struct device *dev)
 static int dm644x_ccdc_resume(struct device *dev)
 {
/* Enable both master and slave clock */
-   clk_enable(ccdc_cfg.mclk);
-   clk_enable(ccdc_cfg.sclk);
+   clk_prepare_enable(ccdc_cfg.mclk);
+   clk_prepare_enable(ccdc_cfg.sclk);
/* Restore CCDC context */
ccdc_restore_context();
 
diff --git a/drivers/media/platform/davinci/isif.c 
b/drivers/media/platform/davinci/isif.c
index b99d542..2c26c3e 100644
--- a/drivers/media/platform/davinci/isif.c
+++ b/drivers/media/platform/davinci/isif.c