diff options
| -rw-r--r-- | drivers/pci/host/pcie-designware.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c index a9a62ce4bf05..c4e373294476 100644 --- a/drivers/pci/host/pcie-designware.c +++ b/drivers/pci/host/pcie-designware.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
| 18 | #include <linux/msi.h> | 18 | #include <linux/msi.h> |
| 19 | #include <linux/of_address.h> | 19 | #include <linux/of_address.h> |
| 20 | #include <linux/of_pci.h> | ||
| 20 | #include <linux/pci.h> | 21 | #include <linux/pci.h> |
| 21 | #include <linux/pci_regs.h> | 22 | #include <linux/pci_regs.h> |
| 22 | #include <linux/types.h> | 23 | #include <linux/types.h> |
| @@ -490,7 +491,7 @@ int __init dw_pcie_host_init(struct pcie_port *pp) | |||
| 490 | dw_pci.nr_controllers = 1; | 491 | dw_pci.nr_controllers = 1; |
| 491 | dw_pci.private_data = (void **)&pp; | 492 | dw_pci.private_data = (void **)&pp; |
| 492 | 493 | ||
| 493 | pci_common_init(&dw_pci); | 494 | pci_common_init_dev(pp->dev, &dw_pci); |
| 494 | pci_assign_unassigned_resources(); | 495 | pci_assign_unassigned_resources(); |
| 495 | #ifdef CONFIG_PCI_DOMAINS | 496 | #ifdef CONFIG_PCI_DOMAINS |
| 496 | dw_pci.domain++; | 497 | dw_pci.domain++; |
| @@ -723,7 +724,7 @@ static struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys) | |||
| 723 | 724 | ||
| 724 | if (pp) { | 725 | if (pp) { |
| 725 | pp->root_bus_nr = sys->busnr; | 726 | pp->root_bus_nr = sys->busnr; |
| 726 | bus = pci_scan_root_bus(NULL, sys->busnr, &dw_pcie_ops, | 727 | bus = pci_scan_root_bus(pp->dev, sys->busnr, &dw_pcie_ops, |
| 727 | sys, &sys->resources); | 728 | sys, &sys->resources); |
| 728 | } else { | 729 | } else { |
| 729 | bus = NULL; | 730 | bus = NULL; |
| @@ -736,8 +737,13 @@ static struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys) | |||
| 736 | static int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 737 | static int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
| 737 | { | 738 | { |
| 738 | struct pcie_port *pp = sys_to_pcie(dev->bus->sysdata); | 739 | struct pcie_port *pp = sys_to_pcie(dev->bus->sysdata); |
| 740 | int irq; | ||
| 739 | 741 | ||
| 740 | return pp->irq; | 742 | irq = of_irq_parse_and_map_pci(dev, slot, pin); |
| 743 | if (!irq) | ||
| 744 | irq = pp->irq; | ||
| 745 | |||
| 746 | return irq; | ||
| 741 | } | 747 | } |
| 742 | 748 | ||
| 743 | static void dw_pcie_add_bus(struct pci_bus *bus) | 749 | static void dw_pcie_add_bus(struct pci_bus *bus) |
