1
0
Fork 0
forked from mirror/openwrt
openwrt/target/linux/ramips/patches-6.6/808-pinctrl-mtmips-support-requesting-different-function.patch
Mieczyslaw Nalewaj e0f7afef1a kernel/ramips: Restore kernel files for v6.6
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.

For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/18654
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-11 14:12:25 +02:00

45 lines
1.4 KiB
Diff

From: Shiji Yang <yangshiji66@outlook.com>
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 <yangshiji66@outlook.com>
---
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;