From: Lorenzo Bianconi <lorenzo@kernel.org>
To: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Cc: Linus Walleij <linusw@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Bartosz Golaszewski <brgl@kernel.org>,
Christian Marangi <ansuelsmth@gmail.com>,
Benjamin Larsson <benjamin.larsson@genexis.eu>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
linux-gpio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
Markus Gothe <markus.gothe@genexis.eu>,
Matheus Sampaio Queiroga <srherobrine20@gmail.com>
Subject: Re: [PATCH v7 12/34] pinctrl: airoha: add missed get_direction() function for gpio_chip
Date: Mon, 27 Jul 2026 10:04:51 +0200 [thread overview]
Message-ID: <amcRI3c0-1iWWX5M@lore-desk> (raw)
In-Reply-To: <20260727074234.3761170-13-mikhail.kshevetskiy@iopsys.eu>
[-- Attachment #1: Type: text/plain, Size: 3348 bytes --]
> This patch adds missed get_direction() function for gpio_chip.
> Also it reimplements pinconf's get_direction() function using
> newly defined function.
>
> Fixes: 1c8ace2d0725 ("pinctrl: airoha: Add support for EN7581 SoC")
> Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
> ---
> drivers/pinctrl/airoha/pinctrl-airoha.c | 41 ++++++++++++++++++-------
> 1 file changed, 30 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/pinctrl/airoha/pinctrl-airoha.c b/drivers/pinctrl/airoha/pinctrl-airoha.c
> index 820b7b0443851..b52eb39c55ff3 100644
> --- a/drivers/pinctrl/airoha/pinctrl-airoha.c
> +++ b/drivers/pinctrl/airoha/pinctrl-airoha.c
> @@ -2502,6 +2502,27 @@ static int airoha_gpio_get(struct gpio_chip *chip, unsigned int gpio)
> return err ? err : !!(val & BIT(pin));
> }
>
> +static int airoha_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
> +{
> + struct airoha_pinctrl *pinctrl = gpiochip_get_data(chip);
> + u32 mask, index, val;
> + int err, field_shift;
> +
> + field_shift = 2 * (gpio % AIROHA_REG_GPIOCTRL_NUM_PIN);
> + mask = GENMASK(field_shift + 1, field_shift);
before we where checking just BIT(field_shift) as mask, while now we are
checking two bits.
> + index = gpio / AIROHA_REG_GPIOCTRL_NUM_PIN;
> +
> + err = regmap_read(pinctrl->regmap,
> + pinctrl->gpiochip.dir[index], &val);
> + if (err)
> + return err;
> +
> + if ((val & mask) > BIT(field_shift))
> + return -EINVAL;
> +
> + return (val & mask) ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIRECTION_IN;
nit: unnecessary brackets.
> +}
> +
> static int airoha_gpio_direction_output(struct gpio_chip *chip,
> unsigned int gpio, int value)
> {
> @@ -2648,6 +2669,7 @@ static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl,
> gc->free = gpiochip_generic_free;
> gc->direction_input = pinctrl_gpio_direction_input;
> gc->direction_output = airoha_gpio_direction_output;
> + gc->get_direction = airoha_gpio_get_direction;
> gc->set = airoha_gpio_set;
> gc->get = airoha_gpio_get;
> gc->base = -1;
> @@ -2855,21 +2877,18 @@ static int airoha_pinctrl_set_conf(struct airoha_pinctrl *pinctrl,
> static int airoha_pinconf_get_direction(struct pinctrl_dev *pctrl_dev, u32 p)
> {
> struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
> - u32 val, mask;
> - int err, pin;
> - u8 index;
> + int err, gpio;
>
> - pin = airoha_convert_pin_to_reg_offset(pctrl_dev, NULL, p);
> - if (pin < 0)
> - return pin;
> + gpio = airoha_convert_pin_to_reg_offset(pctrl_dev, NULL, p);
if you do not rename pin in gpio here the patch will be simpler.
Regards,
Lorenzo
> + if (gpio < 0)
> + return gpio;
>
> - index = pin / AIROHA_REG_GPIOCTRL_NUM_PIN;
> - err = regmap_read(pinctrl->regmap, pinctrl->gpiochip.dir[index], &val);
> - if (err)
> + err = airoha_gpio_get_direction(&pinctrl->gpiochip.chip, gpio);
> + if (err < 0)
> return err;
>
> - mask = BIT(2 * (pin % AIROHA_REG_GPIOCTRL_NUM_PIN));
> - return val & mask ? PIN_CONFIG_OUTPUT_ENABLE : PIN_CONFIG_INPUT_ENABLE;
> + return err == GPIO_LINE_DIRECTION_OUT ?
> + PIN_CONFIG_OUTPUT_ENABLE : PIN_CONFIG_INPUT_ENABLE;
> }
>
> static int airoha_pinconf_get(struct pinctrl_dev *pctrl_dev,
> --
> 2.53.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2026-07-27 8:04 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-27 7:42 [PATCH v7 00/34] pinctrl: airoha: split on shared and SoC drivers, add more SoCs Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 01/34] dt-bindings: pinctrl: airoha: en7581: fix misprint in i2s function name Mikhail Kshevetskiy
2026-07-27 7:46 ` Lorenzo Bianconi
2026-07-27 7:50 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 02/34] dt-bindings: pinctrl: airoha: en7581: fix pwm pin-groups Mikhail Kshevetskiy
2026-07-27 7:47 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 03/34] dt-bindings: pinctrl: airoha: an7583: fix device tree binding schema Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 04/34] pinctrl: airoha: an7581: fix misprint in bitfield name Mikhail Kshevetskiy
2026-07-27 7:50 ` Lorenzo Bianconi
2026-07-27 7:52 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 05/34] pinctrl: airoha: an7583: fix I2C0_SDA_PD register bit order Mikhail Kshevetskiy
2026-07-27 7:54 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 06/34] pinctrl: airoha: an7583: there are no muxes to enable i2c buses Mikhail Kshevetskiy
2026-07-27 7:53 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 07/34] dt-bindings: pinctrl: airoha: an7583: remove i2c pin function Mikhail Kshevetskiy
2026-07-27 7:51 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 08/34] pinctrl: airoha: an7581: fix mux/conf of pcie_reset pins Mikhail Kshevetskiy
2026-07-27 7:55 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 09/34] dt-bindings: pinctrl: airoha: en7581: allow configuration of pcie_reset pins as gpio or pwm Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 10/34] pinctrl: airoha: an7583: fix muxing of non-gpio default pins Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 11/34] dt-bindings: pinctrl: airoha: an7583: allow configuration of non-gpio default pins as gpio and pwm Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 12/34] pinctrl: airoha: add missed get_direction() function for gpio_chip Mikhail Kshevetskiy
2026-07-27 7:57 ` sashiko-bot
2026-07-27 8:04 ` Lorenzo Bianconi [this message]
2026-07-27 9:40 ` Mikhail Kshevetskiy
2026-07-27 9:46 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 13/34] pinctrl: airoha: add set_direction() helper " Mikhail Kshevetskiy
2026-07-27 7:58 ` sashiko-bot
2026-07-27 8:06 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 14/34] pinctrl: airoha: fix potential kenel panic in IRQ handling code Mikhail Kshevetskiy
2026-07-27 7:55 ` sashiko-bot
2026-07-27 8:31 ` Lorenzo Bianconi
2026-07-27 9:02 ` Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 15/34] pinctrl: airoha: fix IRQ mask/unmask code Mikhail Kshevetskiy
2026-07-27 7:59 ` sashiko-bot
2026-07-27 8:37 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 16/34] pinctrl: airoha: add missed IRQ resource helpers Mikhail Kshevetskiy
2026-07-27 8:02 ` sashiko-bot
2026-07-27 8:34 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 17/34] pinctrl: airoha: fix edge-triggered interrupts handling Mikhail Kshevetskiy
2026-07-27 7:59 ` sashiko-bot
2026-07-27 9:01 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 18/34] pinctrl: airoha: remove not needed irq_type[] array Mikhail Kshevetskiy
2026-07-27 8:00 ` sashiko-bot
2026-07-27 9:03 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 19/34] pinctrl: airoha: move common definitions to the separate header Mikhail Kshevetskiy
2026-07-27 8:04 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 20/34] pinctrl: airoha: split driver on shared code and SoC specific drivers Mikhail Kshevetskiy
2026-07-27 8:19 ` sashiko-bot
2026-07-27 9:14 ` Lorenzo Bianconi
2026-07-27 9:23 ` Mikhail Kshevetskiy
2026-07-27 9:27 ` Lorenzo Bianconi
2026-07-27 9:28 ` Mikhail Kshevetskiy
2026-07-27 12:48 ` Lorenzo Bianconi
2026-07-27 7:42 ` [PATCH v7 21/34] pinctrl: airoha: an7581: remove en7581 prefix from variable names Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 22/34] pinctrl: airoha: an7583: remove an7583 prefix from variable names and definitions Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 23/34] pinctrl: airoha: an7583: rename registers to match its an7583 names Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 24/34] pinctrl: airoha: an7583: add support for npu_uart pinmux Mikhail Kshevetskiy
2026-07-27 8:01 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 25/34] dt-bindings: pinctrl: airoha: an7583: add npu_uart pin group Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 26/34] pinctrl: airoha: an7583: add support for pon_alt pinmux Mikhail Kshevetskiy
2026-07-27 8:05 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 27/34] dt-bindings: pinctrl: airoha: an7583: add pon_alt pin group Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 28/34] pinctrl: airoha: an7583: add support for olt pinmux Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 29/34] dt-bindings: pinctrl: airoha: an7583: add olt function/group Mikhail Kshevetskiy
2026-07-27 7:42 ` [PATCH v7 30/34] pinctrl: airoha: add support of en7523 SoC Mikhail Kshevetskiy
2026-07-27 8:13 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 31/34] pinctrl: airoha: try to find chip scu node by phandle first Mikhail Kshevetskiy
2026-07-27 8:06 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 32/34] dt-bindings: pinctrl: airoha: add support of en7523 pin controller Mikhail Kshevetskiy
2026-07-27 8:06 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 33/34] pinctrl: airoha: add support of an7563 SoC Mikhail Kshevetskiy
2026-07-27 8:07 ` sashiko-bot
2026-07-27 7:42 ` [PATCH v7 34/34] dt-bindings: pinctrl: airoha: add support of an7563 pin controller Mikhail Kshevetskiy
2026-07-27 8:10 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=amcRI3c0-1iWWX5M@lore-desk \
--to=lorenzo@kernel.org \
--cc=angelogioacchino.delregno@collabora.com \
--cc=ansuelsmth@gmail.com \
--cc=benjamin.larsson@genexis.eu \
--cc=brgl@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=markus.gothe@genexis.eu \
--cc=mikhail.kshevetskiy@iopsys.eu \
--cc=robh@kernel.org \
--cc=srherobrine20@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.