netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed
@ 2019-12-10  9:00 Joakim Zhang
  2019-12-10  9:00 ` [PATCH V2 2/2] can: flexcan: disable clocks during stop mode Joakim Zhang
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Joakim Zhang @ 2019-12-10  9:00 UTC (permalink / raw)
  To: mkl, sean, linux-can; +Cc: dl-linux-imx, netdev, Joakim Zhang

Had better disable runtime PM if register flexcandev failed.

Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
------
ChangeLog:
	V1->V2: *no change.
---
 drivers/net/can/flexcan.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 3a754355ebe6..6c1ccf9f6c08 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -1681,6 +1681,8 @@ static int flexcan_probe(struct platform_device *pdev)
 	return 0;
 
  failed_register:
+	pm_runtime_put_noidle(&pdev->dev);
+	pm_runtime_disable(&pdev->dev);
 	free_candev(dev);
 	return err;
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH V2 2/2] can: flexcan: disable clocks during stop mode
  2019-12-10  9:00 [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
@ 2019-12-10  9:00 ` Joakim Zhang
  2019-12-18 14:00   ` Sean Nyekjaer
  2019-12-17  6:36 ` [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
  2019-12-18 14:00 ` Sean Nyekjaer
  2 siblings, 1 reply; 8+ messages in thread
From: Joakim Zhang @ 2019-12-10  9:00 UTC (permalink / raw)
  To: mkl, sean, linux-can; +Cc: dl-linux-imx, netdev, Joakim Zhang

Disable clocks during CAN in stop mode.

Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
------
ChangeLog:
	V1->V2: * moving the pm_runtime_force_suspend() call for both
	cases "device_may_wakeup()" and "!device_may_wakeup()" into the
	flexcan_noirq_suspend() handler
---
 drivers/net/can/flexcan.c | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 6c1ccf9f6c08..63b2f47635cf 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -1718,10 +1718,6 @@ static int __maybe_unused flexcan_suspend(struct device *device)
 			if (err)
 				return err;
 
-			err = pm_runtime_force_suspend(device);
-			if (err)
-				return err;
-
 			err = pinctrl_pm_select_sleep_state(device);
 			if (err)
 				return err;
@@ -1751,10 +1747,6 @@ static int __maybe_unused flexcan_resume(struct device *device)
 			if (err)
 				return err;
 
-			err = pm_runtime_force_resume(device);
-			if (err)
-				return err;
-
 			err = flexcan_chip_start(dev);
 			if (err)
 				return err;
@@ -1786,9 +1778,16 @@ static int __maybe_unused flexcan_noirq_suspend(struct device *device)
 {
 	struct net_device *dev = dev_get_drvdata(device);
 	struct flexcan_priv *priv = netdev_priv(dev);
+	int err;
 
-	if (netif_running(dev) && device_may_wakeup(device))
-		flexcan_enable_wakeup_irq(priv, true);
+	if (netif_running(dev)) {
+		if (device_may_wakeup(device))
+			flexcan_enable_wakeup_irq(priv, true);
+
+		err = pm_runtime_force_suspend(device);
+		if (err)
+			return err;
+	}
 
 	return 0;
 }
@@ -1799,11 +1798,18 @@ static int __maybe_unused flexcan_noirq_resume(struct device *device)
 	struct flexcan_priv *priv = netdev_priv(dev);
 	int err;
 
-	if (netif_running(dev) && device_may_wakeup(device)) {
-		flexcan_enable_wakeup_irq(priv, false);
-		err = flexcan_exit_stop_mode(priv);
+	if (netif_running(dev)) {
+		err = pm_runtime_force_resume(device);
 		if (err)
 			return err;
+
+		if (device_may_wakeup(device)) {
+			flexcan_enable_wakeup_irq(priv, false);
+
+			err = flexcan_exit_stop_mode(priv);
+			if (err)
+				return err;
+		}
 	}
 
 	return 0;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* RE: [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed
  2019-12-10  9:00 [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
  2019-12-10  9:00 ` [PATCH V2 2/2] can: flexcan: disable clocks during stop mode Joakim Zhang
@ 2019-12-17  6:36 ` Joakim Zhang
  2019-12-18 14:03   ` Sean Nyekjaer
  2019-12-18 14:00 ` Sean Nyekjaer
  2 siblings, 1 reply; 8+ messages in thread
From: Joakim Zhang @ 2019-12-17  6:36 UTC (permalink / raw)
  To: mkl, sean, linux-can; +Cc: dl-linux-imx, netdev


Hi Sean,

Have you found time to test this patch set? Thanks :-)

Best Regards,
Joakim Zhang

> -----Original Message-----
> From: Joakim Zhang <qiangqing.zhang@nxp.com>
> Sent: 2019年12月10日 17:00
> To: mkl@pengutronix.de; sean@geanix.com; linux-can@vger.kernel.org
> Cc: dl-linux-imx <linux-imx@nxp.com>; netdev@vger.kernel.org; Joakim Zhang
> <qiangqing.zhang@nxp.com>
> Subject: [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev
> failed
> 
> Had better disable runtime PM if register flexcandev failed.
> 
> Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
> ------
> ChangeLog:
> 	V1->V2: *no change.
> ---
>  drivers/net/can/flexcan.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index
> 3a754355ebe6..6c1ccf9f6c08 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -1681,6 +1681,8 @@ static int flexcan_probe(struct platform_device
> *pdev)
>  	return 0;
> 
>   failed_register:
> +	pm_runtime_put_noidle(&pdev->dev);
> +	pm_runtime_disable(&pdev->dev);
>  	free_candev(dev);
>  	return err;
>  }
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed
  2019-12-10  9:00 [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
  2019-12-10  9:00 ` [PATCH V2 2/2] can: flexcan: disable clocks during stop mode Joakim Zhang
  2019-12-17  6:36 ` [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
@ 2019-12-18 14:00 ` Sean Nyekjaer
  2 siblings, 0 replies; 8+ messages in thread
From: Sean Nyekjaer @ 2019-12-18 14:00 UTC (permalink / raw)
  To: Joakim Zhang, mkl, linux-can; +Cc: dl-linux-imx, netdev



On 10/12/2019 10.00, Joakim Zhang wrote:
> Had better disable runtime PM if register flexcandev failed.
> 
> Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Tested-by: Sean Nyekjaer <sean@geanix.com>
> ------
> ChangeLog:
> 	V1->V2: *no change.
> ---
>   drivers/net/can/flexcan.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> index 3a754355ebe6..6c1ccf9f6c08 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -1681,6 +1681,8 @@ static int flexcan_probe(struct platform_device *pdev)
>   	return 0;
>   
>    failed_register:
> +	pm_runtime_put_noidle(&pdev->dev);
> +	pm_runtime_disable(&pdev->dev);
>   	free_candev(dev);
>   	return err;
>   }
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2 2/2] can: flexcan: disable clocks during stop mode
  2019-12-10  9:00 ` [PATCH V2 2/2] can: flexcan: disable clocks during stop mode Joakim Zhang
@ 2019-12-18 14:00   ` Sean Nyekjaer
  0 siblings, 0 replies; 8+ messages in thread
