Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-13 Thread David Miller
From: Linus Walleij linus.wall...@linaro.org
Date: Mon, 10 Jun 2013 17:48:16 +0200

 On Fri, Jun 7, 2013 at 4:49 PM, Mugunthan V N mugunthan...@ti.com wrote:
 
 If you want to merge the direct networking parts of this series into
 another tree, I'm fine with that:

 Acked-by: David S. Miller da...@davemloft.net

 David

 Can you the below patch series as i have adopted pinctrl PM api in another
 series,
 this patch has direct usage of pinctrl_select_state apis
 http://marc.info/?l=linux-netdevm=137054250018667w=2

 Linus Walleij

 Please drop this patch series and take my other [atch set mentioned above
 with David's Ack.
 
 Sure I didn't see David ACK the new versions explicitly but
 since they're even less intrusive I'll apply them assuming
 his ACK on these versions too...

Just in case it isn't clear:

Acked-by: David S. Miller da...@davemloft.net
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-10 Thread Linus Walleij
On Fri, Jun 7, 2013 at 4:49 PM, Mugunthan V N mugunthan...@ti.com wrote:

 If you want to merge the direct networking parts of this series into
 another tree, I'm fine with that:

 Acked-by: David S. Miller da...@davemloft.net

 David

 Can you the below patch series as i have adopted pinctrl PM api in another
 series,
 this patch has direct usage of pinctrl_select_state apis
 http://marc.info/?l=linux-netdevm=137054250018667w=2

 Linus Walleij

 Please drop this patch series and take my other [atch set mentioned above
 with David's Ack.

Sure I didn't see David ACK the new versions explicitly but
since they're even less intrusive I'll apply them assuming
his ACK on these versions too...

Yours,
Linus Walleij
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-07 Thread Linus Walleij
On Thu, Jun 6, 2013 at 10:50 AM, Mark Brown broo...@kernel.org wrote:
 On Thu, Jun 06, 2013 at 11:29:39AM +0530, Mugunthan V N wrote:
 On 6/6/2013 12:53 AM, Mark Brown wrote:

 Linus Walleij posted some patches which factor the state setting code
 out into generic functions earlier on today - it probably makes sense to
 pick those up rather than open coding

 But this can go in as Linus Walleij's patch is not accepted yet.
 Once that is
 accepted and present in net git repo I will submit a separate patch to use
 those APIs from pin ctrl core.

 Linus' change has pretty much gone in already but in any case what would
 be sensible here would be to write this in turns of Linus' changes and
 then send the patch to him to add to his series so it can go in via the
 same route.  One of the major reasons for the patch was that lots of
 people were querying the amount of noise caused by this sort of change.

I agree. We should be able to settle on the new core API quite soon,
then I can carry the patch to this driver if you obtain David's ACK.

Yours,
Linus Walleij
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-07 Thread David Miller
From: Linus Walleij linus.wall...@linaro.org
Date: Fri, 7 Jun 2013 09:31:58 +0200

 On Thu, Jun 6, 2013 at 10:50 AM, Mark Brown broo...@kernel.org wrote:
 On Thu, Jun 06, 2013 at 11:29:39AM +0530, Mugunthan V N wrote:
 On 6/6/2013 12:53 AM, Mark Brown wrote:

 Linus Walleij posted some patches which factor the state setting code
 out into generic functions earlier on today - it probably makes sense to
 pick those up rather than open coding

 But this can go in as Linus Walleij's patch is not accepted yet.
 Once that is
 accepted and present in net git repo I will submit a separate patch to use
 those APIs from pin ctrl core.

 Linus' change has pretty much gone in already but in any case what would
 be sensible here would be to write this in turns of Linus' changes and
 then send the patch to him to add to his series so it can go in via the
 same route.  One of the major reasons for the patch was that lots of
 people were querying the amount of noise caused by this sort of change.
 
 I agree. We should be able to settle on the new core API quite soon,
 then I can carry the patch to this driver if you obtain David's ACK.

If you want to merge the direct networking parts of this series into
another tree, I'm fine with that:

Acked-by: David S. Miller da...@davemloft.net
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-07 Thread Mugunthan V N

On 6/7/2013 1:12 PM, David Miller wrote:

From: Linus Walleij linus.wall...@linaro.org
Date: Fri, 7 Jun 2013 09:31:58 +0200


On Thu, Jun 6, 2013 at 10:50 AM, Mark Brown broo...@kernel.org wrote:

On Thu, Jun 06, 2013 at 11:29:39AM +0530, Mugunthan V N wrote:

On 6/6/2013 12:53 AM, Mark Brown wrote:

Linus Walleij posted some patches which factor the state setting code
out into generic functions earlier on today - it probably makes sense to
pick those up rather than open coding

But this can go in as Linus Walleij's patch is not accepted yet.
Once that is
accepted and present in net git repo I will submit a separate patch to use
those APIs from pin ctrl core.

Linus' change has pretty much gone in already but in any case what would
be sensible here would be to write this in turns of Linus' changes and
then send the patch to him to add to his series so it can go in via the
same route.  One of the major reasons for the patch was that lots of
people were querying the amount of noise caused by this sort of change.

I agree. We should be able to settle on the new core API quite soon,
then I can carry the patch to this driver if you obtain David's ACK.

If you want to merge the direct networking parts of this series into
another tree, I'm fine with that:

Acked-by: David S. Miller da...@davemloft.net

David

Can you the below patch series as i have adopted pinctrl PM api in 
another series,

this patch has direct usage of pinctrl_select_state apis
http://marc.info/?l=linux-netdevm=137054250018667w=2

Linus Walleij

Please drop this patch series and take my other [atch set mentioned above
with David's Ack.

Regards
Mugunthan V N

___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-06 Thread Mugunthan V N

On 6/6/2013 12:53 AM, Mark Brown wrote:

On Wed, Jun 05, 2013 at 10:38:15PM +0530, Mugunthan V N wrote:

From: Hebbar Gururaja gururaja.heb...@ti.com

Amend cpsw controller to optionally take a pin control handle and set
the state of the pins to:

- default on boot, resume
- sleep on suspend()

Linus Walleij posted some patches which factor the state setting code
out into generic functions earlier on today - it probably makes sense to
pick those up rather than open coding
But this can go in as Linus Walleij's patch is not accepted yet. Once 
that is

accepted and present in net git repo I will submit a separate patch to use
those APIs from pin ctrl core.

Regards
Mugunthan V N
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-06 Thread Mark Brown
On Thu, Jun 06, 2013 at 11:29:39AM +0530, Mugunthan V N wrote:
 On 6/6/2013 12:53 AM, Mark Brown wrote:

 Linus Walleij posted some patches which factor the state setting code
 out into generic functions earlier on today - it probably makes sense to
 pick those up rather than open coding

 But this can go in as Linus Walleij's patch is not accepted yet.
 Once that is
 accepted and present in net git repo I will submit a separate patch to use
 those APIs from pin ctrl core.

Linus' change has pretty much gone in already but in any case what would
be sensible here would be to write this in turns of Linus' changes and
then send the patch to him to add to his series so it can go in via the
same route.  One of the major reasons for the patch was that lots of
people were querying the amount of noise caused by this sort of change.


signature.asc
Description: Digital signature
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


[net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-05 Thread Mugunthan V N
From: Hebbar Gururaja gururaja.heb...@ti.com

Amend cpsw controller to optionally take a pin control handle and set
the state of the pins to:

- default on boot, resume
- sleep on suspend()

This should make it possible to optimize energy usage for the pins
for the suspend/resume cycle.

If any of the above pin states are missing in dt, a warning message
about the missing state is displayed.
If certain pin-states are not available, to remove this warning message
pass respective state name with null phandler.

Signed-off-by: Hebbar Gururaja gururaja.heb...@ti.com
Signed-off-by: Mugunthan V N mugunthan...@ti.com
---
 drivers/net/ethernet/ti/cpsw.c |   48 
 1 file changed, 48 insertions(+)

diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index a45f64e..0599515 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -35,6 +35,7 @@
 #include linux/if_vlan.h
 
 #include linux/platform_data/cpsw.h
+#include linux/pinctrl/consumer.h
 
 #include cpsw_ale.h
 #include cpts.h
@@ -351,6 +352,11 @@ struct cpsw_priv {
bool irq_enabled;
struct cpts *cpts;
u32 emac_port;
+
+   /* Two optional pin states - default  sleep */
+   struct pinctrl  *pinctrl;
+   struct pinctrl_state*pins_def;
+   struct pinctrl_state*pins_sleep;
 };
 
 #define napi_to_priv(napi) container_of(napi, struct cpsw_priv, napi)
@@ -1691,6 +1697,35 @@ static int cpsw_probe(struct platform_device *pdev)
 */
pm_runtime_enable(pdev-dev);
 
+   priv-pinctrl = devm_pinctrl_get(pdev-dev);
+   if (!IS_ERR(priv-pinctrl)) {
+   priv-pins_def = pinctrl_lookup_state(priv-pinctrl,
+ PINCTRL_STATE_DEFAULT);
+   /* enable pins to be muxed in and configured */
+   if (IS_ERR(priv-pins_def))
+   dev_warn(pdev-dev, could not get default 
pinstate\n);
+   else
+   if (pinctrl_select_state(priv-pinctrl,
+priv-pins_def))
+   dev_err(pdev-dev,
+   could not set default pins\n);
+
+   priv-pins_sleep = pinctrl_lookup_state(priv-pinctrl,
+   PINCTRL_STATE_SLEEP);
+   if (IS_ERR(priv-pins_sleep))
+   dev_warn(pdev-dev, could not get sleep pinstate\n);
+   } else {
+   /* Since we continue even when pinctrl node is not found,
+* Invalidate pins as not available. This is to make sure that
+* IS_ERR(pins_xxx) results in failure when used.
+*/
+   priv-pins_def = ERR_PTR(-ENODATA);
+   priv-pins_sleep = ERR_PTR(-ENODATA);
+
+   dev_warn(pdev-dev,
+pins are not configured from the driver\n);
+   }
+
if (cpsw_probe_dt(priv-data, pdev)) {
pr_err(cpsw: platform data missing\n);
ret = -ENODEV;
@@ -1974,11 +2009,17 @@ static int cpsw_suspend(struct device *dev)
 {
struct platform_device  *pdev = to_platform_device(dev);
struct net_device   *ndev = platform_get_drvdata(pdev);
+   struct cpsw_priv*priv = netdev_priv(ndev);
 
if (netif_running(ndev))
cpsw_ndo_stop(ndev);
pm_runtime_put_sync(pdev-dev);
 
+   /* Optionally let pins go into sleep states */
+   if (!IS_ERR(priv-pins_sleep))
+   if (pinctrl_select_state(priv-pinctrl, priv-pins_sleep))
+   dev_err(dev, could not set pins to sleep state\n);
+
return 0;
 }
 
@@ -1986,8 +2027,15 @@ static int cpsw_resume(struct device *dev)
 {
struct platform_device  *pdev = to_platform_device(dev);
struct net_device   *ndev = platform_get_drvdata(pdev);
+   struct cpsw_priv*priv = netdev_priv(ndev);
 
pm_runtime_get_sync(pdev-dev);
+
+   /* Optionaly enable pins to be muxed in and configured */
+   if (!IS_ERR(priv-pins_def))
+   if (pinctrl_select_state(priv-pinctrl, priv-pins_def))
+   dev_err(dev, could not set default pins\n);
+
if (netif_running(ndev))
cpsw_ndo_open(ndev);
return 0;
-- 
1.7.9.5

___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [net-next PATCH v4 1/5] net: cpsw: enhance pinctrl support

2013-06-05 Thread Mark Brown
On Wed, Jun 05, 2013 at 10:38:15PM +0530, Mugunthan V N wrote:
 From: Hebbar Gururaja gururaja.heb...@ti.com
 
 Amend cpsw controller to optionally take a pin control handle and set
 the state of the pins to:
 
 - default on boot, resume
 - sleep on suspend()

Linus Walleij posted some patches which factor the state setting code
out into generic functions earlier on today - it probably makes sense to
pick those up rather than open coding


signature.asc
Description: Digital signature
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss