Commit e1ceb25a authored by Krzysztof Hałasa's avatar Krzysztof Hałasa Committed by Mauro Carvalho Chehab

[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: default avatarKrzysztof Ha?asa <khalasa@piap.pl>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent dd43a627
...@@ -483,7 +483,6 @@ static int solo_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -483,7 +483,6 @@ static int solo_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
solo_dev->type = id->driver_data; solo_dev->type = id->driver_data;
solo_dev->pdev = pdev; solo_dev->pdev = pdev;
spin_lock_init(&solo_dev->reg_io_lock);
ret = v4l2_device_register(&pdev->dev, &solo_dev->v4l2_dev); ret = v4l2_device_register(&pdev->dev, &solo_dev->v4l2_dev);
if (ret) if (ret)
goto fail_probe; goto fail_probe;
......
...@@ -199,7 +199,6 @@ struct solo_dev { ...@@ -199,7 +199,6 @@ struct solo_dev {
int nr_ext; int nr_ext;
u32 irq_mask; u32 irq_mask;
u32 motion_mask; u32 motion_mask;
spinlock_t reg_io_lock;
struct v4l2_device v4l2_dev; struct v4l2_device v4l2_dev;
/* tw28xx accounting */ /* tw28xx accounting */
...@@ -281,36 +280,13 @@ struct solo_dev { ...@@ -281,36 +280,13 @@ struct solo_dev {
static inline u32 solo_reg_read(struct solo_dev *solo_dev, int reg) static inline u32 solo_reg_read(struct solo_dev *solo_dev, int reg)
{ {
unsigned long flags; return readl(solo_dev->reg_base + reg);
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;
} }
static inline void solo_reg_write(struct solo_dev *solo_dev, int reg, static inline void solo_reg_write(struct solo_dev *solo_dev, int reg,
u32 data) u32 data)
{ {
unsigned long flags;
u16 val;
spin_lock_irqsave(&solo_dev->reg_io_lock, flags);
writel(data, solo_dev->reg_base + reg); 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) static inline void solo_irq_on(struct solo_dev *dev, u32 mask)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment