diff options
author | Jiri Kosina <jkosina@suse.cz> | 2013-01-29 04:48:30 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2013-01-29 04:48:30 -0500 |
commit | 617677295b53a40d0e54aac4cbbc216ffbc755dd (patch) | |
tree | 51b9e87213243ed5efff252c8e8d8fec4eebc588 /arch/powerpc/sysdev/fsl_pci.c | |
parent | 5c8d1b68e01a144813e38795fe6dbe7ebb506131 (diff) | |
parent | 6abb7c25775b7fb2225ad0508236d63ca710e65f (diff) |
Merge branch 'master' into for-next
Conflicts:
drivers/devfreq/exynos4_bus.c
Sync with Linus' tree to be able to apply patches that are
against newer code (mvneta).
Diffstat (limited to 'arch/powerpc/sysdev/fsl_pci.c')
-rw-r--r-- | arch/powerpc/sysdev/fsl_pci.c | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index ffb93ae9379b..92a5915b1827 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c | |||
@@ -36,7 +36,7 @@ | |||
36 | 36 | ||
37 | static int fsl_pcie_bus_fixup, is_mpc83xx_pci; | 37 | static int fsl_pcie_bus_fixup, is_mpc83xx_pci; |
38 | 38 | ||
39 | static void __devinit quirk_fsl_pcie_header(struct pci_dev *dev) | 39 | static void quirk_fsl_pcie_header(struct pci_dev *dev) |
40 | { | 40 | { |
41 | u8 hdr_type; | 41 | u8 hdr_type; |
42 | 42 | ||
@@ -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 | ||
92 | static int __init setup_one_atmu(struct ccsr_pci __iomem *pci, | 92 | static 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 */ |
129 | static void __init setup_pci_atmu(struct pci_controller *hose, | 129 | static 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; |
@@ -136,7 +136,7 @@ static void __init setup_pci_atmu(struct pci_controller *hose, | |||
136 | u32 pcicsrbar = 0, pcicsrbar_sz; | 136 | u32 pcicsrbar = 0, pcicsrbar_sz; |
137 | u32 piwar = PIWAR_EN | PIWAR_PF | PIWAR_TGI_LOCAL | | 137 | u32 piwar = PIWAR_EN | PIWAR_PF | PIWAR_TGI_LOCAL | |
138 | PIWAR_READ_SNOOP | PIWAR_WRITE_SNOOP; | 138 | PIWAR_READ_SNOOP | PIWAR_WRITE_SNOOP; |
139 | char *name = hose->dn->full_name; | 139 | const char *name = hose->dn->full_name; |
140 | const u64 *reg; | 140 | const u64 *reg; |
141 | int len; | 141 | int len; |
142 | 142 | ||
@@ -871,7 +871,7 @@ void fsl_pci_assign_primary(void) | |||
871 | } | 871 | } |
872 | } | 872 | } |
873 | 873 | ||
874 | static int __devinit fsl_pci_probe(struct platform_device *pdev) | 874 | static int fsl_pci_probe(struct platform_device *pdev) |
875 | { | 875 | { |
876 | int ret; | 876 | int ret; |
877 | struct device_node *node; | 877 | struct device_node *node; |
@@ -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 | ||
906 | static 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 | |||
925 | static 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 | |||
905 | static struct platform_driver fsl_pci_driver = { | 937 | static 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, |