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/ralink/pinctrl-ralink.c | 21 +++++++++++++++++----
- 1 file changed, 17 insertions(+), 4 deletions(-)
- --- a/drivers/pinctrl/ralink/pinctrl-ralink.c
- +++ b/drivers/pinctrl/ralink/pinctrl-ralink.c
- @@ -123,11 +123,24 @@ static int ralink_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;
|