From: sashiko-bot@kernel.org
To: "Mikhail Kshevetskiy" <mikhail.kshevetskiy@iopsys.eu>
Cc: devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH v7 12/34] pinctrl: airoha: add missed get_direction() function for gpio_chip
Date: Mon, 27 Jul 2026 07:57:54 +0000 [thread overview]
Message-ID: <20260727075754.C39FC1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260727074234.3761170-13-mikhail.kshevetskiy@iopsys.eu>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The newly added `airoha_gpio_get_direction` strictly checks a 2-bit direction field, but the existing `airoha_pinmux_set_direction` only updates a 1-bit mask, causing `get_direction` to return `-EINVAL`.
--
--- Patch [12]: [PATCH v7 12/34] pinctrl: airoha: add missed get_direction() function for gpio_chip ---
commit d5d33bb49ecef808432dc746e944b058a238f703
Author: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
pinctrl: airoha: add missed get_direction() function for gpio_chip
This patch adds a missing get_direction function for the airoha gpio_chip.
It also updates pinconf to use this new function.
> diff --git a/drivers/pinctrl/airoha/pinctrl-airoha.c b/drivers/pinctrl/airoha/pinctrl-airoha.c
> index 4dae8c654f995..6a0ba54053fe7 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);
> + 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;
[Severity: High]
Will this strict 2-bit check cause get_direction to permanently fail for pins
configured with the upper bit set by the bootloader or hardware?
Looking at airoha_pinmux_set_direction() in the same file, it only uses a
1-bit mask when setting the direction:
drivers/pinctrl/airoha/pinctrl-airoha.c:airoha_pinmux_set_direction() {
...
/* set direction */
mask = BIT(2 * (pin % AIROHA_REG_GPIOCTRL_NUM_PIN));
index = pin / AIROHA_REG_GPIOCTRL_NUM_PIN;
return regmap_update_bits(pinctrl->regmap,
pinctrl->gpiochip.dir[index], mask,
!input ? mask : 0);
}
If the hardware or bootloader initially sets the upper direction bit for a
pin, setting the direction via airoha_pinmux_set_direction() will only
update the lower bit. When airoha_gpio_get_direction() is called later,
the upper bit will still be set. The expression (val & mask) would then be
greater than BIT(field_shift), causing it to return -EINVAL unconditionally.
Does airoha_pinmux_set_direction() need to be updated to clear the upper
bit, or should this newly added get_direction logic be more lenient?
> +
> + return (val & mask) ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIRECTION_IN;
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260727074234.3761170-1-mikhail.kshevetskiy@iopsys.eu?part=12
next prev parent reply other threads:[~2026-07-27 7:57 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 [this message]
2026-07-27 8:04 ` Lorenzo Bianconi
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=20260727075754.C39FC1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=mikhail.kshevetskiy@iopsys.eu \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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.