aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev
diff options
context:
space:
mode:
authorVarun Sethi <Varun.Sethi@freescale.com>2013-01-14 06:28:00 -0500
committerKumar Gala <galak@kernel.crashing.org>2013-02-15 15:10:32 -0500
commit52c5affc545053d37c0b05224bbf70f5336caa20 (patch)
treefe1ff854cec9bfdb841c2f08ee568435f1f68ea3 /arch/powerpc/sysdev
parente0e8398e3a06580583b08ed756567a0c66fd725b (diff)
powerpc/fsl_pci: Store the pci ctlr device ptr in the pci ctlr struct
The pci controller structure has a provision to store the device structure pointer of the corresponding platform device. Currently this information is not stored during fsl pci controller initialization. This information is required while dealing with iommu groups for pci devices connected to the fsl pci controller. For the case where the pci devices can't be paritioned, they would fall under the same device group as the pci controller. This patch stores the platform device information in the pci controller structure during initialization. Signed-off-by: Varun Sethi <Varun.Sethi@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/sysdev')
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c9
-rw-r--r--arch/powerpc/sysdev/fsl_pci.h2
2 files changed, 8 insertions, 3 deletions
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index f213fb6dabfc..682084dba19b 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -421,13 +421,16 @@ void fsl_pcibios_fixup_bus(struct pci_bus *bus)
421 } 421 }
422} 422}
423 423
424int __init fsl_add_bridge(struct device_node *dev, int is_primary) 424int __init fsl_add_bridge(struct platform_device *pdev, int is_primary)
425{ 425{
426 int len; 426 int len;
427 struct pci_controller *hose; 427 struct pci_controller *hose;
428 struct resource rsrc; 428 struct resource rsrc;
429 const int *bus_range; 429 const int *bus_range;
430 u8 hdr_type, progif; 430 u8 hdr_type, progif;
431 struct device_node *dev;
432
433 dev = pdev->dev.of_node;
431 434
432 if (!of_device_is_available(dev)) { 435 if (!of_device_is_available(dev)) {
433 pr_warning("%s: disabled\n", dev->full_name); 436 pr_warning("%s: disabled\n", dev->full_name);
@@ -453,6 +456,8 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
453 if (!hose) 456 if (!hose)
454 return -ENOMEM; 457 return -ENOMEM;
455 458
459 /* set platform device as the parent */
460 hose->parent = &pdev->dev;
456 hose->first_busno = bus_range ? bus_range[0] : 0x0; 461 hose->first_busno = bus_range ? bus_range[0] : 0x0;
457 hose->last_busno = bus_range ? bus_range[1] : 0xff; 462 hose->last_busno = bus_range ? bus_range[1] : 0xff;
458 463
@@ -885,7 +890,7 @@ static int fsl_pci_probe(struct platform_device *pdev)
885#endif 890#endif
886 891
887 node = pdev->dev.of_node; 892 node = pdev->dev.of_node;
888 ret = fsl_add_bridge(node, fsl_pci_primary == node); 893 ret = fsl_add_bridge(pdev, fsl_pci_primary == node);
889 894
890#ifdef CONFIG_SWIOTLB 895#ifdef CONFIG_SWIOTLB
891 if (ret == 0) { 896 if (ret == 0) {
diff --git a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h
index d078537adece..c495c00c8740 100644
--- a/arch/powerpc/sysdev/fsl_pci.h
+++ b/arch/powerpc/sysdev/fsl_pci.h
@@ -91,7 +91,7 @@ struct ccsr_pci {
91 __be32 pex_err_cap_r3; /* 0x.e34 - PCIE error capture register 0 */ 91 __be32 pex_err_cap_r3; /* 0x.e34 - PCIE error capture register 0 */
92}; 92};
93 93
94extern int fsl_add_bridge(struct device_node *dev, int is_primary); 94extern int fsl_add_bridge(struct platform_device *pdev, int is_primary);
95extern void fsl_pcibios_fixup_bus(struct pci_bus *bus); 95extern void fsl_pcibios_fixup_bus(struct pci_bus *bus);
96extern int mpc83xx_add_bridge(struct device_node *dev); 96extern int mpc83xx_add_bridge(struct device_node *dev);
97u64 fsl_pci_immrbar_base(struct pci_controller *hose); 97u64 fsl_pci_immrbar_base(struct pci_controller *hose);