On Mon, 2010-01-18 at 18:29 +0100, Hans Verkuil wrote:
> On Monday 18 January 2010 17:52:43 Andy Walls wrote:
> > On Mon, 2010-01-18 at 11:16 +0100, Hans Verkuil wrote:
> > > On Monday 18 January 2010 06:19:28 Andy Walls wrote:

 
> > I'll have to audit the underlying drivers to check if their master
> > implementations support that.  If they can, then I can combine the
> > i2c_master_send() and i2c_master_recv() into a single i2c_transfer().
> > Otherwise a lock is actually needed in the cx25840_read() routines, even
> > without the question of atomic context.
> 
> Ah, I hadn't realized that it was split up. If it can be merged into a single
> i2c_transfer, then that would certainly help things.

I'll at least do that for is_cx2388x() devices, once I verify the master
implementation supports it.



> I really wonder if any locking is needed provided the read and write commands
> can be done atomically in the i2c layer. The only reason why that might be
> necessary is if there are multiple reads or writes that must be done in order
> without other reads/writes being mixed in. From memory the only place where
> that is needed is during the firmware load.

Exactly.  If all 4 bridge drivers: serialize the firmware load, never
call from an atomic context, and have an i2c master implementation that
can handle a combined i2c transfer for a register read, then no lock is
required. :)

Verifying that in 4 drivers is not fun. :(


> > I didn't check if
> > ivtv manipulates the cx25840 from a workqueue context; I suspect it
> > doesn't.
> 
> It does, actually. The ivtv-vbi.c source has several work handlers being
> called from a workqueue context.

Ah, OK.  I'll have a look.

Regards,
Andy

> Regards,
> 
>       Hans
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to