Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Varun Sethi and committed by
Kumar Gala
52c5affc e0e8398e

+8 -3
+7 -2
arch/powerpc/sysdev/fsl_pci.c
··· 421 421 } 422 422 } 423 423 424 - int __init fsl_add_bridge(struct device_node *dev, int is_primary) 424 + int __init fsl_add_bridge(struct platform_device *pdev, int is_primary) 425 425 { 426 426 int len; 427 427 struct pci_controller *hose; 428 428 struct resource rsrc; 429 429 const int *bus_range; 430 430 u8 hdr_type, progif; 431 + struct device_node *dev; 432 + 433 + dev = pdev->dev.of_node; 431 434 432 435 if (!of_device_is_available(dev)) { 433 436 pr_warning("%s: disabled\n", dev->full_name); ··· 456 453 if (!hose) 457 454 return -ENOMEM; 458 455 456 + /* set platform device as the parent */ 457 + hose->parent = &pdev->dev; 459 458 hose->first_busno = bus_range ? bus_range[0] : 0x0; 460 459 hose->last_busno = bus_range ? bus_range[1] : 0xff; 461 460 ··· 890 885 #endif 891 886 892 887 node = pdev->dev.of_node; 893 - ret = fsl_add_bridge(node, fsl_pci_primary == node); 888 + ret = fsl_add_bridge(pdev, fsl_pci_primary == node); 894 889 895 890 #ifdef CONFIG_SWIOTLB 896 891 if (ret == 0) {
+1 -1
arch/powerpc/sysdev/fsl_pci.h
··· 91 91 __be32 pex_err_cap_r3; /* 0x.e34 - PCIE error capture register 0 */ 92 92 }; 93 93 94 - extern int fsl_add_bridge(struct device_node *dev, int is_primary); 94 + extern int fsl_add_bridge(struct platform_device *pdev, int is_primary); 95 95 extern void fsl_pcibios_fixup_bus(struct pci_bus *bus); 96 96 extern int mpc83xx_add_bridge(struct device_node *dev); 97 97 u64 fsl_pci_immrbar_base(struct pci_controller *hose);