summaryrefslogtreecommitdiffstats
path: root/drivers/media/pci/solo6x10/solo6x10.h
diff options
context:
space:
mode:
authorKrzysztof HaƂasa <khalasa@piap.pl>2015-06-08 10:42:24 -0300
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-07-06 08:25:47 -0300
commite1ceb25a1569ce5b61b9c496dd32d038ba8cb936 (patch)
tree0c5e7e71929e8df65a1be9389b2120499ab07c6b /drivers/media/pci/solo6x10/solo6x10.h
parentdd43a6278a9dbda46f56782b54a7a59216a87d23 (diff)
downloadop-kernel-dev-e1ceb25a1569ce5b61b9c496dd32d038ba8cb936.zip
op-kernel-dev-e1ceb25a1569ce5b61b9c496dd32d038ba8cb936.tar.gz
[media] SOLO6x10: remove unneeded register locking and barriers
readl() and writel() are atomic, we don't need the spin lock. Also, flushing posted write buffer isn't required. Especially on read :-) Signed-off-by: Krzysztof Ha?asa <khalasa@piap.pl> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/pci/solo6x10/solo6x10.h')
-rw-r--r--drivers/media/pci/solo6x10/solo6x10.h26
1 files changed, 1 insertions, 25 deletions
diff --git a/drivers/media/pci/solo6x10/solo6x10.h b/drivers/media/pci/solo6x10/solo6x10.h
index 1ca54b0..27423d7 100644
--- a/drivers/media/pci/solo6x10/solo6x10.h
+++ b/drivers/media/pci/solo6x10/solo6x10.h
@@ -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)
OpenPOWER on IntegriCloud