aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/fsl_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/sysdev/fsl_pci.c')
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 01b62a62c635..5ba325bff3a2 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -89,7 +89,7 @@ static int fsl_pci_dma_set_mask(struct device *dev, u64 dma_mask)
89 return 0; 89 return 0;
90} 90}
91 91
92static int __init setup_one_atmu(struct ccsr_pci __iomem *pci, 92static int setup_one_atmu(struct ccsr_pci __iomem *pci,
93 unsigned int index, const struct resource *res, 93 unsigned int index, const struct resource *res,
94 resource_size_t offset) 94 resource_size_t offset)
95{ 95{
@@ -126,7 +126,7 @@ static int __init setup_one_atmu(struct ccsr_pci __iomem *pci,
126} 126}
127 127
128/* atmu setup for fsl pci/pcie controller */ 128/* atmu setup for fsl pci/pcie controller */
129static void __init setup_pci_atmu(struct pci_controller *hose, 129static void setup_pci_atmu(struct pci_controller *hose,
130 struct resource *rsrc) 130 struct resource *rsrc)
131{ 131{
132 struct ccsr_pci __iomem *pci; 132 struct ccsr_pci __iomem *pci;
@@ -902,9 +902,42 @@ static int __devinit fsl_pci_probe(struct platform_device *pdev)
902 return 0; 902 return 0;
903} 903}
904 904
905#ifdef CONFIG_PM
906static int fsl_pci_resume(struct device *dev)
907{
908 struct pci_controller *hose;
909 struct resource pci_rsrc;
910
911 hose = pci_find_hose_for_OF_device(dev->of_node);
912 if (!hose)
913 return -ENODEV;
914
915 if (of_address_to_resource(dev->of_node, 0, &pci_rsrc)) {
916 dev_err(dev, "Get pci register base failed.");
917 return -ENODEV;
918 }
919
920 setup_pci_atmu(hose, &pci_rsrc);
921
922 return 0;
923}
924
925static const struct dev_pm_ops pci_pm_ops = {
926 .resume = fsl_pci_resume,
927};
928
929#define PCI_PM_OPS (&pci_pm_ops)
930
931#else
932
933#define PCI_PM_OPS NULL
934
935#endif
936
905static struct platform_driver fsl_pci_driver = { 937static struct platform_driver fsl_pci_driver = {
906 .driver = { 938 .driver = {
907 .name = "fsl-pci", 939 .name = "fsl-pci",
940 .pm = PCI_PM_OPS,
908 .of_match_table = pci_ids, 941 .of_match_table = pci_ids,
909 }, 942 },
910 .probe = fsl_pci_probe, 943 .probe = fsl_pci_probe,