[alsa-devel] [PATCH 1/2] ASoC: cs4270: introduce CS4270_I2C_INCR

Daniel Mack daniel at caiaq.de
Wed May 6 11:39:36 CEST 2009


On Wed, May 06, 2009 at 09:44:34AM +0100, Mark Brown wrote:
> > All high-level i2c functions to write block data, namely
> > i2c_smbus_write_block_data() and i2c_smbus_write_i2c_block_data(), put
> > the length of the data being sent inside the block sent on the wire. I
> > couldn't believe it myself, but even my hardware I2C analyzer clearly
> > shows that. The API seems to assume that communication to I2C devices
> > always wants data to be sent with a leading command, followed by the
> > number of data bytes attached and then the data itself. Correct me if
> > I'm wrong on that.
> 
> That's not the I2C API, that's the SMBus API.  SMBus is more restricted
> than I2C - it essentially defines a protocol on top of I2C.  If the
> device doesn't implement SMBus then you should use the I2C API directly.

Hmm, ok. That makes sense. However, the driver uses the equivalent
function to read the whole register set, so I wanted to keep it in
sync.

Anyway, the patch I sent for the resume code writes the registeres one
by one. There are only eigth of them, so it doesn't really matter.

But thanks for your clarification :)

Daniel



More information about the Alsa-devel mailing list