All of lore.kernel.org
 help / color / mirror / Atom feed
From: gregory.clement@free-electrons.com (Gregory CLEMENT)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 02/18] usb: host: xhci-plat: Add clocks support
Date: Fri, 25 Apr 2014 16:44:47 +0200	[thread overview]
Message-ID: <535A74DF.6090106@free-electrons.com> (raw)
In-Reply-To: <20140425161517.20821c65@skate>

On 25/04/2014 16:15, Thomas Petazzoni wrote:
> Dear Gregory CLEMENT,
> 
> On Fri, 25 Apr 2014 16:07:00 +0200, Gregory CLEMENT wrote:
>> Some platform (such as the Armada 38x ones) can gate the clock of
>> their USB controller. This patch add the support for the clock, by
>> enabling them during probe and disabling them on remove.
>>
>> As not all platforms have clock support then enabling and disabling
>> the clocks have been placed in separate functions. Then if the clocks
>> are not supported we still can use the same calls, and there is no
>>
>> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
>> ---
>>  drivers/usb/host/xhci-plat.c | 52 ++++++++++++++++++++++++++++++++++++++++++--
>>  1 file changed, 50 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
>> index f5351af4b2c5..bb5d563f729c 100644
>> --- a/drivers/usb/host/xhci-plat.c
>> +++ b/drivers/usb/host/xhci-plat.c
>> @@ -11,6 +11,7 @@
>>   * version 2 as published by the Free Software Foundation.
>>   */
>>  
>> +#include <linux/clk.h>
>>  #include <linux/dma-mapping.h>
>>  #include <linux/module.h>
>>  #include <linux/of.h>
>> @@ -85,6 +86,42 @@ static const struct hc_driver xhci_plat_xhci_driver = {
>>  	.bus_resume =		xhci_bus_resume,
>>  };
>>  
>> +#if defined(CONFIG_HAVE_CLK)
>> +static int try_enable_clk(struct platform_device *pdev)
>> +{
>> +	struct clk *clk = devm_clk_get(&pdev->dev, NULL);
>> +
>> +	/* Not all platforms have a clk so it is not an error if the clock
>> +	   does not exists. */
>> +	if (!IS_ERR(clk))
> 
> Instead, do:
> 
> 	if (IS_ERR(clk))
> 		return 0;

As explained in the comment: Not all platforms have a clk so it is not an
error if the clock does not exists.

> 
> 	return clk_prepare_enable(clk);
> 
>> +		if (clk_prepare_enable(clk))
>> +			return  -ENODEV;
>> +	return 0;
>> +}
>> +
>> +static int try_disable_clk(struct platform_device *pdev)
>> +{
>> +	struct clk *clk = devm_clk_get(&pdev->dev, NULL);
> 
> No, this isn't correct: you shouldn't be getting the clock to
> disable/unprepare it, otherwise you have an unbalanced number of
> get()/put() calls on the clocks.
> 
> Thomas
> 


-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: Gregory CLEMENT <gregory.clement@free-electrons.com>
To: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Mathias Nyman <mathias.nyman@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Felipe Balbi <balbi@ti.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
	Lior Amsalem <alior@marvell.com>,
	Tawfik Bayouk <tawfik@marvell.com>,
	devicetree@vger.kernel.org, Nadav Haklai <nadavh@marvell.com>,
	Rob Herring <robh+dt@kernel.org>,
	Ezequiel Garcia <ezequiel.garcia@free-electrons.com>,
	Grant Likely <grant.likely@linaro.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 02/18] usb: host: xhci-plat: Add clocks support
Date: Fri, 25 Apr 2014 16:44:47 +0200	[thread overview]
Message-ID: <535A74DF.6090106@free-electrons.com> (raw)
In-Reply-To: <20140425161517.20821c65@skate>

