diff mbox

[3/3] usb: ohci-at91: use device managed clk retrieval

Message ID 1386079669-3995-4-git-send-email-b.brezillon@overkiz.com (mailing list archive)
State New, archived
Headers show

Commit Message

Boris BREZILLON Dec. 3, 2013, 2:07 p.m. UTC
Replace clk_get calls by devm_clk_get calls.

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
Tested-by: Robert Nelson <robertcnelson@gmail.com>
---
 drivers/usb/host/ohci-at91.c |   32 ++++++++------------------------
 1 file changed, 8 insertions(+), 24 deletions(-)

Comments

Nicolas Ferre Dec. 3, 2013, 2:15 p.m. UTC | #1
On 03/12/2013 15:07, Boris BREZILLON :
> Replace clk_get calls by devm_clk_get calls.
>
> Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
> Tested-by: Robert Nelson <robertcnelson@gmail.com>

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Thanks Boris for these fixes.

Alan, Greg, can you take the whole series as fixes for 3.13?

Thanks, best regards,

> ---
>   drivers/usb/host/ohci-at91.c |   32 ++++++++------------------------
>   1 file changed, 8 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index c406f1e..3652962 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -164,30 +164,30 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
>   		goto err;
>   	}
>
> -	iclk = clk_get(&pdev->dev, "ohci_clk");
> +	iclk = devm_clk_get(dev, "ohci_clk");
>   	if (IS_ERR(iclk)) {
> -		dev_err(&pdev->dev, "failed to get ohci_clk\n");
> +		dev_err(dev, "failed to get ohci_clk\n");
>   		retval = PTR_ERR(iclk);
>   		goto err;
>   	}
> -	fclk = clk_get(&pdev->dev, "uhpck");
> +	fclk = devm_clk_get(dev, "uhpck");
>   	if (IS_ERR(fclk)) {
>   		dev_err(&pdev->dev, "failed to get uhpck\n");
>   		retval = PTR_ERR(fclk);
> -		goto err4;
> +		goto err;
>   	}
> -	hclk = clk_get(&pdev->dev, "hclk");
> +	hclk = devm_clk_get(dev, "hclk");
>   	if (IS_ERR(hclk)) {
>   		dev_err(&pdev->dev, "failed to get hclk\n");
>   		retval = PTR_ERR(hclk);
> -		goto err5;
> +		goto err;
>   	}
>   	if (IS_ENABLED(CONFIG_COMMON_CLK)) {
> -		uclk = clk_get(&pdev->dev, "usb_clk");
> +		uclk = devm_clk_get(&pdev->dev, "usb_clk");
>   		if (IS_ERR(uclk)) {
>   			dev_err(&pdev->dev, "failed to get uclk\n");
>   			retval = PTR_ERR(uclk);
> -			goto err6;
> +			goto err;
>   		}
>   	}
>
> @@ -203,15 +203,6 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
>   	/* Error handling */
>   	at91_stop_hc(pdev);
>
> -	if (IS_ENABLED(CONFIG_COMMON_CLK))
> -		clk_put(uclk);
> - err6:
> -	clk_put(hclk);
> - err5:
> -	clk_put(fclk);
> - err4:
> -	clk_put(iclk);
> -
>    err:
>   	usb_put_hcd(hcd);
>   	return retval;
> @@ -236,13 +227,6 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd,
>   	usb_remove_hcd(hcd);
>   	at91_stop_hc(pdev);
>   	usb_put_hcd(hcd);
> -
> -	if (IS_ENABLED(CONFIG_COMMON_CLK))
> -		clk_put(uclk);
> -	clk_put(hclk);
> -	clk_put(fclk);
> -	clk_put(iclk);
> -	fclk = iclk = hclk = NULL;
>   }
>
>   /*-------------------------------------------------------------------------*/
>
Alan Stern Dec. 3, 2013, 3:32 p.m. UTC | #2
On Tue, 3 Dec 2013, Nicolas Ferre wrote:

