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

2012-10-22 Thread Murali Karicheri

On 10/20/2012 02:39 AM, Prabhakar Lad wrote:

Hi Murali,

On Friday 19 October 2012 11:42 PM, Murali Karicheri 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
---
  drivers/media/video/davinci/dm355_ccdc.c  |8 ++--
  drivers/media/video/davinci/dm644x_ccdc.c |   16 ++--
  drivers/media/video/davinci/isif.c|5 -
  drivers/media/video/davinci/vpbe.c|   10 +++---
  drivers/media/video/davinci/vpif.c|8 
  5 files changed, 31 insertions(+), 16 deletions(-)


Thanks for the patch. Can you rebase this patch on 3.7, Since
the folder structure for media drivers has been reorganised.
And for some reason this patch hasn't reached any mailing list.

Thanks And Regards,
--Prabhakar Lad

Prabakhar,

I have re-sent the patches rebased to 3.7rc1. You are right, at times my 
patches don't show up on the mailing list. I am not sure why. It is not 
that none of them reaches the list, but some do make it. Do you have any 
suggestion why this could be happening? I will check with our IT first 
to see if emails are getting blocked at TI server for some reason. 
Meanwhile, could you test these patches with video drivers and request a 
merge to 3.7rcx? The patches are available at 
https://gitorious.org/~m-karicheri/linux-davinci/linux-davinci-clk/commits/video-clk-patches-v3.7rc1


https://gitorious.org/~m-karicheri/linux-davinci/linux-davinci-clk/commit/539b2de5913000cbf6f594e63b680673368dd9a2

Murali


diff --git a/drivers/media/video/davinci/dm355_ccdc.c 
b/drivers/media/video/davinci/dm355_ccdc.c
index 5b68847..af88cce 100644
--- a/drivers/media/video/davinci/dm355_ccdc.c
+++ b/drivers/media/video/davinci/dm355_ccdc.c
@@ -1003,7 +1003,7 @@ static int __init 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 __init 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 __init 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/video/davinci/dm644x_ccdc.c 
b/drivers/media/video/davinci/dm644x_ccdc.c
index 9303fe5..24388fa 100644
--- a/drivers/media/video/davinci/dm644x_ccdc.c
+++ b/drivers/media/video/davinci/dm644x_ccdc.c
@@ -994,7 +994,7 @@ static int __init 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 __init 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 __init 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);

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

2012-10-20 Thread Prabhakar Lad
Hi Murali,

On Friday 19 October 2012 11:42 PM, Murali Karicheri 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
 ---
  drivers/media/video/davinci/dm355_ccdc.c  |8 ++--
  drivers/media/video/davinci/dm644x_ccdc.c |   16 ++--
  drivers/media/video/davinci/isif.c|5 -
  drivers/media/video/davinci/vpbe.c|   10 +++---
  drivers/media/video/davinci/vpif.c|8 
  5 files changed, 31 insertions(+), 16 deletions(-)
 
Thanks for the patch. Can you rebase this patch on 3.7, Since
the folder structure for media drivers has been reorganised.
And for some reason this patch hasn't reached any mailing list.

Thanks And Regards,
--Prabhakar Lad

 diff --git a/drivers/media/video/davinci/dm355_ccdc.c 
 b/drivers/media/video/davinci/dm355_ccdc.c
 index 5b68847..af88cce 100644
 --- a/drivers/media/video/davinci/dm355_ccdc.c
 +++ b/drivers/media/video/davinci/dm355_ccdc.c
 @@ -1003,7 +1003,7 @@ static int __init 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 __init 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 __init 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/video/davinci/dm644x_ccdc.c 
 b/drivers/media/video/davinci/dm644x_ccdc.c
 index 9303fe5..24388fa 100644
 --- a/drivers/media/video/davinci/dm644x_ccdc.c
 +++ b/drivers/media/video/davinci/dm644x_ccdc.c
 @@ -994,7 +994,7 @@ static int __init 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 __init 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 __init 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