On 25/04/2014 16:15, Thomas Petazzoni wrote:
> Dear Gregory CLEMENT,
> 
> On Fri, 25 Apr 2014 16:07:00 +0200, Gregory CLEMENT wrote:
>> Some platform (such as the Armada 38x ones) can gate the clock of
>> their USB controller. This patch add the support for the clock, by
>> enabling them during probe and disabling them on remove.
>>
>> As not all platforms have clock support then enabling and disabling
>> the clocks have been placed in separate functions. Then if the clocks
>> are not supported we still can use the same calls, and there is no
>>
>> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
>> ---
>>  drivers/usb/host/xhci-plat.c | 52 ++++++++++++++++++++++++++++++++++++++++++--
>>  1 file changed, 50 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
>> index f5351af4b2c5..bb5d563f729c 100644
>> --- a/drivers/usb/host/xhci-plat.c
>> +++ b/drivers/usb/host/xhci-plat.c
>> @@ -11,6 +11,7 @@
>>   * version 2 as published by the Free Software Foundation.
>>   */
>>  
>> +#include <linux/clk.h>
>>  #include <linux/dma-mapping.h>
>>  #include <linux/module.h>
>>  #include <linux/of.h>
>> @@ -85,6 +86,42 @@ static const struct hc_driver xhci_plat_xhci_driver = {
>>  	.bus_resume =		xhci_bus_resume,
>>  };
>>  
>> +#if defined(CONFIG_HAVE_CLK)
>> +static int try_enable_clk(struct platform_device *pdev)
>> +{
>> +	struct clk *clk = devm_clk_get(&pdev->dev, NULL);
>> +
>> +	/* Not all platforms have a clk so it is not an error if the clock
>> +	   does not exists. */
>> +	if (!IS_ERR(clk))
> 
> Instead, do:
> 
> 	if (IS_ERR(clk))
> 		return 0;

As explained in the comment: Not all platforms have a clk so it is not an
error if the clock does not exists.

> 
> 	return clk_prepare_enable(clk);
> 
>> +		if (clk_prepare_enable(clk))
>> +			return  -ENODEV;
>> +	return 0;
>> +}
>> +
>> +static int try_disable_clk(struct platform_device *pdev)
>> +{
>> +	struct clk *clk = devm_clk_get(&pdev->dev, NULL);
> 
> No, this isn't correct: you shouldn't be getting the clock to
> disable/unprepare it, otherwise you have an unbalanced number of
> get()/put() calls on the clocks.
> 
> Thomas
> 


-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2014-04-25 14:44 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-25 14:06 [PATCH v2 00/18] USB support for Armada 38x and Armada 375 Gregory CLEMENT
2014-04-25 14:06 ` Gregory CLEMENT
2014-04-25 14:06 ` Gregory CLEMENT
2014-04-25 14:06 ` [PATCH v2 01/18] usb: host: xhci-plat: Sort the headers in alphabetic order Gregory CLEMENT
2014-04-25 14:06   ` Gregory CLEMENT
2014-04-25 14:06   ` Gregory CLEMENT
2014-04-25 14:55   ` Felipe Balbi
2014-04-25 14:55     ` Felipe Balbi
2014-04-25 14:55     ` Felipe Balbi
2014-04-25 14:07 ` [PATCH v2 02/18] usb: host: xhci-plat: Add clocks support Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:15   ` Thomas Petazzoni
2014-04-25 14:15     ` Thomas Petazzoni
2014-04-25 14:44     ` Gregory CLEMENT [this message]
2014-04-25 14:44       ` Gregory CLEMENT
2014-04-25 14:48       ` Gregory CLEMENT
2014-04-25 14:48         ` Gregory CLEMENT
2014-04-25 14:48         ` Gregory CLEMENT
2014-04-25 14:20   ` Russell King - ARM Linux
2014-04-25 14:20     ` Russell King - ARM Linux
2014-04-25 14:20     ` Russell King - ARM Linux
2014-04-25 15:02   ` Felipe Balbi
2014-04-25 15:02     ` Felipe Balbi
2014-04-25 15:02     ` Felipe Balbi
2014-04-25 15:47   ` Andrew Lunn
2014-04-25 15:47     ` Andrew Lunn
2014-04-25 15:47     ` Andrew Lunn
2014-04-25 14:07 ` [PATCH v2 03/18] usb: host: xhci-plat: Add support for the Armada 38x Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:18   ` Thomas Petazzoni
2014-04-25 14:18     ` Thomas Petazzoni
2014-04-25 14:18     ` Thomas Petazzoni
2014-04-25 15:04   ` Felipe Balbi
2014-04-25 15:04     ` Felipe Balbi
2014-04-25 15:04     ` Felipe Balbi
2014-04-25 20:01   ` Arnd Bergmann
2014-04-25 20:01     ` Arnd Bergmann
2014-04-25 20:10     ` Felipe Balbi
2014-04-25 20:10       ` Felipe Balbi
2014-04-25 20:10       ` Felipe Balbi
2014-04-25 20:25     ` Thomas Petazzoni
2014-04-25 20:25       ` Thomas Petazzoni
2014-04-25 20:25       ` Thomas Petazzoni
2014-04-25 14:07 ` [PATCH v2 04/18] xhci-platform: Add a new controller using xhci: " Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 17:55   ` Sergei Shtylyov
2014-04-25 17:55     ` Sergei Shtylyov
2014-04-25 14:07 ` [PATCH v2 05/18] ARM: mvebu: Add Device Tree description of xHCI hosts on " Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 15:53   ` Andrew Lunn
2014-04-25 15:53     ` Andrew Lunn
2014-04-25 14:07 ` [PATCH v2 06/18] ARM: mvebu: Add Device Tree description of EHCI " Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 07/18] ARM: mvebu: Add USB3 support for " Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 08/18] ARM: configs: Add usb_xhci_mvebu to mvebu_v7_defconfig Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 09/18] ARM: configs: Add usb_xhci_mvebu to multi_v7_defconfig Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 10/18] usb: host: xhci-plat: Add support for the Armada 375 Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 11/18] xhci-platform: Add a new controller using xhci: " Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 12/18] ARM: mvebu: Add Device Tree description of USB cluster controller on " Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 13/18] dt: binding: Armada 375 USB cluster Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 14/18] ARM: mvebu: Add support for USB cluster on the Armada 375 SoC Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 15:43   ` Ezequiel Garcia
2014-04-25 15:43     ` Ezequiel Garcia
2014-04-25 15:43     ` Ezequiel Garcia
2014-04-25 15:59     ` Andrew Lunn
2014-04-25 15:59       ` Andrew Lunn
2014-04-25 16:07   ` Andrew Lunn
2014-04-25 16:07     ` Andrew Lunn
2014-04-25 16:13     ` Felipe Balbi
2014-04-25 16:13       ` Felipe Balbi
2014-04-25 16:13       ` Felipe Balbi
2014-04-25 14:07 ` [PATCH v2 15/18] ARM: mvebu: Add USB3 support for Armada 375 Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 16/18] ARM: mvebu: add USB3 controller Device Tree details " Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 17/18] ARM: mvebu: dts: Enable USB3 in Armada 375 DB Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT
2014-04-25 14:07 ` [PATCH v2 18/18] ARM: mvebu: Add Device Tree description of EHCI hosts on Armada 375 Gregory CLEMENT
2014-04-25 14:07   ` Gregory CLEMENT

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=535A74DF.6090106@free-electrons.com \
    --to=gregory.clement@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.