diff options
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/include/asm/pci-bridge.h | 1 | ||||
| -rw-r--r-- | arch/powerpc/kernel/dma.c | 7 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powernv/pci-ioda.c | 7 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powernv/pci.c | 11 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powernv/pci.h | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powernv/powernv.h | 6 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powernv/setup.c | 9 |
7 files changed, 12 insertions, 31 deletions
diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h index 712add590445..37fc53587bb4 100644 --- a/arch/powerpc/include/asm/pci-bridge.h +++ b/arch/powerpc/include/asm/pci-bridge.h | |||
| @@ -42,6 +42,7 @@ struct pci_controller_ops { | |||
| 42 | #endif | 42 | #endif |
| 43 | 43 | ||
| 44 | int (*dma_set_mask)(struct pci_dev *dev, u64 dma_mask); | 44 | int (*dma_set_mask)(struct pci_dev *dev, u64 dma_mask); |
| 45 | u64 (*dma_get_required_mask)(struct pci_dev *dev); | ||
| 45 | 46 | ||
| 46 | void (*shutdown)(struct pci_controller *); | 47 | void (*shutdown)(struct pci_controller *); |
| 47 | }; | 48 | }; |
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index 1558f81ac1ff..59503ed98e5f 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c | |||
| @@ -353,6 +353,13 @@ u64 dma_get_required_mask(struct device *dev) | |||
| 353 | if (ppc_md.dma_get_required_mask) | 353 | if (ppc_md.dma_get_required_mask) |
| 354 | return ppc_md.dma_get_required_mask(dev); | 354 | return ppc_md.dma_get_required_mask(dev); |
| 355 | 355 | ||
| 356 | if (dev_is_pci(dev)) { | ||
| 357 | struct pci_dev *pdev = to_pci_dev(dev); | ||
| 358 | struct pci_controller *phb = pci_bus_to_host(pdev->bus); | ||
| 359 | if (phb->controller_ops.dma_get_required_mask) | ||
| 360 | return phb->controller_ops.dma_get_required_mask(pdev); | ||
| 361 | } | ||
| 362 | |||
| 356 | return __dma_get_required_mask(dev); | 363 | return __dma_get_required_mask(dev); |
| 357 | } | 364 | } |
| 358 | EXPORT_SYMBOL_GPL(dma_get_required_mask); | 365 | EXPORT_SYMBOL_GPL(dma_get_required_mask); |
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c index fdafbaccafbe..528cd1e0b5ae 100644 --- a/arch/powerpc/platforms/powernv/pci-ioda.c +++ b/arch/powerpc/platforms/powernv/pci-ioda.c | |||
| @@ -1597,9 +1597,10 @@ static int pnv_pci_ioda_dma_set_mask(struct pci_dev *pdev, u64 dma_mask) | |||
| 1597 | return 0; | 1597 | return 0; |
| 1598 | } | 1598 | } |
| 1599 | 1599 | ||
| 1600 | static u64 pnv_pci_ioda_dma_get_required_mask(struct pnv_phb *phb, | 1600 | static u64 pnv_pci_ioda_dma_get_required_mask(struct pci_dev *pdev) |
| 1601 | struct pci_dev *pdev) | ||
| 1602 | { | 1601 | { |
| 1602 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | ||
| 1603 | struct pnv_phb *phb = hose->private_data; | ||
| 1603 | struct pci_dn *pdn = pci_get_pdn(pdev); | 1604 | struct pci_dn *pdn = pci_get_pdn(pdev); |
| 1604 | struct pnv_ioda_pe *pe; | 1605 | struct pnv_ioda_pe *pe; |
| 1605 | u64 end, mask; | 1606 | u64 end, mask; |
| @@ -3024,6 +3025,7 @@ static const struct pci_controller_ops pnv_pci_ioda_controller_ops = { | |||
| 3024 | .window_alignment = pnv_pci_window_alignment, | 3025 | .window_alignment = pnv_pci_window_alignment, |
| 3025 | .reset_secondary_bus = pnv_pci_reset_secondary_bus, | 3026 | .reset_secondary_bus = pnv_pci_reset_secondary_bus, |
| 3026 | .dma_set_mask = pnv_pci_ioda_dma_set_mask, | 3027 | .dma_set_mask = pnv_pci_ioda_dma_set_mask, |
| 3028 | .dma_get_required_mask = pnv_pci_ioda_dma_get_required_mask, | ||
| 3027 | .shutdown = pnv_pci_ioda_shutdown, | 3029 | .shutdown = pnv_pci_ioda_shutdown, |
| 3028 | }; | 3030 | }; |
| 3029 | 3031 | ||
| @@ -3170,7 +3172,6 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np, | |||
| 3170 | 3172 | ||
| 3171 | /* Setup TCEs */ | 3173 | /* Setup TCEs */ |
| 3172 | phb->dma_dev_setup = pnv_pci_ioda_dma_dev_setup; | 3174 | phb->dma_dev_setup = pnv_pci_ioda_dma_dev_setup; |
| 3173 | phb->dma_get_required_mask = pnv_pci_ioda_dma_get_required_mask; | ||
| 3174 | 3175 | ||
| 3175 | /* Setup MSI support */ | 3176 | /* Setup MSI support */ |
| 3176 | pnv_pci_init_ioda_msis(phb); | 3177 | pnv_pci_init_ioda_msis(phb); |
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c index 765d8ed558d0..3e7f6fda00cf 100644 --- a/arch/powerpc/platforms/powernv/pci.c +++ b/arch/powerpc/platforms/powernv/pci.c | |||
| @@ -761,17 +761,6 @@ void pnv_pci_dma_dev_setup(struct pci_dev *pdev) | |||
| 761 | phb->dma_dev_setup(phb, pdev); | 761 | phb->dma_dev_setup(phb, pdev); |
| 762 | } | 762 | } |
| 763 | 763 | ||
| 764 | u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev) | ||
| 765 | { | ||
| 766 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | ||
| 767 | struct pnv_phb *phb = hose->private_data; | ||
| 768 | |||
| 769 | if (phb && phb->dma_get_required_mask) | ||
| 770 | return phb->dma_get_required_mask(phb, pdev); | ||
| 771 | |||
| 772 | return __dma_get_required_mask(&pdev->dev); | ||
| 773 | } | ||
| 774 | |||
| 775 | void pnv_pci_shutdown(void) | 764 | void pnv_pci_shutdown(void) |
| 776 | { | 765 | { |
| 777 | struct pci_controller *hose; | 766 | struct pci_controller *hose; |
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h index e891ff48d7e6..c8ff50e90766 100644 --- a/arch/powerpc/platforms/powernv/pci.h +++ b/arch/powerpc/platforms/powernv/pci.h | |||
| @@ -105,8 +105,6 @@ struct pnv_phb { | |||
| 105 | unsigned int hwirq, unsigned int virq, | 105 | unsigned int hwirq, unsigned int virq, |
| 106 | unsigned int is_64, struct msi_msg *msg); | 106 | unsigned int is_64, struct msi_msg *msg); |
| 107 | void (*dma_dev_setup)(struct pnv_phb *phb, struct pci_dev *pdev); | 107 | void (*dma_dev_setup)(struct pnv_phb *phb, struct pci_dev *pdev); |
| 108 | u64 (*dma_get_required_mask)(struct pnv_phb *phb, | ||
| 109 | struct pci_dev *pdev); | ||
| 110 | void (*fixup_phb)(struct pci_controller *hose); | 108 | void (*fixup_phb)(struct pci_controller *hose); |
| 111 | u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn); | 109 | u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn); |
| 112 | int (*init_m64)(struct pnv_phb *phb); | 110 | int (*init_m64)(struct pnv_phb *phb); |
diff --git a/arch/powerpc/platforms/powernv/powernv.h b/arch/powerpc/platforms/powernv/powernv.h index 9269e30e4ca0..6dbc0a1da1f6 100644 --- a/arch/powerpc/platforms/powernv/powernv.h +++ b/arch/powerpc/platforms/powernv/powernv.h | |||
| @@ -12,15 +12,9 @@ struct pci_dev; | |||
| 12 | #ifdef CONFIG_PCI | 12 | #ifdef CONFIG_PCI |
| 13 | extern void pnv_pci_init(void); | 13 | extern void pnv_pci_init(void); |
| 14 | extern void pnv_pci_shutdown(void); | 14 | extern void pnv_pci_shutdown(void); |
| 15 | extern u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev); | ||
| 16 | #else | 15 | #else |
| 17 | static inline void pnv_pci_init(void) { } | 16 | static inline void pnv_pci_init(void) { } |
| 18 | static inline void pnv_pci_shutdown(void) { } | 17 | static inline void pnv_pci_shutdown(void) { } |
| 19 | |||
| 20 | static inline u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev) | ||
| 21 | { | ||
| 22 | return 0; | ||
| 23 | } | ||
| 24 | #endif | 18 | #endif |
| 25 | 19 | ||
| 26 | extern u32 pnv_get_supported_cpuidle_states(void); | 20 | extern u32 pnv_get_supported_cpuidle_states(void); |
diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c index 53737e019ae3..77a31c1474a5 100644 --- a/arch/powerpc/platforms/powernv/setup.c +++ b/arch/powerpc/platforms/powernv/setup.c | |||
| @@ -165,14 +165,6 @@ static void pnv_progress(char *s, unsigned short hex) | |||
| 165 | { | 165 | { |
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | static u64 pnv_dma_get_required_mask(struct device *dev) | ||
| 169 | { | ||
| 170 | if (dev_is_pci(dev)) | ||
| 171 | return pnv_pci_dma_get_required_mask(to_pci_dev(dev)); | ||
| 172 | |||
| 173 | return __dma_get_required_mask(dev); | ||
| 174 | } | ||
| 175 | |||
| 176 | static void pnv_shutdown(void) | 168 | static void pnv_shutdown(void) |
| 177 | { | 169 | { |
| 178 | /* Let the PCI code clear up IODA tables */ | 170 | /* Let the PCI code clear up IODA tables */ |
| @@ -314,7 +306,6 @@ define_machine(powernv) { | |||
| 314 | .machine_shutdown = pnv_shutdown, | 306 | .machine_shutdown = pnv_shutdown, |
| 315 | .power_save = power7_idle, | 307 | .power_save = power7_idle, |
| 316 | .calibrate_decr = generic_calibrate_decr, | 308 | .calibrate_decr = generic_calibrate_decr, |
| 317 | .dma_get_required_mask = pnv_dma_get_required_mask, | ||
| 318 | #ifdef CONFIG_KEXEC | 309 | #ifdef CONFIG_KEXEC |
| 319 | .kexec_cpu_down = pnv_kexec_cpu_down, | 310 | .kexec_cpu_down = pnv_kexec_cpu_down, |
| 320 | #endif | 311 | #endif |
