From: Marc Kleine-Budde <mkl@pengutronix.de>
To: AnilKumar Ch <anilkumar@ti.com>
Cc: wg@grandegger.com, khilman@deeprootsystems.com,
linux-can@vger.kernel.org, linux-omap@vger.kernel.org,
anantgole@ti.com, nsekhar@ti.com
Subject: Re: [PATCH] can: c_can: Move pm_runtime_enable/disable calls to common code
Date: Thu, 13 Sep 2012 09:48:07 +0200 [thread overview]
Message-ID: <50518FB7.7090300@pengutronix.de> (raw)
In-Reply-To: <1347521292-28751-1-git-send-email-anilkumar@ti.com>
[-- Attachment #1: Type: text/plain, Size: 3742 bytes --]
On 09/13/2012 09:28 AM, AnilKumar Ch wrote:
> Move pm_runtime_enable/disable calls to c_can.c driver. Current
> implementation is such that platform driver is doing pm_runtime
> enable/disable and core driver is doing put_sync/get_sync.
>
> PM runtime calls should be invoked if there is a valid device
> pointer from platform driver so moving enable/disable calls
> to core driver.
>
> Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
> ---
> Incorporated Kevin's comments on "can: c_can: Add runtime PM
> support to Bosch C_CAN/D_CAN controller" patch.
>
> This patch is tested on AM335x-EVM and cleanly applies on
> linux-can master
I'll squash this into "can: c_can: Add runtime PM support to Bosch
C_CAN/D_CAN controller".
>
> drivers/net/can/c_can/c_can.c | 18 +++++++++++++++++-
> drivers/net/can/c_can/c_can_platform.c | 5 -----
> 2 files changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
> index aa6c5eb..e472975 100644
> --- a/drivers/net/can/c_can/c_can.c
> +++ b/drivers/net/can/c_can/c_can.c
> @@ -1155,10 +1155,23 @@ static const struct net_device_ops c_can_netdev_ops = {
>
> int register_c_can_dev(struct net_device *dev)
> {
> + int ret;
> + struct c_can_priv *priv = netdev_priv(dev);
> +
> + if (priv->device)
> + pm_runtime_enable(priv->device);
I'll add a static inline for these two new function, too.
> +
> dev->flags |= IFF_ECHO; /* we support local echo */
> dev->netdev_ops = &c_can_netdev_ops;
>
> - return register_candev(dev);
> + ret = register_candev(dev);
> + if (ret) {
> + if (priv->device)
> + pm_runtime_disable(priv->device);
> + return ret;
> + }
> +
> + return 0;
> }
> EXPORT_SYMBOL_GPL(register_c_can_dev);
>
> @@ -1170,6 +1183,9 @@ void unregister_c_can_dev(struct net_device *dev)
> c_can_enable_all_interrupts(priv, DISABLE_ALL_INTERRUPTS);
>
> unregister_candev(dev);
> +
> + if (priv->device)
> + pm_runtime_disable(priv->device);
> }
> EXPORT_SYMBOL_GPL(unregister_c_can_dev);
>
> diff --git a/drivers/net/can/c_can/c_can_platform.c b/drivers/net/can/c_can/c_can_platform.c
> index c351975..491101a 100644
> --- a/drivers/net/can/c_can/c_can_platform.c
> +++ b/drivers/net/can/c_can/c_can_platform.c
> @@ -32,7 +32,6 @@
> #include <linux/clk.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> -#include <linux/pm_runtime.h>
> #include <linux/pinctrl/consumer.h>
>
> #include <linux/can/dev.h>
> @@ -185,8 +184,6 @@ static int __devinit c_can_plat_probe(struct platform_device *pdev)
> goto exit_free_device;
> }
>
> - pm_runtime_enable(&pdev->dev);
> -
> dev->irq = irq;
> priv->base = addr;
> priv->device = &pdev->dev;
> @@ -209,7 +206,6 @@ static int __devinit c_can_plat_probe(struct platform_device *pdev)
>
> exit_clear_drvdata:
> platform_set_drvdata(pdev, NULL);
> - pm_runtime_disable(&pdev->dev);
When squaahsing both patches we see still some changes here, I'll fix
that, too.
> exit_free_device:
> free_c_can_dev(dev);
> exit_iounmap:
> @@ -239,7 +235,6 @@ static int __devexit c_can_plat_remove(struct platform_device *pdev)
> mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> release_mem_region(mem->start, resource_size(mem));
>
> - pm_runtime_disable(&pdev->dev);
> clk_put(priv->priv);
>
> return 0;
>
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]
next prev parent reply other threads:[~2012-09-13 7:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-13 7:28 [PATCH] can: c_can: Move pm_runtime_enable/disable calls to common code AnilKumar Ch
2012-09-13 7:48 ` Marc Kleine-Budde [this message]
2012-09-13 8:25 ` AnilKumar, Chimata
2012-09-13 14:14 ` Kevin Hilman
2012-09-13 14:19 ` Marc Kleine-Budde
2012-09-13 21:35 ` Kevin Hilman
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=50518FB7.7090300@pengutronix.de \
--to=mkl@pengutronix.de \
--cc=anantgole@ti.com \
--cc=anilkumar@ti.com \
--cc=khilman@deeprootsystems.com \
--cc=linux-can@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=nsekhar@ti.com \
--cc=wg@grandegger.com \
/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.