|
@@ -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;
|