> On 03/12/2013 15:07, Boris BREZILLON :
> > Replace clk_get calls by devm_clk_get calls.
> >
> > Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
> > Tested-by: Robert Nelson <robertcnelson@gmail.com>
> 
> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> 
> Thanks Boris for these fixes.
> 
> Alan, Greg, can you take the whole series as fixes for 3.13?

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>

The patches look fine to me.  But only the 1/3 patch fixes a bug; the 
others merely change the resource management.

Alan Stern
Boris BREZILLON Dec. 3, 2013, 5:20 p.m. UTC | #3
Hello Sergei,

On 03/12/2013 19:01, Sergei Shtylyov wrote:
> Hello.
>
> On 12/03/2013 05:07 PM, Boris BREZILLON wrote:
>
>> Replace clk_get calls by devm_clk_get calls.
>
>> Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
>> Tested-by: Robert Nelson <robertcnelson@gmail.com>
>> ---
>>   drivers/usb/host/ohci-at91.c |   32 ++++++++------------------------
>>   1 file changed, 8 insertions(+), 24 deletions(-)
>
>> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
>> index c406f1e..3652962 100644
>> --- a/drivers/usb/host/ohci-at91.c
>> +++ b/drivers/usb/host/ohci-at91.c
>> @@ -164,30 +164,30 @@ static int usb_hcd_at91_probe(const struct 
>> hc_driver *driver,
>>           goto err;
>>       }
>>
>> -    iclk = clk_get(&pdev->dev, "ohci_clk");
>> +    iclk = devm_clk_get(dev, "ohci_clk");
>>       if (IS_ERR(iclk)) {
>> -        dev_err(&pdev->dev, "failed to get ohci_clk\n");
>> +        dev_err(dev, "failed to get ohci_clk\n");
>
>    You changed this call...
>
>>           retval = PTR_ERR(iclk);
>>           goto err;
>>       }
>> -    fclk = clk_get(&pdev->dev, "uhpck");
>> +    fclk = devm_clk_get(dev, "uhpck");
>>       if (IS_ERR(fclk)) {
>>           dev_err(&pdev->dev, "failed to get uhpck\n");
>
>    ... but not this one.

This is an oversight.

>
>>           retval = PTR_ERR(fclk);
>> -        goto err4;
>> +        goto err;
>>       }
>> -    hclk = clk_get(&pdev->dev, "hclk");
>> +    hclk = devm_clk_get(dev, "hclk");
>>       if (IS_ERR(hclk)) {
>>           dev_err(&pdev->dev, "failed to get hclk\n");
>
>    ... or this one. Actually, I think cganging these calls would be 
> out of scope for this patch.

Ditto.

I'll split the patch to in 2 patches:
  1) replace &pdev->dev by dev
  2) use devm_clk_get instead of clk_get.

>
>>           retval = PTR_ERR(hclk);
>> -        goto err5;
>> +        goto err;
>>       }
>>       if (IS_ENABLED(CONFIG_COMMON_CLK)) {
>> -        uclk = clk_get(&pdev->dev, "usb_clk");
>> +        uclk = devm_clk_get(&pdev->dev, "usb_clk");
>
>    Hm, why not 'dev' like in all of the above?
Ditto.

Thanks for your review.

Best Regards,

Boris
>
>>           if (IS_ERR(uclk)) {
>>               dev_err(&pdev->dev, "failed to get uclk\n");
>>               retval = PTR_ERR(uclk);
>> -            goto err6;
>> +            goto err;
>>           }
>>       }
>>
>
> WBR, Sergei
>
>
Sergei Shtylyov Dec. 3, 2013, 6:01 p.m. UTC | #4
Hello.

On 12/03/2013 05:07 PM, Boris BREZILLON wrote:

> Replace clk_get calls by devm_clk_get calls.

> Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
> Tested-by: Robert Nelson <robertcnelson@gmail.com>
> ---
>   drivers/usb/host/ohci-at91.c |   32 ++++++++------------------------
>   1 file changed, 8 insertions(+), 24 deletions(-)

> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index c406f1e..3652962 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -164,30 +164,30 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
>   		goto err;
>   	}
>
> -	iclk = clk_get(&pdev->dev, "ohci_clk");
> +	iclk = devm_clk_get(dev, "ohci_clk");
>   	if (IS_ERR(iclk)) {
> -		dev_err(&pdev->dev, "failed to get ohci_clk\n");
> +		dev_err(dev, "failed to get ohci_clk\n");

    You changed this call...

>   		retval = PTR_ERR(iclk);
>   		goto err;
>   	}
> -	fclk = clk_get(&pdev->dev, "uhpck");
> +	fclk = devm_clk_get(dev, "uhpck");
>   	if (IS_ERR(fclk)) {
>   		dev_err(&pdev->dev, "failed to get uhpck\n");

    ... but not this one.

>   		retval = PTR_ERR(fclk);
> -		goto err4;
> +		goto err;
>   	}
> -	hclk = clk_get(&pdev->dev, "hclk");
> +	hclk = devm_clk_get(dev, "hclk");
>   	if (IS_ERR(hclk)) {
>   		dev_err(&pdev->dev, "failed to get hclk\n");

    ... or this one. Actually, I think cganging these calls would be out of 
scope for this patch.

>   		retval = PTR_ERR(hclk);
> -		goto err5;
> +		goto err;
>   	}
>   	if (IS_ENABLED(CONFIG_COMMON_CLK)) {
> -		uclk = clk_get(&pdev->dev, "usb_clk");
> +		uclk = devm_clk_get(&pdev->dev, "usb_clk");

    Hm, why not 'dev' like in all of the above?

>   		if (IS_ERR(uclk)) {
>   			dev_err(&pdev->dev, "failed to get uclk\n");
>   			retval = PTR_ERR(uclk);
> -			goto err6;
> +			goto err;
>   		}
>   	}
>

WBR, Sergei
Boris BREZILLON Dec. 4, 2013, 8:32 a.m. UTC | #5
Hello Alan,

On 03/12/2013 16:32, Alan Stern wrote:
> On Tue, 3 Dec 2013, Nicolas Ferre wrote:
>
>> On 03/12/2013 15:07, Boris BREZILLON :
>>> Replace clk_get calls by devm_clk_get calls.
>>>
>>> Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
>>> Tested-by: Robert Nelson <robertcnelson@gmail.com>
>> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
>>
>> Thanks Boris for these fixes.
>>
>> Alan, Greg, can you take the whole series as fixes for 3.13?
> Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Sorry, but I forgot to add your Signed-off-by in the 2nd version of this
series.
>
> The patches look fine to me.  But only the 1/3 patch fixes a bug; the
> others merely change the resource management.

Do you want me to split this series ?
  1) the 1st patch that should be merged in 3.13
  2) patches 2 to 4 that might be applied later

Best Regards,

Boris

>
> Alan Stern
>
Alan Stern Dec. 4, 2013, 3:21 p.m. UTC | #6
On Wed, 4 Dec 2013, boris brezillon wrote:

> > The patches look fine to me.  But only the 1/3 patch fixes a bug; the
> > others merely change the resource management.
> 
> Do you want me to split this series ?
>   1) the 1st patch that should be merged in 3.13
>   2) patches 2 to 4 that might be applied later

That probably would make Greg happier.

Alan Stern
Douglas Gilbert Dec. 4, 2013, 3:51 p.m. UTC | #7
On 13-12-04 04:21 PM, Alan Stern wrote:
> On Wed, 4 Dec 2013, boris brezillon wrote:
>
>>> The patches look fine to me.  But only the 1/3 patch fixes a bug; the
>>> others merely change the resource management.
>>
>> Do you want me to split this series ?
>>    1) the 1st patch that should be merged in 3.13
>>    2) patches 2 to 4 that might be applied later
>
> That probably would make Greg happier.

Putting my initial reporter hat on, USB OHCI is
completely broken in lk 3.13.0 rc1 and rc2 for AT91
family members. So it is difficult to make the
situation worse. IMO the whole 4 patches should go
in, since it only impacts that family. Also the kernel
is more than a month away from release. Perhaps the
naysayers should be looking around for whatever else
the "of/irq: Pass trigger type in IRQ resource flags"
patch has broken.

