diff mbox

[1/2] DMA: PL330: Remove pm_runtime_xxx calls from pl330 probe/remove

Message ID 1323168355-2764-2-git-send-email-tushar.behera@linaro.org
State Accepted
Headers show

Commit Message

Tushar Behera Dec. 6, 2011, 10:45 a.m. UTC
amba_probe() now calls pm_runtime_get_noresume() and pm_runtime_enable()
for the devices before the device probe is called. Hence we don't need
to call pm_runtime_get_xxx and pm_runtime_enable() in device probe again.
In the same way, since amba_remove() calls the respective pm_runtime
functions, those functions need not be called from device remove.

This patch fixes following run time error with pl330 driver.

dma-pl330 dma-pl330.0: Unbalanced pm_runtime_enable!
dma-pl330 dma-pl330.0: failed to get runtime pm

Signed-off-by: Giridhar Maruthy <giridhar.maruthy@linaro.org>
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
---
 drivers/dma/pl330.c |   17 ++---------------
 1 files changed, 2 insertions(+), 15 deletions(-)

Comments

Vinod Koul Dec. 8, 2011, 7:35 a.m. UTC | #1
On Tue, 2011-12-06 at 16:15 +0530, Tushar Behera wrote:
> amba_probe() now calls pm_runtime_get_noresume() and pm_runtime_enable()
> for the devices before the device probe is called. Hence we don't need
> to call pm_runtime_get_xxx and pm_runtime_enable() in device probe again.
> In the same way, since amba_remove() calls the respective pm_runtime
> functions, those functions need not be called from device remove.
> 
> This patch fixes following run time error with pl330 driver.
> 
> dma-pl330 dma-pl330.0: Unbalanced pm_runtime_enable!
> dma-pl330 dma-pl330.0: failed to get runtime pm
> 
> Signed-off-by: Giridhar Maruthy <giridhar.maruthy@linaro.org>
> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
Looks fine to me. Do you want these to go thru slave-dma or samsung
tree.
For latter:
Acked-by: Vinod Koul <vinod.koul@linux.intel.com>

> ---
>  drivers/dma/pl330.c |   17 ++---------------
>  1 files changed, 2 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
> index a626e15..cd07121 100644
> --- a/drivers/dma/pl330.c
> +++ b/drivers/dma/pl330.c
> @@ -834,17 +834,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
>  
>  	amba_set_drvdata(adev, pdmac);
>  
> -#ifdef CONFIG_PM_RUNTIME
> -	/* to use the runtime PM helper functions */
> -	pm_runtime_enable(&adev->dev);
> -
> -	/* enable the power domain */
> -	if (pm_runtime_get_sync(&adev->dev)) {
> -		dev_err(&adev->dev, "failed to get runtime pm\n");
> -		ret = -ENODEV;
> -		goto probe_err1;
> -	}
> -#else
> +#ifndef CONFIG_PM_RUNTIME
>  	/* enable dma clk */
>  	clk_enable(pdmac->clk);
>  #endif
> @@ -977,10 +967,7 @@ static int __devexit pl330_remove(struct amba_device *adev)
>  	res = &adev->res;
>  	release_mem_region(res->start, resource_size(res));
>  
> -#ifdef CONFIG_PM_RUNTIME
> -	pm_runtime_put(&adev->dev);
> -	pm_runtime_disable(&adev->dev);
> -#else
> +#ifndef CONFIG_PM_RUNTIME
>  	clk_disable(pdmac->clk);
>  #endif
>
Kukjin Kim Dec. 8, 2011, 7:43 a.m. UTC | #2
Vinod Koul wrote:
> 
> On Tue, 2011-12-06 at 16:15 +0530, Tushar Behera wrote:
> > amba_probe() now calls pm_runtime_get_noresume() and pm_runtime_enable()
> > for the devices before the device probe is called. Hence we don't need
> > to call pm_runtime_get_xxx and pm_runtime_enable() in device probe again.
> > In the same way, since amba_remove() calls the respective pm_runtime
> > functions, those functions need not be called from device remove.
> >
> > This patch fixes following run time error with pl330 driver.
> >
> > dma-pl330 dma-pl330.0: Unbalanced pm_runtime_enable!
> > dma-pl330 dma-pl330.0: failed to get runtime pm
> >
> > Signed-off-by: Giridhar Maruthy <giridhar.maruthy@linaro.org>
> > Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
> Looks fine to me. Do you want these to go thru slave-dma or samsung
> tree.

