Skip to content

Commit

Permalink
V4L/DVB (4914): Saa7146: Protect access to the IER register by a spin…
Browse files Browse the repository at this point in the history
…lock

Protect the access to the IER register of the SAA7146 by the device
spinlock. I2C transfers may use interrupt mode now.

Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Hartmut Birr authored and Mauro Carvalho Chehab committed Dec 10, 2006
1 parent 122b5db commit 88bbdf7
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions include/media/saa7146.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,20 @@ extern unsigned int saa7146_debug;
#define DEB_INT(x) if (0!=(DEBUG_VARIABLE&0x20)) { DEBUG_PROLOG; printk x; } /* interrupt debug messages */
#define DEB_CAP(x) if (0!=(DEBUG_VARIABLE&0x40)) { DEBUG_PROLOG; printk x; } /* capture debug messages */

#define SAA7146_IER_DISABLE(x,y) \
saa7146_write(x, IER, saa7146_read(x, IER) & ~(y));
#define SAA7146_IER_ENABLE(x,y) \
saa7146_write(x, IER, saa7146_read(x, IER) | (y));
#define SAA7146_IER_DISABLE(x,y) \
do { \
unsigned int flags; \
spin_lock_irqsave(&x->int_slock, flags); \
saa7146_write(x, IER, saa7146_read(x, IER) & ~(y)); \
spin_unlock_irqrestore(&x->int_slock, flags); \
} while(0)
#define SAA7146_IER_ENABLE(x,y) \
do { \
unsigned int flags; \
spin_lock_irqsave(&x->int_slock, flags); \
saa7146_write(x, IER, saa7146_read(x, IER) | (y)); \
spin_unlock_irqrestore(&x->int_slock, flags); \
} while(0)
#define SAA7146_ISR_CLEAR(x,y) \
saa7146_write(x, ISR, (y));

Expand Down

0 comments on commit 88bbdf7

Please sign in to comment.