Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user