mirror of
https://github.com/torvalds/linux.git
synced 2024-12-16 16:12:52 +00:00
[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>
This commit is contained in:
parent
dd43a6278a
commit
e1ceb25a15
@ -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->pdev = pdev;
|
||||
spin_lock_init(&solo_dev->reg_io_lock);
|
||||
ret = v4l2_device_register(&pdev->dev, &solo_dev->v4l2_dev);
|
||||
if (ret)
|
||||
goto fail_probe;
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user