From: Corey Minyard <minyard@acm.org>
To: Wolfram Sang <wsa@kernel.org>,
Oleksij Rempel <o.rempel@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
Andrew Manley <andrew.manley@sealingtech.com>
Subject: Re: [PATCH v2 2/2] i2c:imx: Add an extra read at the end of an I2C slave read
Date: Tue, 23 Nov 2021 06:44:13 -0600 [thread overview]
Message-ID: <20211123124413.GS15676@minyard.net> (raw)
In-Reply-To: <YZzCWfvq5k2JaMka@kunai>
On Tue, Nov 23, 2021 at 11:28:41AM +0100, Wolfram Sang wrote:
> On Fri, Nov 12, 2021 at 07:39:56AM -0600, minyard@acm.org wrote:
> > From: Corey Minyard <minyard@acm.org>
> >
> > The I2C slave interface expects that the driver will read ahead one
> > byte. The IMX driver/device doesn't do this, but simulate it so that
> > read operations get their index set correctly.
>
> From what I understand, the patch is correct but the description may be
> wrong?
>
> AFAIU the patch adds the slave event I2C_SLAVE_READ_PROCESSED to the
> case when the last byte was transferred. We as the client got a NAK from
> the controller. However, the byte WAS processed, so the event is ok and
> not a dummy?
>
I think the description is correct. Devices that are read from (which
is just eeprom at the moment) expect that there is a dummy read at the
end of a read transaction. Apparently this is what at least some slave
hardware does. The I2C device being read doesn't know when the master
device will finish the operation. So to be ready for the next read it
always reads ahead one. When the read is terminated by the master,
there is an extra byte left lying around that is discarded.
The IMX driver doesn't work this way. So when I was testing, I noticed
that if I did two reads in a row it was one byte off on the second read.
-corey
prev parent reply other threads:[~2021-11-23 12:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-12 13:39 [PATCH v2 0/2] i2c:imx: Deliver a timely stop on slave side, fix recv minyard
2021-11-12 13:39 ` [PATCH v2 1/2] i2c:imx: Add timer for handling the stop condition minyard
2021-11-12 13:39 ` [PATCH v2 2/2] i2c:imx: Add an extra read at the end of an I2C slave read minyard
2021-11-23 10:28 ` Wolfram Sang
2021-11-23 12:44 ` Corey Minyard [this message]
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=20211123124413.GS15676@minyard.net \
--to=minyard@acm.org \
--cc=andrew.manley@sealingtech.com \
--cc=kernel@pengutronix.de \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=o.rempel@pengutronix.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).