* Mugunthan V N <mugunthanvnm@xxxxxx> [130526 11:28]: > From: Hebbar Gururaja <gururaja.hebbar@xxxxxx> > > 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.hebbar@xxxxxx> > Signed-off-by: Mugunthan V N <mugunthanvnm@xxxxxx> > --- > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html