Hi Vinod,

I think, this patch can be sent to upstream via slave-dma tree and second one via Samsung tree separately and you can add my and Boojin Kim's ack(actually, she replied) on this when you apply.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

> For latter:
> Acked-by: Vinod Koul <vinod.koul@linux.intel.com>
> 
> > ---
> >  drivers/dma/pl330.c |   17 ++---------------
> >  1 files changed, 2 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
> > index a626e15..cd07121 100644
> > --- a/drivers/dma/pl330.c
> > +++ b/drivers/dma/pl330.c
> > @@ -834,17 +834,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
> >
> >  	amba_set_drvdata(adev, pdmac);
> >
> > -#ifdef CONFIG_PM_RUNTIME
> > -	/* to use the runtime PM helper functions */
> > -	pm_runtime_enable(&adev->dev);
> > -
> > -	/* enable the power domain */
> > -	if (pm_runtime_get_sync(&adev->dev)) {
> > -		dev_err(&adev->dev, "failed to get runtime pm\n");
> > -		ret = -ENODEV;
> > -		goto probe_err1;
> > -	}
> > -#else
> > +#ifndef CONFIG_PM_RUNTIME
> >  	/* enable dma clk */
> >  	clk_enable(pdmac->clk);
> >  #endif
> > @@ -977,10 +967,7 @@ static int __devexit pl330_remove(struct amba_device *adev)
> >  	res = &adev->res;
> >  	release_mem_region(res->start, resource_size(res));
> >
> > -#ifdef CONFIG_PM_RUNTIME
> > -	pm_runtime_put(&adev->dev);
> > -	pm_runtime_disable(&adev->dev);
> > -#else
> > +#ifndef CONFIG_PM_RUNTIME
> >  	clk_disable(pdmac->clk);
> >  #endif
> >
> 
> 
> --
> ~Vinod
Vinod Koul Dec. 8, 2011, 8:16 a.m. UTC | #3
On Thu, 2011-12-08 at 16:43 +0900, Kukjin Kim wrote:
> Vinod Koul wrote:
> > 
> > On Tue, 2011-12-06 at 16:15 +0530, Tushar Behera wrote:
> > > amba_probe() now calls pm_runtime_get_noresume() and pm_runtime_enable()
> > > for the devices before the device probe is called. Hence we don't need
> > > to call pm_runtime_get_xxx and pm_runtime_enable() in device probe again.
> > > In the same way, since amba_remove() calls the respective pm_runtime
> > > functions, those functions need not be called from device remove.
> > >
> > > This patch fixes following run time error with pl330 driver.
> > >
> > > dma-pl330 dma-pl330.0: Unbalanced pm_runtime_enable!
> > > dma-pl330 dma-pl330.0: failed to get runtime pm
> > >
> > > Signed-off-by: Giridhar Maruthy <giridhar.maruthy@linaro.org>
> > > Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
> > Looks fine to me. Do you want these to go thru slave-dma or samsung
> > tree.
> 
> Hi Vinod,
> 
> I think, this patch can be sent to upstream via slave-dma tree and
> second one via Samsung tree separately and you can add my and Boojin
> Kim's ack(actually, she replied) on this when you apply.
Okay, I have applied this one only
Jassi Brar Dec. 8, 2011, 1:32 p.m. UTC | #4
On 8 December 2011 13:46, Vinod Koul <vinod.koul@intel.com> wrote:
> On Thu, 2011-12-08 at 16:43 +0900, Kukjin Kim wrote:
>> Vinod Koul wrote:
>> >
>> > On Tue, 2011-12-06 at 16:15 +0530, Tushar Behera wrote:
>> > > amba_probe() now calls pm_runtime_get_noresume() and pm_runtime_enable()
>> > > for the devices before the device probe is called. Hence we don't need
>> > > to call pm_runtime_get_xxx and pm_runtime_enable() in device probe again.
>> > > In the same way, since amba_remove() calls the respective pm_runtime
>> > > functions, those functions need not be called from device remove.
>> > >
>> > > This patch fixes following run time error with pl330 driver.
>> > >
>> > > dma-pl330 dma-pl330.0: Unbalanced pm_runtime_enable!
>> > > dma-pl330 dma-pl330.0: failed to get runtime pm
>> > >
>> > > Signed-off-by: Giridhar Maruthy <giridhar.maruthy@linaro.org>
>> > > Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
>> > Looks fine to me. Do you want these to go thru slave-dma or samsung
>> > tree.
>>
>> Hi Vinod,
>>
>> I think, this patch can be sent to upstream via slave-dma tree and
>> second one via Samsung tree separately and you can add my and Boojin
>> Kim's ack(actually, she replied) on this when you apply.
>
> Okay, I have applied this one only
>
Guys, any reason to keep me, the author of the driver, out of loop ?
I almost lost this patch, had it not for chance.