From: Sean Nyekjaer @ 2019-12-18 14:00 UTC (permalink / raw)
  To: Joakim Zhang, mkl, linux-can; +Cc: dl-linux-imx, netdev



On 10/12/2019 10.00, Joakim Zhang wrote:
> Disable clocks during CAN in stop mode.
> 
> Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Tested-by: Sean Nyekjaer <sean@geanix.com>
> ------
> ChangeLog:
> 	V1->V2: * moving the pm_runtime_force_suspend() call for both
> 	cases "device_may_wakeup()" and "!device_may_wakeup()" into the
> 	flexcan_noirq_suspend() handler
> ---
>   drivers/net/can/flexcan.c | 32 +++++++++++++++++++-------------
>   1 file changed, 19 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> index 6c1ccf9f6c08..63b2f47635cf 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -1718,10 +1718,6 @@ static int __maybe_unused flexcan_suspend(struct device *device)
>   			if (err)
>   				return err;
>   
> -			err = pm_runtime_force_suspend(device);
> -			if (err)
> -				return err;
> -
>   			err = pinctrl_pm_select_sleep_state(device);
>   			if (err)
>   				return err;
> @@ -1751,10 +1747,6 @@ static int __maybe_unused flexcan_resume(struct device *device)
>   			if (err)
>   				return err;
>   
> -			err = pm_runtime_force_resume(device);
> -			if (err)
> -				return err;
> -
>   			err = flexcan_chip_start(dev);
>   			if (err)
>   				return err;
> @@ -1786,9 +1778,16 @@ static int __maybe_unused flexcan_noirq_suspend(struct device *device)
>   {
>   	struct net_device *dev = dev_get_drvdata(device);
>   	struct flexcan_priv *priv = netdev_priv(dev);
> +	int err;
>   
> -	if (netif_running(dev) && device_may_wakeup(device))
> -		flexcan_enable_wakeup_irq(priv, true);
> +	if (netif_running(dev)) {
> +		if (device_may_wakeup(device))
> +			flexcan_enable_wakeup_irq(priv, true);
> +
> +		err = pm_runtime_force_suspend(device);
> +		if (err)
> +			return err;
> +	}
>   
>   	return 0;
>   }
> @@ -1799,11 +1798,18 @@ static int __maybe_unused flexcan_noirq_resume(struct device *device)
>   	struct flexcan_priv *priv = netdev_priv(dev);
>   	int err;
>   
> -	if (netif_running(dev) && device_may_wakeup(device)) {
> -		flexcan_enable_wakeup_irq(priv, false);
> -		err = flexcan_exit_stop_mode(priv);
> +	if (netif_running(dev)) {
> +		err = pm_runtime_force_resume(device);
>   		if (err)
>   			return err;
> +
> +		if (device_may_wakeup(device)) {
> +			flexcan_enable_wakeup_irq(priv, false);
> +
> +			err = flexcan_exit_stop_mode(priv);
> +			if (err)
> +				return err;
> +		}
>   	}
>   
>   	return 0;
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed
  2019-12-17  6:36 ` [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
@ 2019-12-18 14:03   ` Sean Nyekjaer
  2019-12-19  4:59     ` Joakim Zhang
  0 siblings, 1 reply; 8+ messages in thread
From: Sean Nyekjaer @ 2019-12-18 14:03 UTC (permalink / raw)
  To: Joakim Zhang, mkl, linux-can; +Cc: dl-linux-imx, netdev



On 17/12/2019 07.36, Joakim Zhang wrote:
> 
> Hi Sean,
> 
> Have you found time to test this patch set? Thanks :-)
> 
> Best Regards,
> Joakim Zhang
> 

Hi Joakim

Sorry for the delay :)

I have tested this patchset and found no issues...

Just a heads up when adding "ChangeLog:" do it under the "---" and above 
the diff. That way the ChangeLog doesn't end up in the commit msg...

/Sean



^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed
  2019-12-18 14:03   ` Sean Nyekjaer
@ 2019-12-19  4:59     ` Joakim Zhang
  2020-01-03  7:37       ` Joakim Zhang
  0 siblings, 1 reply; 8+ messages in thread
From: Joakim Zhang @ 2019-12-19  4:59 UTC (permalink / raw)
  To: Sean Nyekjaer, mkl, linux-can; +Cc: dl-linux-imx, netdev


> -----Original Message-----
> From: Sean Nyekjaer <sean@geanix.com>
> Sent: 2019年12月18日 22:04
> To: Joakim Zhang <qiangqing.zhang@nxp.com>; mkl@pengutronix.de;
> linux-can@vger.kernel.org
> Cc: dl-linux-imx <linux-imx@nxp.com>; netdev@vger.kernel.org
> Subject: Re: [PATCH V2 1/2] can: flexcan: disable runtime PM if register
> flexcandev failed
> 
> 
> 
> On 17/12/2019 07.36, Joakim Zhang wrote:
> >
> > Hi Sean,
> >
> > Have you found time to test this patch set? Thanks :-)
> >
> > Best Regards,
> > Joakim Zhang
> >
> 
> Hi Joakim
> 
> Sorry for the delay :)
> 
> I have tested this patchset and found no issues...
Thanks a lot for your test, Sean :-)

