From: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
To: "Tirdea, Irina" <irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Pandruvada,
Srinivas"
<srinivas.pandruvada-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Peter Meerwald <pmeerw-jW+XmwGofnusTnJN9+BGXg@public.gmane.org>,
"linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH v3 1/8] i2c: core: Add support for best effort block read emulation
Date: Sat, 1 Aug 2015 21:53:20 +0200 [thread overview]
Message-ID: <20150801195320.GA1590@katana> (raw)
In-Reply-To: <1F3AC3675D538145B1661F571FE1805F2F067FA4-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2726 bytes --]
> > I wonder what devices do if you do a word read beyond their end address?
> > Perhaps in odd cases we should always fall back to byte reads?
>
> In my tests I can read beyond the end address, but I cannot be sure if this is OK for all
> devices. This was actually a suggestion from Wolfram for v1, but maybe I'm missing
> something.
>
> Wolfram, is it safe to read one byte beyond the end address or should I better use
> only byte reads for odd lengths?
Well, from a device perspective, it is probably better to be safe than
sorry and fall back to a single byte read. That means, however, that we
need READ_WORD_DATA and READ_BYTE_DATA to be supported by the adapter.
Should be OK, I don't think there are adapters which can only read words.
> > > + */
> > > +s32 i2c_smbus_read_i2c_block_data_or_emulated(const struct i2c_client *client,
> > > + u8 command, u8 length, u8 *values)
> > > +{
> > > + u8 i;
> > > + int status;
> > > +
> > > + if (length > I2C_SMBUS_BLOCK_MAX)
> > > + length = I2C_SMBUS_BLOCK_MAX;
> > > +
> > > + if (i2c_check_functionality(client->adapter,
> > > + I2C_FUNC_SMBUS_READ_I2C_BLOCK)) {
> > > + return i2c_smbus_read_i2c_block_data(client, command,
> > > + length, values);
I am not very strict with the 80 char limit. I'd think the code is more
readable if the two statements above would be oneliners. And for some
other lines later as well.
> > > + } else if (i2c_check_functionality(client->adapter,
No need for else since we return in the above if anyhow.
> > > + I2C_FUNC_SMBUS_READ_WORD_DATA)) {
> > > + for (i = 0; i < length; i += 2) {
> > > + status = i2c_smbus_read_word_data(client, command + i);
> > > + if (status < 0)
> > > + return status;
> > > + values[i] = status & 0xff;
> > > + if ((i + 1) < length)
> > > + values[i + 1] = status >> 8;
> > > + }
> > > + if (i > length)
> > > + return length;
> > > + return i;
> > > + } else if (i2c_check_functionality(client->adapter,
> > > + I2C_FUNC_SMBUS_READ_BYTE_DATA)) {
> > > + for (i = 0; i < length; i++) {
> > > + status = i2c_smbus_read_byte_data(client, command + i);
> > > + if (status < 0)
> > > + return status;
> > > + values[i] = status;
> > > + }
> > > + return i;
> > > + }
> > > +
> > > + dev_err(&client->adapter->dev, "Unsupported transactions: %d,%d,%d\n",
> > > + I2C_SMBUS_I2C_BLOCK_DATA, I2C_SMBUS_WORD_DATA,
> > > + I2C_SMBUS_BYTE_DATA);
I don't think the %d printouts are useful. Just say that the adapter
lacks support for needed transactions. And I think the device which
reports the error should be the client device, no?
Thanks,
Wolfram
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-08-01 19:53 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-03 9:33 [PATCH v3 0/8] Add support for best effort block read emulation Irina Tirdea
[not found] ` <1435916017-12859-1-git-send-email-irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-07-03 9:33 ` [PATCH v3 1/8] i2c: core: " Irina Tirdea
[not found] ` <1435916017-12859-2-git-send-email-irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-07-05 11:58 ` Jonathan Cameron
[not found] ` <55991BE7.6050705-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2015-07-10 17:14 ` Tirdea, Irina
[not found] ` <1F3AC3675D538145B1661F571FE1805F2F067FA4-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-07-11 17:40 ` Jonathan Cameron
2015-08-01 19:53 ` Wolfram Sang [this message]
2015-08-04 13:51 ` Tirdea, Irina
2015-07-03 9:33 ` [PATCH v3 2/8] eeprom: at24: use i2c_smbus_read_i2c_block_data_or_emulated Irina Tirdea
[not found] ` <1435916017-12859-3-git-send-email-irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-08-01 19:57 ` Wolfram Sang
2015-08-04 13:52 ` Tirdea, Irina
2015-07-03 9:33 ` [PATCH v3 3/8] iio: accel: bmc150: use available_scan_masks Irina Tirdea
[not found] ` <1435916017-12859-4-git-send-email-irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-07-05 12:10 ` Jonathan Cameron
2015-07-03 9:33 ` [PATCH v3 4/8] iio: accel: bmc150: optimize i2c transfers in trigger handler Irina Tirdea
2015-07-05 12:06 ` Jonathan Cameron
2015-07-03 9:33 ` [PATCH v3 6/8] iio: gyro: bmg160: " Irina Tirdea
[not found] ` <1435916017-12859-7-git-send-email-irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-07-05 12:08 ` Jonathan Cameron
2015-07-10 17:31 ` Tirdea, Irina
[not found] ` <1F3AC3675D538145B1661F571FE1805F2F068001-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-07-10 17:46 ` Pandruvada, Srinivas
2015-07-03 9:33 ` [PATCH v3 8/8] iio: accel: kxcjk-1013: " Irina Tirdea
[not found] ` <1435916017-12859-9-git-send-email-irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-07-05 12:11 ` Jonathan Cameron
2015-07-03 9:33 ` [PATCH v3 5/8] iio: gyro: bmg160: use available_scan_masks Irina Tirdea
2015-07-03 9:33 ` [PATCH v3 7/8] iio: accel: kxcjk-1013: " Irina Tirdea
[not found] ` <1435916017-12859-8-git-send-email-irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-07-05 12:10 ` Jonathan Cameron
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=20150801195320.GA1590@katana \
--to=wsa-z923lk4zbo2bacvfa/9k2g@public.gmane.org \
--cc=irina.tirdea-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=pmeerw-jW+XmwGofnusTnJN9+BGXg@public.gmane.org \
--cc=srinivas.pandruvada-ral2JQCrhuEAvxtiuMwx3w@public.gmane.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).