All of lore.kernel.org
 help / color / mirror / Atom feed
From: thomas.petazzoni@free-electrons.com (Thomas Petazzoni)
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:15:17 +0200	[thread overview]
Message-ID: <20140425161517.20821c65@skate> (raw)
In-Reply-To: <1398434836-18908-3-git-send-email-gregory.clement@free-electrons.com>

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;

	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
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: Gregory CLEMENT <gregory.clement@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:15:17 +0200	[thread overview]
Message-ID: <20140425161517.20821c65@skate> (raw)
In-Reply-To: <1398434836-18908-3-git-send-email-gregory.clement@free-electrons.com>

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;

	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
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

  reply	other threads:[~2014-04-25 14:15 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 [this message]
2014-04-25 14:15     ` Thomas Petazzoni
2014-04-25 14:44     ` Gregory CLEMENT
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=20140425161517.20821c65@skate \
    --to=thomas.petazzoni@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.