mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-14 09:09:56 +00:00
V4L/DVB (4914): Saa7146: Protect access to the IER register by a spinlock
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>
This commit is contained in:
parent
122b5dbea6
commit
88bbdf74fc
@ -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));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user