> Just a heads up when adding "ChangeLog:" do it under the "---" and above the
> diff. That way the ChangeLog doesn't end up in the commit msg...
I will keep in mind, pay attention to it next time.

Best Regards,
Joakim Zhang
> /Sean
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed
  2019-12-19  4:59     ` Joakim Zhang
@ 2020-01-03  7:37       ` Joakim Zhang
  0 siblings, 0 replies; 8+ messages in thread
From: Joakim Zhang @ 2020-01-03  7:37 UTC (permalink / raw)
  To: Sean Nyekjaer, mkl, linux-can; +Cc: dl-linux-imx, netdev


> -----Original Message-----
> From: Joakim Zhang <qiangqing.zhang@nxp.com>
> Sent: 2019年12月19日 13:00
> To: Sean Nyekjaer <sean@geanix.com>; mkl@pengutronix.de;
> linux-can@vger.kernel.org
> Cc: dl-linux-imx <linux-imx@nxp.com>; netdev@vger.kernel.org
> Subject: RE: [PATCH V2 1/2] can: flexcan: disable runtime PM if register
> flexcandev failed
> 
> 
> > -----Original Message-----
> > From: Sean Nyekjaer <sean@geanix.com>
> > Sent: 2019年12月18日 22:04
> > To: Joakim Zhang <qiangqing.zhang@nxp.com>; mkl@pengutronix.de;
> > linux-can@vger.kernel.org
> > Cc: dl-linux-imx <linux-imx@nxp.com>; netdev@vger.kernel.org
> > Subject: Re: [PATCH V2 1/2] can: flexcan: disable runtime PM if
> > register flexcandev failed
> >
> >
> >
> > On 17/12/2019 07.36, Joakim Zhang wrote:
> > >
> > > Hi Sean,
> > >
> > > Have you found time to test this patch set? Thanks :-)
> > >
> > > Best Regards,
> > > Joakim Zhang
> > >
> >
> > Hi Joakim
> >
> > Sorry for the delay :)
> >
> > I have tested this patchset and found no issues...
> Thanks a lot for your test, Sean :-)
> 
> > Just a heads up when adding "ChangeLog:" do it under the "---" and
> > above the diff. That way the ChangeLog doesn't end up in the commit msg...
> I will keep in mind, pay attention to it next time.
> 
> Best Regards,
> Joakim Zhang
> > /Sean
> >

Hi Marc,

How about this patch set? Sean has already test it.

And when you plan to send Flexcan FD related patched to mainline, since it is pending on linux-can-next/flexcan branch for a long time. Could it go into v5.6 kernel? Thanks a lot :-)

Marc, Sean, you are all CAN experts. A question confused me for a long time, is that why CAN must need a transceiver to convert digital signal to differential signal? Why CAN cannot communicate with digital signal?
Could you give me a simple explanation? Thanks.

Best Regards,
Joakim Zhang

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-01-03  7:37 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-10  9:00 [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
2019-12-10  9:00 ` [PATCH V2 2/2] can: flexcan: disable clocks during stop mode Joakim Zhang
2019-12-18 14:00   ` Sean Nyekjaer
2019-12-17  6:36 ` [PATCH V2 1/2] can: flexcan: disable runtime PM if register flexcandev failed Joakim Zhang
2019-12-18 14:03   ` Sean Nyekjaer
2019-12-19  4:59     ` Joakim Zhang
2020-01-03  7:37       ` Joakim Zhang
2019-12-18 14:00 ` Sean Nyekjaer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).