|
@@ -199,7 +199,6 @@ struct solo_dev {
|
|
|
int nr_ext;
|
|
|
u32 irq_mask;
|
|
|
u32 motion_mask;
|
|
|
- spinlock_t reg_io_lock;
|
|
|
struct v4l2_device v4l2_dev;
|
|
|
|
|
|
/* tw28xx accounting */
|
|
@@ -281,36 +280,13 @@ struct solo_dev {
|
|
|
|
|
|
static inline u32 solo_reg_read(struct solo_dev *solo_dev, int reg)
|
|
|
{
|
|
|
- unsigned long flags;
|
|
|
- u32 ret;
|
|
|
- u16 val;
|
|
|
-
|
|
|
- spin_lock_irqsave(&solo_dev->reg_io_lock, flags);
|
|
|
-
|
|
|
- ret = readl(solo_dev->reg_base + reg);
|
|
|
- rmb();
|
|
|
- pci_read_config_word(solo_dev->pdev, PCI_STATUS, &val);
|
|
|
- rmb();
|
|
|
-
|
|
|
- spin_unlock_irqrestore(&solo_dev->reg_io_lock, flags);
|
|
|
-
|
|
|
- return ret;
|
|
|
+ return readl(solo_dev->reg_base + reg);
|
|
|
}
|
|
|
|
|
|
static inline void solo_reg_write(struct solo_dev *solo_dev, int reg,
|
|
|
u32 data)
|
|
|
{
|
|
|
- unsigned long flags;
|
|
|
- u16 val;
|
|
|
-
|
|
|
- spin_lock_irqsave(&solo_dev->reg_io_lock, flags);
|
|
|
-
|
|
|
writel(data, solo_dev->reg_base + reg);
|
|
|
- wmb();
|
|
|
- pci_read_config_word(solo_dev->pdev, PCI_STATUS, &val);
|
|
|
- rmb();
|
|
|
-
|
|
|
- spin_unlock_irqrestore(&solo_dev->reg_io_lock, flags);
|
|
|
}
|
|
|
|
|
|
static inline void solo_irq_on(struct solo_dev *dev, u32 mask)
|