[linux-dvb] [PATCH] make the registers of the stv0297 visible for other applications (e.g. i2cdump)

Trent Piepho xyzzy at speakeasy.org
Sat May 19 20:48:09 CEST 2007


On Fri, 18 May 2007, Johannes Stezenbach wrote:
> On Fri, May 18, 2007 at 04:48:13PM +0200, e9hack wrote:
> > Johannes Stezenbach wrote:
> > > According to linux/Documentation/i2c/i2c-protocol.txt the correct
> > > way to get a STOP condition between two I2C messages is send them
> > > in seperate I2C transactions.
> >
> > I don't find this description in i2c-protocol.
>
> It's not written explicitly, but it says
> you need to use a "Simple send transaction" and/or
> a "Simple receive transaction" instead of a
> "Combined transaction" if you want a STOP bit
> in between. That's how i2c-core is designed.
>
> > IMHO, it isn't possible
> > to split a read request into a single write and a single read request
> > outside of the core device. The device must be locked during both
> > transfers. If the device isn't locked, it is possible that another
> > transfer will change the slave offset before the content is read. This
> > may occur with the current implementation.
>
> If locking is necessary the drivers would need to
> handle this explicitely (I think it isn't unless ou start
> messing mith /dev/i2c concurrently).
>
> Or you could propose a change to i2c-core to add
> a I2C_M_STOP flag (analogous to I2C_M_NOSTART), which
> then would have to be implemented by all i2c bus drivers.

It seems like this is the only way to send multiple stops in a single
atomic transaction.  All drivers wouldn't have to implement it, just the
ones where someone actually wants this ability.  Few drivers actually
implement all of the existing i2c features.



More information about the linux-dvb mailing list