[PATCH] pinctrl: mtmips: support requesting different functions for same group
Arınç ÜNAL
arinc.unal at arinc9.com
Sat Jul 29 09:39:34 PDT 2023
On 26.07.2023 03:48, Shiji Yang wrote:
> 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 at outlook.com>
> ---
> drivers/pinctrl/mediatek/pinctrl-mtmips.c | 21 +++++++++++++++++----
> 1 file changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pinctrl/mediatek/pinctrl-mtmips.c b/drivers/pinctrl/mediatek/pinctrl-mtmips.c
> index efd77b6c5..e5e085915 100644
> --- a/drivers/pinctrl/mediatek/pinctrl-mtmips.c
> +++ b/drivers/pinctrl/mediatek/pinctrl-mtmips.c
> @@ -123,11 +123,24 @@ static int mtmips_pmx_group_enable(struct pinctrl_dev *pctrldev,
> 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;
Could you help me understand why? The @gpio_request_enable operation is
not properly implemented on this driver so this check would never be
true, no?
Even if it was, this makes it so that if a pin group is already given a
function (meaning the pin group is enabled), it will never be given the
gpio function when requested, unless I understand it wrong.
Arınç
More information about the Linux-mediatek
mailing list