From: sashiko-bot@kernel.org
To: "Mikhail Kshevetskiy" <mikhail.kshevetskiy@iopsys.eu>
Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org
Subject: Re: [PATCH v7 33/34] pinctrl: airoha: add support of an7563 SoC
Date: Mon, 27 Jul 2026 08:07:30 +0000 [thread overview]
Message-ID: <20260727080731.59F6C1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260727074234.3761170-34-mikhail.kshevetskiy@iopsys.eu>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Missing pinmux functions to restore default pad behaviors (I2C, SPI, UART) and failure to clear GPIO mode override bits when selecting alternate functions (MDIO, PNAND).
- [Medium] The `hsuart_cts_rts` pin group alters the mux state of the base HSUART pins without claiming them, causing potential pin conflicts and DT application order races.
--
--- Patch [33]: [PATCH v7 33/34] pinctrl: airoha: add support of an7563 SoC ---
commit fc95ee9a88a14501536fae31cd14f1346c7074c0
Author: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
pinctrl: airoha: add support of an7563 SoC
This patch adds support of Airoha an7563 SoC pin controller.
> diff --git a/drivers/pinctrl/airoha/pinctrl-an7563.c b/drivers/pinctrl/airoha/pinctrl-an7563.c
> new file mode 100644
> --- /dev/null
> +++ b/drivers/pinctrl/airoha/pinctrl-an7563.c
[ ... ]
> +static const struct airoha_pinctrl_func_group mdio_func_group[] = {
> + {
> + .name = "mdio",
> + .regmap[0] = {
> + AIROHA_FUNC_MUX,
> + REG_GPIO_PON_MODE,
> + GPIO_SGMII_MDIO_MODE_MASK,
> + GPIO_SGMII_MDIO_MODE_MASK
> + },
> + .regmap_size = 1,
> + },
> +};
[Severity: Medium]
Does this configuration properly clear the GPIO mode override bits if the
bootloader left these pads in GPIO mode?
Looking at mdio_func_group, it only sets GPIO_SGMII_MDIO_MODE_MASK.
However, MDIO shares the I2C_SCL and I2C_SDA pads. If the bootloader
previously set I2C_SCL_GPIO_MODE_MASK and I2C_SDA_GPIO_MODE_MASK, they
would not be cleared here, potentially leaving the pads in GPIO mode
instead of routing them to MDIO.
> +static const struct airoha_pinctrl_func_group uart_func_group[] = {
> + {
> + .name = "hsuart",
> + .regmap[0] = {
> + AIROHA_FUNC_MUX,
> + REG_GPIO_PON_MODE,
> + GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK,
> + GPIO_HSUART_MODE_MASK
> + },
> + .regmap_size = 1,
> + },
> + {
> + .name = "hsuart_cts_rts",
> + .regmap[0] = {
> + AIROHA_FUNC_MUX,
> + REG_GPIO_PON_MODE,
> + GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK,
> + GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK
> + },
> + .regmap_size = 1,
> + },
> +};
[Severity: Medium]
Will applying the hsuart group silently disable CTS/RTS if it happens to be
evaluated after hsuart_cts_rts? The hsuart function clears the
GPIO_HSUART_CTS_RTS_MODE_MASK bit.
Additionally, hsuart_cts_rts modifies GPIO_HSUART_MODE_MASK (which routes
pins 16 and 17) despite those pins not being claimed by the group in
hsuart_cts_rts_pins. Could this allow the pinctrl core to mistakenly grant
pins 16 and 17 to another driver as GPIOs, creating a silent hardware
conflict?
[ ... ]
> +static const struct airoha_pinctrl_func_group pnand_func_group[] = {
> + {
> + .name = "pnand",
> + .regmap[0] = {
> + AIROHA_FUNC_MUX,
> + REG_GPIO_PON_MODE,
> + GPIO_PARALLEL_NAND_MODE_MASK,
> + GPIO_PARALLEL_NAND_MODE_MASK
> + },
> + .regmap_size = 1,
> + },
> +};
[Severity: Medium]
Is this missing the clearing of SPI GPIO mode override bits? Similar to the
MDIO function above, if the bootloader leaves the shared SPI pads in GPIO
mode, setting only GPIO_PARALLEL_NAND_MODE_MASK might not be enough to route
them to the PNAND controller.
[ ... ]
> +static const struct airoha_pinctrl_func pinctrl_funcs[] = {
> + PINCTRL_FUNC_DESC("pon", pon),
> + PINCTRL_FUNC_DESC("sipo", sipo),
> + PINCTRL_FUNC_DESC("mdio", mdio),
> + PINCTRL_FUNC_DESC("uart", uart),
> + PINCTRL_FUNC_DESC("jtag", jtag),
> + PINCTRL_FUNC_DESC("pcm", pcm),
> + PINCTRL_FUNC_DESC("spi", spi),
> + PINCTRL_FUNC_DESC("pnand", pnand),
> + PINCTRL_FUNC_DESC("gpio", gpio),
[Severity: Medium]
Are we missing function descriptors to restore the default I2C and base
SPI/UART pad functions? Since there are no i2c, spi (base), or uart
functions registered here, it appears there is no way for Linux to clear the
GPIO override bits if the bootloader initialized them as GPIOs, which could
leave those hardware blocks unusable.
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260727074234.3761170-1-mikhail.kshevetskiy@iopsys.eu?part=33
next prev parent reply other threads:[~2026-07-27 8:07 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
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 [this message]
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=20260727080731.59F6C1F000E9@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.