From: Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
To: Jean Delvare <jdelvare-l3A5Bk7waGM@public.gmane.org>
Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>,
Randy Dunlap <rdunlap-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v2] i2c: stub: Add support for SMBus block commands
Date: Tue, 08 Jul 2014 13:05:41 -0700 [thread overview]
Message-ID: <53BC4F15.9030608@roeck-us.net> (raw)
In-Reply-To: <20140708215453.0677d3ed-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
Hi Jean,
On 07/08/2014 12:54 PM, Jean Delvare wrote:
> Hi Guenter,
>
> On Mon, 7 Jul 2014 07:23:03 -0700, Guenter Roeck wrote:
>> SMBus block commands are different to I2C block commands since
>> the returned data is not normally accessible with byte or word
>> commands on other command offsets. Add linked list of 'block'
>> commands to support those commands.
>>
>> Access mechanism is quite simple: Block commands must be written
>> before they can be read. The first write selects the block length.
>> Subsequent writes can be partial. Block read commands always return
>> the number of bytes selected with the first write.
>>
>> Signed-off-by: Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
>> ---
>> v2: Make new functionality only available on request via functionality
>> module parameter
>> Add more details about SMBus block mode support to documentation
>> Use correct sizeof() variable in devm_kzalloc
>> Use stub_find_block() only in SMBus block command itself.
>> Store first word of block data in chip->words[].
>> When writing block data and the written data is longer than
>> the first write, bail out with debug message indicating the reason
>> for the error.
>
> Looks good, thanks for the quick update.
>
> Reviewed-by: Jean Delvare <jdelvare-l3A5Bk7waGM@public.gmane.org>
>
> Just one thing I have been thinking about while reviewing the updated
> code... You decided to make the first SMBus block write select the
> maximum block length, and you always use that for SMBus block reads.
> However you accept partial writes. The fact that the order in which
> writes are performed has an effect on which writes are accepted is
> somewhat unexpected.
>
> Wouldn't it make more sense to accept all SMBus block writes,
> regardless of the size (as long as it is within the limits of the SMBus
> standard, of course)? Then the only thing left to decide is whether
> SMBus block reads use the maximum size or the size of the most recent
> SMBus block write.
>
> I suspect this would mimic the behavior of real chips better. What do
> you think?
>
Not really sure what the expected behavior is. My original code
accepted all writes and returned the most recent write, including
the most recent write length. I thought this was untypical, and that
it would be more typical for the chip to return a fixed length.
But ultimately I don't really know, and I am fine either way.
Guenter
WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Jean Delvare <jdelvare@suse.de>
Cc: Wolfram Sang <wsa@the-dreams.de>,
Randy Dunlap <rdunlap@infradead.org>,
linux-i2c@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] i2c: stub: Add support for SMBus block commands
Date: Tue, 08 Jul 2014 13:05:41 -0700 [thread overview]
Message-ID: <53BC4F15.9030608@roeck-us.net> (raw)
In-Reply-To: <20140708215453.0677d3ed@endymion.delvare>
Hi Jean,
On 07/08/2014 12:54 PM, Jean Delvare wrote:
> Hi Guenter,
>
> On Mon, 7 Jul 2014 07:23:03 -0700, Guenter Roeck wrote:
>> SMBus block commands are different to I2C block commands since
>> the returned data is not normally accessible with byte or word
>> commands on other command offsets. Add linked list of 'block'
>> commands to support those commands.
>>
>> Access mechanism is quite simple: Block commands must be written
>> before they can be read. The first write selects the block length.
>> Subsequent writes can be partial. Block read commands always return
>> the number of bytes selected with the first write.
>>
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>> ---
>> v2: Make new functionality only available on request via functionality
>> module parameter
>> Add more details about SMBus block mode support to documentation
>> Use correct sizeof() variable in devm_kzalloc
>> Use stub_find_block() only in SMBus block command itself.
>> Store first word of block data in chip->words[].
>> When writing block data and the written data is longer than
>> the first write, bail out with debug message indicating the reason
>> for the error.
>
> Looks good, thanks for the quick update.
>
> Reviewed-by: Jean Delvare <jdelvare@suse.de>
>
> Just one thing I have been thinking about while reviewing the updated
> code... You decided to make the first SMBus block write select the
> maximum block length, and you always use that for SMBus block reads.
> However you accept partial writes. The fact that the order in which
> writes are performed has an effect on which writes are accepted is
> somewhat unexpected.
>
> Wouldn't it make more sense to accept all SMBus block writes,
> regardless of the size (as long as it is within the limits of the SMBus
> standard, of course)? Then the only thing left to decide is whether
> SMBus block reads use the maximum size or the size of the most recent
> SMBus block write.
>
> I suspect this would mimic the behavior of real chips better. What do
> you think?
>
Not really sure what the expected behavior is. My original code
accepted all writes and returned the most recent write, including
the most recent write length. I thought this was untypical, and that
it would be more typical for the chip to return a fixed length.
But ultimately I don't really know, and I am fine either way.
Guenter
next prev parent reply other threads:[~2014-07-08 20:05 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-07 14:23 [PATCH v2] i2c: stub: Add support for SMBus block commands Guenter Roeck
2014-07-07 14:23 ` Guenter Roeck
2014-07-08 19:54 ` Jean Delvare
[not found] ` <20140708215453.0677d3ed-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2014-07-08 20:05 ` Guenter Roeck [this message]
2014-07-08 20:05 ` Guenter Roeck
2014-07-12 9:20 ` Jean Delvare
[not found] ` <20140712112019.618d8a03-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2014-07-12 14:26 ` Guenter Roeck
2014-07-12 14:26 ` Guenter Roeck
2014-07-12 15:05 ` Guenter Roeck
2014-07-12 15:05 ` Guenter Roeck
2014-07-13 7:21 ` Jean Delvare
2014-07-13 15:04 ` Guenter Roeck
2014-07-13 15:13 ` Jean Delvare
[not found] ` <20140713171343.0a4ba58d-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2014-07-13 15:46 ` Guenter Roeck
2014-07-13 15:46 ` Guenter Roeck
[not found] ` <53C2A9E1.2080807-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2014-07-13 18:29 ` Sanford Rockowitz
2014-07-13 18:29 ` Sanford Rockowitz
2014-07-17 13:21 ` Wolfram Sang
2014-07-17 13:40 ` Jean Delvare
[not found] ` <20140717154020.650ad59c-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2014-07-17 16:56 ` [PATCH v3] " Guenter Roeck
2014-07-17 16:56 ` Guenter Roeck
2014-07-17 17:12 ` 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=53BC4F15.9030608@roeck-us.net \
--to=linux-0h96xk9xttrk1umjsbkqmq@public.gmane.org \
--cc=jdelvare-l3A5Bk7waGM@public.gmane.org \
--cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rdunlap-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=wsa-z923LK4zBo2bacvFa/9K2g@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 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.