Doug Gilbert
Tomasz Figa Dec. 4, 2013, 3:59 p.m. UTC | #8
2013/12/4 Douglas Gilbert <dgilbert@interlog.com>:
> On 13-12-04 04:21 PM, Alan Stern wrote:
>>
>> On Wed, 4 Dec 2013, boris brezillon wrote:
>>
>>>> The patches look fine to me.  But only the 1/3 patch fixes a bug; the
>>>> others merely change the resource management.
>>>
>>>
>>> Do you want me to split this series ?
>>>    1) the 1st patch that should be merged in 3.13
>>>    2) patches 2 to 4 that might be applied later
>>
>>
>> That probably would make Greg happier.
>
>
> Putting my initial reporter hat on, USB OHCI is
> completely broken in lk 3.13.0 rc1 and rc2 for AT91
> family members. So it is difficult to make the
> situation worse. IMO the whole 4 patches should go
> in, since it only impacts that family. Also the kernel
> is more than a month away from release. Perhaps the
> naysayers should be looking around for whatever else
> the "of/irq: Pass trigger type in IRQ resource flags"
> patch has broken.

...or rather whatever brokenness it has uncovered.

Best regards,
Tomasz
diff mbox

Patch

diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index c406f1e..3652962 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -164,30 +164,30 @@  static int usb_hcd_at91_probe(const struct hc_driver *driver,
 		goto err;
 	}
 
-	iclk = clk_get(&pdev->dev, "ohci_clk");
+	iclk = devm_clk_get(dev, "ohci_clk");
 	if (IS_ERR(iclk)) {
-		dev_err(&pdev->dev, "failed to get ohci_clk\n");
+		dev_err(dev, "failed to get ohci_clk\n");
 		retval = PTR_ERR(iclk);
 		goto err;
 	}
-	fclk = clk_get(&pdev->dev, "uhpck");
+	fclk = devm_clk_get(dev, "uhpck");
 	if (IS_ERR(fclk)) {
 		dev_err(&pdev->dev, "failed to get uhpck\n");
 		retval = PTR_ERR(fclk);
-		goto err4;
+		goto err;
 	}
-	hclk = clk_get(&pdev->dev, "hclk");
+	hclk = devm_clk_get(dev, "hclk");
 	if (IS_ERR(hclk)) {
 		dev_err(&pdev->dev, "failed to get hclk\n");
 		retval = PTR_ERR(hclk);
-		goto err5;
+		goto err;
 	}
 	if (IS_ENABLED(CONFIG_COMMON_CLK)) {
-		uclk = clk_get(&pdev->dev, "usb_clk");
+		uclk = devm_clk_get(&pdev->dev, "usb_clk");
 		if (IS_ERR(uclk)) {
 			dev_err(&pdev->dev, "failed to get uclk\n");
 			retval = PTR_ERR(uclk);
-			goto err6;
+			goto err;
 		}
 	}
 
@@ -203,15 +203,6 @@  static int usb_hcd_at91_probe(const struct hc_driver *driver,
 	/* Error handling */
 	at91_stop_hc(pdev);
 
-	if (IS_ENABLED(CONFIG_COMMON_CLK))
-		clk_put(uclk);
- err6:
-	clk_put(hclk);
- err5:
-	clk_put(fclk);
- err4:
-	clk_put(iclk);
-
  err:
 	usb_put_hcd(hcd);
 	return retval;
@@ -236,13 +227,6 @@  static void usb_hcd_at91_remove(struct usb_hcd *hcd,
 	usb_remove_hcd(hcd);
 	at91_stop_hc(pdev);
 	usb_put_hcd(hcd);
-
-	if (IS_ENABLED(CONFIG_COMMON_CLK))
-		clk_put(uclk);
-	clk_put(hclk);
-	clk_put(fclk);
-	clk_put(iclk);
-	fclk = iclk = hclk = NULL;
 }
 
 /*-------------------------------------------------------------------------*/