| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- From: Shiji Yang <[email protected]>
 
- Date: Wed, 26 Jul 2023 01:32:55 +0800
 
- Subject: [PATCH] pinctrl: mtmips: support requesting different functions for
 
-  same group
 
- Sometimes pinctrl consumers may request different functions for the
 
- same pin group in different situations. This patch can help to reset
 
- the group function flag when requesting a different function.
 
- Signed-off-by: Shiji Yang <[email protected]>
 
- ---
 
-  drivers/pinctrl/mediatek/pinctrl-mtmips.c | 21 +++++++++++++++++----
 
-  1 file changed, 17 insertions(+), 4 deletions(-)
 
- --- a/drivers/pinctrl/mediatek/pinctrl-mtmips.c
 
- +++ b/drivers/pinctrl/mediatek/pinctrl-mtmips.c
 
- @@ -123,11 +123,24 @@ static int mtmips_pmx_group_enable(struc
 
-  	int i;
 
-  	int shift;
 
-  
 
- -	/* dont allow double use */
 
- +	/*
 
- +	 * for the same pin group, if request a different function,
 
- +	 * then clear the group function flag and continue, else exit.
 
- +	 */
 
-  	if (p->groups[group].enabled) {
 
- -		dev_err(p->dev, "%s is already enabled\n",
 
- -			p->groups[group].name);
 
- -		return 0;
 
- +		for (i = 0; i < p->groups[group].func_count; i++) {
 
- +			if (p->groups[group].func[i].enabled == 1) {
 
- +				if (!strcmp(p->func[func]->name,
 
- +					p->groups[group].func[i].name))
 
- +					return 0;
 
- +				p->groups[group].func[i].enabled = 0;
 
- +				break;
 
- +			}
 
- +		}
 
- +
 
- +		/* exit if request the "gpio" function again */
 
- +		if (i == p->groups[group].func_count && func == 0)
 
- +			return 0;
 
-  	}
 
-  
 
-  	p->groups[group].enabled = 1;
 
 
  |