[net-next PATCH v3 1/6] net: cpsw: enhance pinctrl support
Tony Lindgren
tony at atomide.com
Tue May 28 07:36:01 EST 2013
* Mugunthan V N <mugunthanvnm at ti.com> [130526 11:28]:
> From: Hebbar Gururaja <gururaja.hebbar at 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.hebbar at ti.com>
> Signed-off-by: Mugunthan V N <mugunthanvnm at 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 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
More information about the devicetree-discuss
mailing list