mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
MIPS: pci-ar7{1x, 24}x: remove odd locking in PCI config space access code
Caller (generic PCI code) already do proper locking so no need to add another one here. 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/7602/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
c4a305374b
commit
490a0ece6c
@ -50,7 +50,6 @@
|
||||
|
||||
struct ar71xx_pci_controller {
|
||||
void __iomem *cfg_base;
|
||||
spinlock_t lock;
|
||||
int irq;
|
||||
int irq_base;
|
||||
struct pci_controller pci_ctrl;
|
||||
@ -182,7 +181,6 @@ static int ar71xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
{
|
||||
struct ar71xx_pci_controller *apc = pci_bus_to_ar71xx_controller(bus);
|
||||
void __iomem *base = apc->cfg_base;
|
||||
unsigned long flags;
|
||||
u32 data;
|
||||
int err;
|
||||
int ret;
|
||||
@ -190,8 +188,6 @@ static int ar71xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
ret = PCIBIOS_SUCCESSFUL;
|
||||
data = ~0;
|
||||
|
||||
spin_lock_irqsave(&apc->lock, flags);
|
||||
|
||||
err = ar71xx_pci_set_cfgaddr(bus, devfn, where, size,
|
||||
AR71XX_PCI_CFG_CMD_READ);
|
||||
if (err)
|
||||
@ -199,8 +195,6 @@ static int ar71xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
else
|
||||
data = __raw_readl(base + AR71XX_PCI_REG_CFG_RDDATA);
|
||||
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
|
||||
*value = (data >> (8 * (where & 3))) & ar71xx_pci_read_mask[size & 7];
|
||||
|
||||
return ret;
|
||||
@ -211,15 +205,12 @@ static int ar71xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
|
||||
{
|
||||
struct ar71xx_pci_controller *apc = pci_bus_to_ar71xx_controller(bus);
|
||||
void __iomem *base = apc->cfg_base;
|
||||
unsigned long flags;
|
||||
int err;
|
||||
int ret;
|
||||
|
||||
value = value << (8 * (where & 3));
|
||||
ret = PCIBIOS_SUCCESSFUL;
|
||||
|
||||
spin_lock_irqsave(&apc->lock, flags);
|
||||
|
||||
err = ar71xx_pci_set_cfgaddr(bus, devfn, where, size,
|
||||
AR71XX_PCI_CFG_CMD_WRITE);
|
||||
if (err)
|
||||
@ -227,8 +218,6 @@ static int ar71xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
|
||||
else
|
||||
__raw_writel(value, base + AR71XX_PCI_REG_CFG_WRDATA);
|
||||
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -360,8 +349,6 @@ static int ar71xx_pci_probe(struct platform_device *pdev)
|
||||
if (!apc)
|
||||
return -ENOMEM;
|
||||
|
||||
spin_lock_init(&apc->lock);
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg_base");
|
||||
apc->cfg_base = devm_ioremap_resource(&pdev->dev, res);
|
||||
if (IS_ERR(apc->cfg_base))
|
||||
|
@ -9,7 +9,6 @@
|
||||
* by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/module.h>
|
||||
@ -48,8 +47,6 @@ struct ar724x_pci_controller {
|
||||
bool bar0_is_cached;
|
||||
u32 bar0_value;
|
||||
|
||||
spinlock_t lock;
|
||||
|
||||
struct pci_controller pci_controller;
|
||||
struct resource io_res;
|
||||
struct resource mem_res;
|
||||
@ -75,7 +72,6 @@ pci_bus_to_ar724x_controller(struct pci_bus *bus)
|
||||
static int ar724x_pci_local_write(struct ar724x_pci_controller *apc,
|
||||
int where, int size, u32 value)
|
||||
{
|
||||
unsigned long flags;
|
||||
void __iomem *base;
|
||||
u32 data;
|
||||
int s;
|
||||
@ -86,8 +82,6 @@ static int ar724x_pci_local_write(struct ar724x_pci_controller *apc,
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
base = apc->crp_base;
|
||||
|
||||
spin_lock_irqsave(&apc->lock, flags);
|
||||
data = __raw_readl(base + (where & ~3));
|
||||
|
||||
switch (size) {
|
||||
@ -105,14 +99,12 @@ static int ar724x_pci_local_write(struct ar724x_pci_controller *apc,
|
||||
data = value;
|
||||
break;
|
||||
default:
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
return PCIBIOS_BAD_REGISTER_NUMBER;
|
||||
}
|
||||
|
||||
__raw_writel(data, base + (where & ~3));
|
||||
/* flush write */
|
||||
__raw_readl(base + (where & ~3));
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
}
|
||||
@ -121,7 +113,6 @@ static int ar724x_pci_read(struct pci_bus *bus, unsigned int devfn, int where,
|
||||
int size, uint32_t *value)
|
||||
{
|
||||
struct ar724x_pci_controller *apc;
|
||||
unsigned long flags;
|
||||
void __iomem *base;
|
||||
u32 data;
|
||||
|
||||
@ -133,8 +124,6 @@ static int ar724x_pci_read(struct pci_bus *bus, unsigned int devfn, int where,
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
base = apc->devcfg_base;
|
||||
|
||||
spin_lock_irqsave(&apc->lock, flags);
|
||||
data = __raw_readl(base + (where & ~3));
|
||||
|
||||
switch (size) {
|
||||
@ -153,13 +142,9 @@ static int ar724x_pci_read(struct pci_bus *bus, unsigned int devfn, int where,
|
||||
case 4:
|
||||
break;
|
||||
default:
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
|
||||
return PCIBIOS_BAD_REGISTER_NUMBER;
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
|
||||
if (where == PCI_BASE_ADDRESS_0 && size == 4 &&
|
||||
apc->bar0_is_cached) {
|
||||
/* use the cached value */
|
||||
@ -175,7 +160,6 @@ static int ar724x_pci_write(struct pci_bus *bus, unsigned int devfn, int where,
|
||||
int size, uint32_t value)
|
||||
{
|
||||
struct ar724x_pci_controller *apc;
|
||||
unsigned long flags;
|
||||
void __iomem *base;
|
||||
u32 data;
|
||||
int s;
|
||||
@ -209,8 +193,6 @@ static int ar724x_pci_write(struct pci_bus *bus, unsigned int devfn, int where,
|
||||
}
|
||||
|
||||
base = apc->devcfg_base;
|
||||
|
||||
spin_lock_irqsave(&apc->lock, flags);
|
||||
data = __raw_readl(base + (where & ~3));
|
||||
|
||||
switch (size) {
|
||||
@ -228,15 +210,12 @@ static int ar724x_pci_write(struct pci_bus *bus, unsigned int devfn, int where,
|
||||
data = value;
|
||||
break;
|
||||
default:
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
|
||||
return PCIBIOS_BAD_REGISTER_NUMBER;
|
||||
}
|
||||
|
||||
__raw_writel(data, base + (where & ~3));
|
||||
/* flush write */
|
||||
__raw_readl(base + (where & ~3));
|
||||
spin_unlock_irqrestore(&apc->lock, flags);
|
||||
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
}
|
||||
@ -380,8 +359,6 @@ static int ar724x_pci_probe(struct platform_device *pdev)
|
||||
if (apc->irq < 0)
|
||||
return -EINVAL;
|
||||
|
||||
spin_lock_init(&apc->lock);
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_IO, "io_base");
|
||||
if (!res)
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user