powerpc/powernv: Move controller ops from ppc_md to controller_ops
authorDaniel Axtens <dja@axtens.net>
Tue, 31 Mar 2015 05:00:51 +0000 (16:00 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 11 Apr 2015 10:49:16 +0000 (20:49 +1000)
This moves the PowerNV platform to use the pci_controller_ops
structure rather than ppc_md for PCI controller operations.

Signed-off-by: Daniel Axtens <dja@axtens.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/pci-ioda.c
arch/powerpc/platforms/powernv/pci-p5ioc2.c
arch/powerpc/platforms/powernv/pci.c
arch/powerpc/platforms/powernv/powernv.h

index f93d6c2bd743ac6352c4de59be9a2264c3044c33..5e917753c6728089f896de58466ea6c27988fc7c 100644 (file)
@@ -1989,6 +1989,7 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np,
                hose->last_busno = 0xff;
        }
        hose->private_data = phb;
+       hose->controller_ops = pnv_pci_controller_ops;
        phb->hub_id = hub_id;
        phb->opal_id = phb_id;
        phb->type = ioda_type;
@@ -2102,9 +2103,9 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np,
         * the child P2P bridges) can form individual PE.
         */
        ppc_md.pcibios_fixup = pnv_pci_ioda_fixup;
-       ppc_md.pcibios_enable_device_hook = pnv_pci_enable_device_hook;
-       ppc_md.pcibios_window_alignment = pnv_pci_window_alignment;
-       ppc_md.pcibios_reset_secondary_bus = pnv_pci_reset_secondary_bus;
+       pnv_pci_controller_ops.enable_device_hook = pnv_pci_enable_device_hook;
+       pnv_pci_controller_ops.window_alignment = pnv_pci_window_alignment;
+       pnv_pci_controller_ops.reset_secondary_bus = pnv_pci_reset_secondary_bus;
        pci_add_flags(PCI_REASSIGN_ALL_RSRC);
 
        /* Reset IODA tables to a clean state */
index 6ef6d4d8e7e299a2a22dff034fa386d46041656b..4729ca793813cfe908e0d5818766ac130cfdafd6 100644 (file)
@@ -133,6 +133,7 @@ static void __init pnv_pci_init_p5ioc2_phb(struct device_node *np, u64 hub_id,
        phb->hose->first_busno = 0;
        phb->hose->last_busno = 0xff;
        phb->hose->private_data = phb;
+       phb->hose->controller_ops = pnv_pci_controller_ops;
        phb->hub_id = hub_id;
        phb->opal_id = phb_id;
        phb->type = PNV_PHB_P5IOC2;
index 4aa2e74534e87b3904537b747f71cb3ee9526d1b..fa96aa8aa1e2dc8ac5e20a2fcadca3d1a4f1e2fa 100644 (file)
@@ -744,7 +744,6 @@ void __init pnv_pci_init(void)
        pci_devs_phb_init();
 
        /* Configure IOMMU DMA hooks */
-       ppc_md.pci_dma_dev_setup = pnv_pci_dma_dev_setup;
        ppc_md.tce_build = pnv_tce_build_vm;
        ppc_md.tce_free = pnv_tce_free_vm;
        ppc_md.tce_build_rm = pnv_tce_build_rm;
@@ -760,3 +759,7 @@ void __init pnv_pci_init(void)
 }
 
 machine_subsys_initcall_sync(powernv, tce_iommu_bus_notifier_init);
+
+struct pci_controller_ops pnv_pci_controller_ops = {
+       .dma_dev_setup = pnv_pci_dma_dev_setup,
+};
index 604c48e7879a081cfea23a57f863328dc04d7688..826d2c9bea5693864c44143f2e3fb7e5a66cb609 100644 (file)
@@ -29,6 +29,8 @@ static inline u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev)
 }
 #endif
 
+extern struct pci_controller_ops pnv_pci_controller_ops;
+
 extern u32 pnv_get_supported_cpuidle_states(void);
 
 extern void pnv_lpc_init(void);