aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorAndrew Murray <amurray@embedded-bits.co.uk>2014-04-14 16:22:54 -0400
committerBjorn Helgaas <bhelgaas@google.com>2014-04-16 12:20:48 -0400
commit11c6fbd8d982617996fbc39097a84092eb6e8005 (patch)
tree031efffa2ea24c7f8a7ac0edd25ad64866545ca9 /drivers/pci
parent804f57b1a63c7435fe43b36942581cc6c79ebb5c (diff)
PCI: designware: Remove unnecessary use of 'conf_lock' spinlock
Serialization of configuration accesses is provided by 'pci_lock' in drivers/pci/access.c thus making the driver's 'conf_lock' superfluous. Signed-off-by: Andrew Murray <amurray@embedded-bits.co.uk> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Jingoo Han <jg1.han@samsung.com> Acked-by: Richard Zhu <r65037@freescale.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/host/pci-exynos.c1
-rw-r--r--drivers/pci/host/pci-imx6.c1
-rw-r--r--drivers/pci/host/pcie-designware.c6
-rw-r--r--drivers/pci/host/pcie-designware.h1
4 files changed, 0 insertions, 9 deletions
diff --git a/drivers/pci/host/pci-exynos.c b/drivers/pci/host/pci-exynos.c
index 3de6bfbbe8e9..32c6d567e12a 100644
--- a/drivers/pci/host/pci-exynos.c
+++ b/drivers/pci/host/pci-exynos.c
@@ -546,7 +546,6 @@ static int add_pcie_port(struct pcie_port *pp, struct platform_device *pdev)
546 pp->root_bus_nr = -1; 546 pp->root_bus_nr = -1;
547 pp->ops = &exynos_pcie_host_ops; 547 pp->ops = &exynos_pcie_host_ops;
548 548
549 spin_lock_init(&pp->conf_lock);
550 ret = dw_pcie_host_init(pp); 549 ret = dw_pcie_host_init(pp);
551 if (ret) { 550 if (ret) {
552 dev_err(&pdev->dev, "failed to initialize host\n"); 551 dev_err(&pdev->dev, "failed to initialize host\n");
diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/host/pci-imx6.c
index ee082509b0ba..821a01878f59 100644
--- a/drivers/pci/host/pci-imx6.c
+++ b/drivers/pci/host/pci-imx6.c
@@ -501,7 +501,6 @@ static int imx6_add_pcie_port(struct pcie_port *pp,
501 pp->root_bus_nr = -1; 501 pp->root_bus_nr = -1;
502 pp->ops = &imx6_pcie_host_ops; 502 pp->ops = &imx6_pcie_host_ops;
503 503
504 spin_lock_init(&pp->conf_lock);
505 ret = dw_pcie_host_init(pp); 504 ret = dw_pcie_host_init(pp);
506 if (ret) { 505 if (ret) {
507 dev_err(&pdev->dev, "failed to initialize host\n"); 506 dev_err(&pdev->dev, "failed to initialize host\n");
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
index c4e373294476..495846037ca7 100644
--- a/drivers/pci/host/pcie-designware.c
+++ b/drivers/pci/host/pcie-designware.c
@@ -639,7 +639,6 @@ static int dw_pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,
639 int size, u32 *val) 639 int size, u32 *val)
640{ 640{
641 struct pcie_port *pp = sys_to_pcie(bus->sysdata); 641 struct pcie_port *pp = sys_to_pcie(bus->sysdata);
642 unsigned long flags;
643 int ret; 642 int ret;
644 643
645 if (!pp) { 644 if (!pp) {
@@ -652,13 +651,11 @@ static int dw_pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,
652 return PCIBIOS_DEVICE_NOT_FOUND; 651 return PCIBIOS_DEVICE_NOT_FOUND;
653 } 652 }
654 653
655 spin_lock_irqsave(&pp->conf_lock, flags);
656 if (bus->number != pp->root_bus_nr) 654 if (bus->number != pp->root_bus_nr)
657 ret = dw_pcie_rd_other_conf(pp, bus, devfn, 655 ret = dw_pcie_rd_other_conf(pp, bus, devfn,
658 where, size, val); 656 where, size, val);
659 else 657 else
660 ret = dw_pcie_rd_own_conf(pp, where, size, val); 658 ret = dw_pcie_rd_own_conf(pp, where, size, val);
661 spin_unlock_irqrestore(&pp->conf_lock, flags);
662 659
663 return ret; 660 return ret;
664} 661}
@@ -667,7 +664,6 @@ static int dw_pcie_wr_conf(struct pci_bus *bus, u32 devfn,
667 int where, int size, u32 val) 664 int where, int size, u32 val)
668{ 665{
669 struct pcie_port *pp = sys_to_pcie(bus->sysdata); 666 struct pcie_port *pp = sys_to_pcie(bus->sysdata);
670 unsigned long flags;
671 int ret; 667 int ret;
672 668
673 if (!pp) { 669 if (!pp) {
@@ -678,13 +674,11 @@ static int dw_pcie_wr_conf(struct pci_bus *bus, u32 devfn,
678 if (dw_pcie_valid_config(pp, bus, PCI_SLOT(devfn)) == 0) 674 if (dw_pcie_valid_config(pp, bus, PCI_SLOT(devfn)) == 0)
679 return PCIBIOS_DEVICE_NOT_FOUND; 675 return PCIBIOS_DEVICE_NOT_FOUND;
680 676
681 spin_lock_irqsave(&pp->conf_lock, flags);
682 if (bus->number != pp->root_bus_nr) 677 if (bus->number != pp->root_bus_nr)
683 ret = dw_pcie_wr_other_conf(pp, bus, devfn, 678 ret = dw_pcie_wr_other_conf(pp, bus, devfn,
684 where, size, val); 679 where, size, val);
685 else 680 else
686 ret = dw_pcie_wr_own_conf(pp, where, size, val); 681 ret = dw_pcie_wr_own_conf(pp, where, size, val);
687 spin_unlock_irqrestore(&pp->conf_lock, flags);
688 682
689 return ret; 683 return ret;
690} 684}
diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/host/pcie-designware.h
index 3063b3594d88..a10747d58cd7 100644
--- a/drivers/pci/host/pcie-designware.h
+++ b/drivers/pci/host/pcie-designware.h
@@ -41,7 +41,6 @@ struct pcie_port {
41 void __iomem *va_cfg1_base; 41 void __iomem *va_cfg1_base;
42 u64 io_base; 42 u64 io_base;
43 u64 mem_base; 43 u64 mem_base;
44 spinlock_t conf_lock;
45 struct resource cfg; 44 struct resource cfg;
46 struct resource io; 45 struct resource io;
47 struct resource mem; 46 struct resource mem;