MIPS: pci-rt3883: Remove odd locking in PCI config space access code
authorSergey Ryazanov <ryazanov.s.a@gmail.com>
Sat, 30 Aug 2014 02:06:27 +0000 (06:06 +0400)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 24 Nov 2014 06:44:50 +0000 (07:44 +0100)
Caller (generic PCI code) already do proper locking so no need to add
another one here. Local PCI read/write functions are never called
simultaneously, also they do not require synchronization with the PCI
controller ops, since they are used before the controller registration.

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Cc: Linux MIPS <linux-mips@linux-mips.org>
Cc: Gabor Juhos <juhosg@openwrt.org>
Patchwork: https://patchwork.linux-mips.org/patch/7603/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/pci/pci-rt3883.c

index 72919ae..0bcc0b1 100644 (file)
@@ -61,7 +61,6 @@
 
 struct rt3883_pci_controller {
        void __iomem *base;
-       spinlock_t lock;
 
        struct device_node *intc_of_node;
        struct irq_domain *irq_domain;
@@ -111,10 +110,8 @@ static u32 rt3883_pci_read_cfg32(struct rt3883_pci_controller *rpc,
 
        address = rt3883_pci_get_cfgaddr(bus, slot, func, reg);
 
-       spin_lock_irqsave(&rpc->lock, flags);
        rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR);
        ret = rt3883_pci_r32(rpc, RT3883_PCI_REG_CFGDATA);
-       spin_unlock_irqrestore(&rpc->lock, flags);
 
        return ret;
 }
@@ -128,10 +125,8 @@ static void rt3883_pci_write_cfg32(struct rt3883_pci_controller *rpc,
 
        address = rt3883_pci_get_cfgaddr(bus, slot, func, reg);
 
-       spin_lock_irqsave(&rpc->lock, flags);
        rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR);
        rt3883_pci_w32(rpc, val, RT3883_PCI_REG_CFGDATA);
-       spin_unlock_irqrestore(&rpc->lock, flags);
 }
 
 static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
@@ -252,10 +247,8 @@ static int rt3883_pci_config_read(struct pci_bus *bus, unsigned int devfn,
        address = rt3883_pci_get_cfgaddr(bus->number, PCI_SLOT(devfn),
                                         PCI_FUNC(devfn), where);
 
-       spin_lock_irqsave(&rpc->lock, flags);
        rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR);
        data = rt3883_pci_r32(rpc, RT3883_PCI_REG_CFGDATA);
-       spin_unlock_irqrestore(&rpc->lock, flags);
 
        switch (size) {
        case 1:
@@ -288,7 +281,6 @@ static int rt3883_pci_config_write(struct pci_bus *bus, unsigned int devfn,
        address = rt3883_pci_get_cfgaddr(bus->number, PCI_SLOT(devfn),
                                         PCI_FUNC(devfn), where);
 
-       spin_lock_irqsave(&rpc->lock, flags);
        rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR);
        data = rt3883_pci_r32(rpc, RT3883_PCI_REG_CFGDATA);
 
@@ -307,7 +299,6 @@ static int rt3883_pci_config_write(struct pci_bus *bus, unsigned int devfn,
        }
 
        rt3883_pci_w32(rpc, data, RT3883_PCI_REG_CFGDATA);
-       spin_unlock_irqrestore(&rpc->lock, flags);
 
        return PCIBIOS_SUCCESSFUL;
 }