diff options
author | Andy Walls <awalls@md.metrocast.net> | 2010-07-19 00:19:43 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-08-08 22:42:55 -0400 |
commit | dbe83a3b921328e12b2abe894fc692afba293d7f (patch) | |
tree | e13443d29b6b929a61584b06dec5f3eff84e2111 /drivers/media/video/cx23885/cx23885.h | |
parent | 98d109f90fc02ce8baf1c2471ffcf8d66fb0d8e6 (diff) |
V4L/DVB: cx23885: Protect PCI interrupt mask manipulations with a spinlock
This patch encapsulates access to the PCI_INT_MSK register and
dev->pci_irqmask variable and protects them with a spinlock.
This is needed because both the hard IRQ handler and a workhandler
will need to manipulate the mask to disable the AV_CORE interrupt.
Signed-off-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx23885/cx23885.h')
-rw-r--r-- | drivers/media/video/cx23885/cx23885.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h index 460f430d028f..5bf6ed09c970 100644 --- a/drivers/media/video/cx23885/cx23885.h +++ b/drivers/media/video/cx23885/cx23885.h | |||
@@ -325,6 +325,7 @@ struct cx23885_dev { | |||
325 | u32 __iomem *lmmio; | 325 | u32 __iomem *lmmio; |
326 | u8 __iomem *bmmio; | 326 | u8 __iomem *bmmio; |
327 | int pci_irqmask; | 327 | int pci_irqmask; |
328 | spinlock_t pci_irqmask_lock; /* protects mask reg too */ | ||
328 | int hwrevision; | 329 | int hwrevision; |
329 | 330 | ||
330 | /* This valud is board specific and is used to configure the | 331 | /* This valud is board specific and is used to configure the |
@@ -485,6 +486,10 @@ extern u32 cx23885_gpio_get(struct cx23885_dev *dev, u32 mask); | |||
485 | extern void cx23885_gpio_enable(struct cx23885_dev *dev, u32 mask, | 486 | extern void cx23885_gpio_enable(struct cx23885_dev *dev, u32 mask, |
486 | int asoutput); | 487 | int asoutput); |
487 | 488 | ||
489 | extern void cx23885_irq_add_enable(struct cx23885_dev *dev, u32 mask); | ||
490 | extern void cx23885_irq_enable(struct cx23885_dev *dev, u32 mask); | ||
491 | extern void cx23885_irq_disable(struct cx23885_dev *dev, u32 mask); | ||
492 | extern void cx23885_irq_remove(struct cx23885_dev *dev, u32 mask); | ||
488 | 493 | ||
489 | /* ----------------------------------------------------------- */ | 494 | /* ----------------------------------------------------------- */ |
490 | /* cx23885-cards.c */ | 495 | /* cx23885-cards.c */ |