Re: i2c/ smbus question
From: Benjamin Herrenschmidt
Date: Sun Jan 08 2006 - 16:10:11 EST
On Sun, 2006-01-08 at 11:30 +0100, Jean Delvare wrote:
> I suspect that these drivers which do I2C block writes do so by calling
> i2c_master_send (or even i2c_transfer) directly, rather than relying on
> the SMBus compatibility layer.
Ok. Well, it's much more simple for me to implement smbus (with a few extensions
like block transfer) than the low level i2c at the host driver level.
In order to implement subaddress access with repeat start (very common in pretty
much everything nowadays), I need two messages. However, my low level hardware
can't implement everything that can be done with multiple messages. Thus
implementing the stuff using i2c_xfer needs a lot of test & validation all over
the place to coerce those 2 messages into a subaddress + data setup that my low
level hw understands. Implementing only smbus is simpler and fits most of my needs.
> The i2c_smbus_write_i2c_block_data wrapper function used to be defined,
> but was removed in 2.6.10-rc2 together with a couple other similar
> wrappers [1] on request by Adrian Bunk, the reason being that they had
> no user back then. I was a bit reluctant at first, but we finally agreed
> with Adrian to remove the functions, and to reintroduce them later if
> they were ever needed.
I find that weird but heh...
> So, if you need i2c_smbus_write_i2c_block_data(), we can easily
> resurrect it. See the patch below. I made the new version a bit faster
> (I hope) than the original by using memcpy, please confirm it works for
> you.
Ok, I'll test with those, I did an equivalent local to my sound drivers
but a wrapper in the i2c layer is probably better. Thanks.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/