diff options
author | Andrew Murray <amurray@embedded-bits.co.uk> | 2014-04-14 16:22:54 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2014-04-16 12:20:48 -0400 |
commit | 11c6fbd8d982617996fbc39097a84092eb6e8005 (patch) | |
tree | 031efffa2ea24c7f8a7ac0edd25ad64866545ca9 /drivers/pci | |
parent | 804f57b1a63c7435fe43b36942581cc6c79ebb5c (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.c | 1 | ||||
-rw-r--r-- | drivers/pci/host/pci-imx6.c | 1 | ||||
-rw-r--r-- | drivers/pci/host/pcie-designware.c | 6 | ||||
-rw-r--r-- | drivers/pci/host/pcie-designware.h | 1 |
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; |