Re: [net-next PATCH v3 1/6] net: cpsw: enhance pinctrl support
From: Tony Lindgren <tony@atomide.com>
Date: 2013-05-27 21:36:01
Also in:
linux-devicetree, linux-omap
* Mugunthan V N [off-list ref] [130526 11:28]:
quoted hunk ↗ jump to hunk
From: Hebbar Gururaja <redacted> 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 <redacted> Signed-off-by: Mugunthan V N <redacted> --- 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 21a5b29..c9ed730 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; };
Which pins do you need to dynamically remux? If it's not all the pins, you should have three sets: default, active and idle. This way the static pins in the default group don't need to be constantly toggled. Regards, Tony