Commit 52c5affc authored by Varun Sethi's avatar Varun Sethi Committed by Kumar Gala

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: default avatarVarun Sethi <Varun.Sethi@freescale.com>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent e0e8398e
...@@ -421,13 +421,16 @@ void fsl_pcibios_fixup_bus(struct pci_bus *bus) ...@@ -421,13 +421,16 @@ void fsl_pcibios_fixup_bus(struct pci_bus *bus)
} }
} }
int __init fsl_add_bridge(struct device_node *dev, int is_primary) int __init fsl_add_bridge(struct platform_device *pdev, int is_primary)
{ {
int len; int len;
struct pci_controller *hose; struct pci_controller *hose;
struct resource rsrc; struct resource rsrc;
const int *bus_range; const int *bus_range;
u8 hdr_type, progif; u8 hdr_type, progif;
struct device_node *dev;
dev = pdev->dev.of_node;
if (!of_device_is_available(dev)) { if (!of_device_is_available(dev)) {
pr_warning("%s: disabled\n", dev->full_name); 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,6 +456,8 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
if (!hose) if (!hose)
return -ENOMEM; return -ENOMEM;
/* set platform device as the parent */
hose->parent = &pdev->dev;
hose->first_busno = bus_range ? bus_range[0] : 0x0; hose->first_busno = bus_range ? bus_range[0] : 0x0;
hose->last_busno = bus_range ? bus_range[1] : 0xff; hose->last_busno = bus_range ? bus_range[1] : 0xff;
...@@ -885,7 +890,7 @@ static int fsl_pci_probe(struct platform_device *pdev) ...@@ -885,7 +890,7 @@ static int fsl_pci_probe(struct platform_device *pdev)
#endif #endif
node = pdev->dev.of_node; node = pdev->dev.of_node;
ret = fsl_add_bridge(node, fsl_pci_primary == node); ret = fsl_add_bridge(pdev, fsl_pci_primary == node);
#ifdef CONFIG_SWIOTLB #ifdef CONFIG_SWIOTLB
if (ret == 0) { if (ret == 0) {
......
...@@ -91,7 +91,7 @@ struct ccsr_pci { ...@@ -91,7 +91,7 @@ struct ccsr_pci {
__be32 pex_err_cap_r3; /* 0x.e34 - PCIE error capture register 0 */ __be32 pex_err_cap_r3; /* 0x.e34 - PCIE error capture register 0 */
}; };
extern int fsl_add_bridge(struct device_node *dev, int is_primary); extern int fsl_add_bridge(struct platform_device *pdev, int is_primary);
extern void fsl_pcibios_fixup_bus(struct pci_bus *bus); extern void fsl_pcibios_fixup_bus(struct pci_bus *bus);
extern int mpc83xx_add_bridge(struct device_node *dev); extern int mpc83xx_add_bridge(struct device_node *dev);
u64 fsl_pci_immrbar_base(struct pci_controller *hose); u64 fsl_pci_immrbar_base(struct pci_controller *hose);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment