From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To: Jie Li <lj29312931@gmail.com>, Linus Walleij <linusw@kernel.org>
Cc: wsa@kernel.org, linux-i2c@vger.kernel.org,
linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,
Jie Li <jie.i.li@nokia.com>
Subject: Re: [PATCH v4 2/2] i2c: core: support recovery for single-ended GPIOs
Date: Sat, 9 May 2026 12:10:15 +0200 [thread overview]
Message-ID: <af8IB46ST70lXVsk@shikoro> (raw)
In-Reply-To: <20260509091208.18346-3-jie.i.li@nokia.com>
[-- Attachment #1: Type: text/plain, Size: 1399 bytes --]
On Sat, May 09, 2026 at 11:12:08AM +0200, Jie Li wrote:
> Currently, i2c_init_recovery() only assigns the set_sda/set_scl
> hooks if gpiod_get_direction() returns GPIO_LINE_DIRECTION_OUT.
>
> This logic fails on certain SoC controllers where open-drain lines
> in a high-impedance state are physically reported as inputs. This
> leads to a "deadlock" where the I2C core refuses to assign the
> recovery hooks because it incorrectly assumes the pins are
> input-only, even though they are fully capable of driving the bus
> low for recovery.
>
> Update the recovery initialization to use the new
> gpiod_is_single_ended() helper. If a GPIO is configured as
> open-drain or open-source in the firmware, it is safe to assume
> it can be used for bus recovery, even if the current hardware
> direction is reported as input.
>
> Signed-off-by: Jie Li <jie.i.li@nokia.com>
> Reviewed-by: Linus Walleij <linusw@kernel.org>
> Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
I overlooked that the change with GPIO_LINE_DIRECTION_OUT I suggested
for this patch is at the same location as commit[1]. I already pushed
out said commit for -rc3 and it is, thus, already in -next, too. No big
harm, but there will be a little conflict when applying. Sorry, Linus!
[1] b47bc7c022dd ("i2c: Compare the return value of gpiod_get_direction against GPIO_LINE_DIRECTION_OUT")
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2026-05-09 10:10 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-14 14:13 [PATCH v1 0/2] i2c: add support for forced SDA recovery Jie Li
2026-01-14 14:13 ` [PATCH v1 1/2] i2c: core: add "force-set-sda" flag for open-drain SDA without "FLAG_IS_OUT" bit Jie Li
2026-01-14 14:13 ` [PATCH v1 2/2] dt-bindings: i2c: add force-set-sda property Jie Li
2026-01-16 14:14 ` Krzysztof Kozlowski
2026-01-15 9:27 ` [PATCH v1 0/2] i2c: add support for forced SDA recovery Linus Walleij
2026-01-15 13:12 ` 李杰
2026-01-16 13:59 ` Linus Walleij
2026-01-25 19:51 ` [PATCH v2 0/2] i2c: improve bus recovery for single-ended GPIOs Jie Li
2026-01-25 19:51 ` [PATCH v2 1/2] gpiolib: add gpiod_is_single_ended() helper Jie Li
2026-01-27 9:46 ` Linus Walleij
2026-01-25 19:51 ` [PATCH v2 2/2] i2c: core: support recovery for single-ended GPIOs Jie Li
2026-01-27 9:47 ` Linus Walleij
2026-02-01 11:18 ` [PATCH v3 0/2] i2c: improve bus " Jie Li
2026-02-01 11:18 ` [PATCH v3 1/2] gpiolib: add gpiod_is_single_ended() helper Jie Li
2026-02-01 11:18 ` [PATCH v3 2/2] i2c: core: support recovery for single-ended GPIOs Jie Li
2026-05-04 12:14 ` Wolfram Sang
2026-05-09 9:12 ` [PATCH v4 0/2] i2c: improve bus " Jie Li
2026-05-09 9:12 ` [PATCH v4 1/2] gpiolib: add gpiod_is_single_ended() helper Jie Li
2026-05-09 9:12 ` [PATCH v4 2/2] i2c: core: support recovery for single-ended GPIOs Jie Li
2026-05-09 10:10 ` Wolfram Sang [this message]
2026-05-11 7:25 ` 李杰
2026-05-11 8:19 ` Linus Walleij
2026-05-11 10:28 ` Bartosz Golaszewski
2026-05-11 10:33 ` Wolfram Sang
2026-05-11 10:48 ` Bartosz Golaszewski
2026-05-11 11:37 ` [PATCH v5 0/2] i2c: improve bus " Jie Li
2026-05-11 11:37 ` [PATCH v5 1/2] gpiolib: add gpiod_is_single_ended() helper Jie Li
2026-05-11 11:37 ` [PATCH v5 2/2] i2c: core: support recovery for single-ended GPIOs Jie Li
2026-05-11 12:27 ` (subset) [PATCH v5 0/2] i2c: improve bus " Bartosz Golaszewski
2026-04-22 18:47 ` [PATCH v3 " 李杰
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=af8IB46ST70lXVsk@shikoro \
--to=wsa+renesas@sang-engineering.com \
--cc=jie.i.li@nokia.com \
--cc=linusw@kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lj29312931@gmail.com \
--cc=wsa@kernel.org \
/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.