From: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Peter Korsgaard <peter@korsgaard.com>,
Andi Shyti <andi.shyti@kernel.org>,
linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
linux@ew.tq-group.com,
Wolfram Sang <wsa+renesas@sang-engineering.com>
Subject: Re: [PATCH v2 1/2] i2c: ocores: increase poll timeout to total transfer timeout
Date: Wed, 14 Jan 2026 09:28:48 +0100 [thread overview]
Message-ID: <5c535725c5e4761e6f16ff4016affe8ddcc79d88.camel@ew.tq-group.com> (raw)
In-Reply-To: <f428f437-80ec-4587-9f6a-7508a8153e79@lunn.ch>
On Tue, 2026-01-13 at 15:21 +0100, Andrew Lunn wrote:
> On Tue, Jan 13, 2026 at 02:02:07PM +0100, Wolfram Sang wrote:
> >
> > > The behavior in the regular case is unchanged, spinning for up to 1ms,
> > > but the open-coded poll loop is replaced with read_poll_timeout_atomic()
> > > as suggested by Andrew Lunn.
> >
> > Hmm, spinning 1ms is still a lot. Can't we just use read_poll_timeout()
> > for the whole timeout? I can't see that it will cause a regression. But
> > please correct me if I am wrong.
>
> I've forgotten the context, but
>
> /**
> * ocores_poll_wait() - Wait until is possible to process some data
> * @i2c: ocores I2C device instance
> *
> * Used when the device is in polling mode (interrupts disabled).
>
> If interrupts are disabled, you cannot use read_poll_timeout(). You
> have to use read_poll_timeout_atomic(). And that spins anyway.
>
> Andrew
This code does not have interrupts disabled, we could not fall back from
read_poll_timeout_atomic() to read_poll_timeout() otherwise. My understanding is
that a sleeping wait would make it more likely for a switch to a different task
to happen after every byte, negatively impacting I2C performance; this is not
something I have verified however.
It is spinning for 1ms because that's what the old code did (which only spun
without fallback to sleeping). Reducing this to the time needed to transfer 1
byte in the absence of clock stretching should not cause issues (200us for
50kHz; could also be made to depend on the clock rate, so it would be even less
spinning at higher frequencies).
Best,
Matthias
next prev parent reply other threads:[~2026-01-14 8:29 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-09 9:19 Matthias Schiffer
2025-10-09 9:19 ` [PATCH v2 2/2] i2c: ocores: respect adapter timeout in IRQ mode Matthias Schiffer
2025-10-09 13:21 ` Andrew Lunn
2025-10-09 13:20 ` [PATCH v2 1/2] i2c: ocores: increase poll timeout to total transfer timeout Andrew Lunn
2025-10-09 13:26 ` Matthias Schiffer
2025-12-10 8:51 ` Matthias Schiffer
2026-01-13 13:02 ` Wolfram Sang
2026-01-13 14:21 ` Andrew Lunn
2026-01-14 8:28 ` Matthias Schiffer [this message]
2026-01-14 9:34 ` Wolfram Sang
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=5c535725c5e4761e6f16ff4016affe8ddcc79d88.camel@ew.tq-group.com \
--to=matthias.schiffer@ew.tq-group.com \
--cc=andi.shyti@kernel.org \
--cc=andrew@lunn.ch \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@ew.tq-group.com \
--cc=peter@korsgaard.com \
--cc=wsa+renesas@sang-engineering.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®