Also, I noticed
42bc9cf45939c2   'DMA: PL330: Add DMA_CYCLIC capability'
while implements my correction, doesn't carry the ack
 http://www.spinics.net/lists/linux-samsung-soc/msg06386.html

While, unlike some, I am not interested in claiming territory by pissing
around acks, I would sure like to log my acks if I spent personal time
maintaining the code I am supposed to be responsible for.
Tushar Behera Dec. 9, 2011, 3:19 a.m. UTC | #5
On 12/08/2011 07:02 PM, Jassi Brar wrote:
> Guys, any reason to keep me, the author of the driver, out of loop ?
> I almost lost this patch, had it not for chance.

Apologies. I didn't realize that I should be adding a cc to you.

Would you please add a valid module author e-mail ID?
Jassi Brar Dec. 9, 2011, 3:51 a.m. UTC | #6
On 9 December 2011 08:49, Tushar Behera <tushar.behera@linaro.org> wrote:
> On 12/08/2011 07:02 PM, Jassi Brar wrote:
>>
>> Guys, any reason to keep me, the author of the driver, out of loop ?
>> I almost lost this patch, had it not for chance.
>
>
> Apologies. I didn't realize that I should be adding a cc to you.
>
> Would you please add a valid module author e-mail ID?
>
I doubt if someone knows that my samsung id is invalid but doesn't know
which is the valid one ;)
Anyways, I shall update to my private email id.
diff mbox

Patch

diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index a626e15..cd07121 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -834,17 +834,7 @@  pl330_probe(struct amba_device *adev, const struct amba_id *id)
 
 	amba_set_drvdata(adev, pdmac);
 
-#ifdef CONFIG_PM_RUNTIME
-	/* to use the runtime PM helper functions */
-	pm_runtime_enable(&adev->dev);
-
-	/* enable the power domain */
-	if (pm_runtime_get_sync(&adev->dev)) {
-		dev_err(&adev->dev, "failed to get runtime pm\n");
-		ret = -ENODEV;
-		goto probe_err1;
-	}
-#else
+#ifndef CONFIG_PM_RUNTIME
 	/* enable dma clk */
 	clk_enable(pdmac->clk);
 #endif
@@ -977,10 +967,7 @@  static int __devexit pl330_remove(struct amba_device *adev)
 	res = &adev->res;
 	release_mem_region(res->start, resource_size(res));
 
-#ifdef CONFIG_PM_RUNTIME
-	pm_runtime_put(&adev->dev);
-	pm_runtime_disable(&adev->dev);
-#else
+#ifndef CONFIG_PM_RUNTIME
 	clk_disable(pdmac->clk);
 #endif