Home
last modified time | relevance | path

Searched refs:phb (Results 1 – 25 of 81) sorted by relevance

1234

/openbmc/qemu/hw/pci-host/
H A Dpnv_phb4.c25 #define phb_error(phb, fmt, ...) \ argument
27 (phb)->chip_id, (phb)->phb_id, ## __VA_ARGS__)
33 static PCIDevice *pnv_phb4_find_cfg_dev(PnvPHB4 *phb) in pnv_phb4_find_cfg_dev() argument
35 PCIHostState *pci = PCI_HOST_BRIDGE(phb->phb_base); in pnv_phb4_find_cfg_dev()
36 uint64_t addr = phb->regs[PHB_CONFIG_ADDRESS >> 3]; in pnv_phb4_find_cfg_dev()
56 static void pnv_phb4_config_write(PnvPHB4 *phb, unsigned off, in pnv_phb4_config_write() argument
62 pdev = pnv_phb4_find_cfg_dev(phb); in pnv_phb4_config_write()
66 cfg_addr = (phb->regs[PHB_CONFIG_ADDRESS >> 3] >> 32) & 0xffc; in pnv_phb4_config_write()
91 static uint64_t pnv_phb4_config_read(PnvPHB4 *phb, unsigned off, in pnv_phb4_config_read() argument
98 pdev = pnv_phb4_find_cfg_dev(phb); in pnv_phb4_config_read()
[all …]
H A Dpnv_phb3.c25 #define phb3_error(phb, fmt, ...) \ argument
27 (phb)->chip_id, (phb)->phb_id, ## __VA_ARGS__)
29 static PCIDevice *pnv_phb3_find_cfg_dev(PnvPHB3 *phb) in pnv_phb3_find_cfg_dev() argument
31 PCIHostState *pci = PCI_HOST_BRIDGE(phb->phb_base); in pnv_phb3_find_cfg_dev()
32 uint64_t addr = phb->regs[PHB_CONFIG_ADDRESS >> 3]; in pnv_phb3_find_cfg_dev()
48 static void pnv_phb3_config_write(PnvPHB3 *phb, unsigned off, in pnv_phb3_config_write() argument
54 pdev = pnv_phb3_find_cfg_dev(phb); in pnv_phb3_config_write()
58 cfg_addr = (phb->regs[PHB_CONFIG_ADDRESS >> 3] >> 32) & 0xffc; in pnv_phb3_config_write()
83 static uint64_t pnv_phb3_config_read(PnvPHB3 *phb, unsigned off, in pnv_phb3_config_read() argument
90 pdev = pnv_phb3_find_cfg_dev(phb); in pnv_phb3_config_read()
[all …]
H A Dpnv_phb.c65 static Object *pnv_phb_user_get_parent(PnvChip *chip, PnvPHB *phb, Error **errp) in pnv_phb_user_get_parent() argument
67 if (phb->version == 3) { in pnv_phb_user_get_parent()
68 return OBJECT(pnv_chip_add_phb(chip, phb)); in pnv_phb_user_get_parent()
70 return OBJECT(pnv_pec_add_phb(chip, phb, errp)); in pnv_phb_user_get_parent()
80 static bool pnv_phb_user_device_init(PnvPHB *phb, Error **errp) in pnv_phb_user_device_init() argument
83 PnvChip *chip = pnv_get_chip(pnv, phb->chip_id); in pnv_phb_user_device_init()
87 error_setg(errp, "invalid chip id: %d", phb->chip_id); in pnv_phb_user_device_init()
91 parent = pnv_phb_user_get_parent(chip, phb, errp); in pnv_phb_user_device_init()
102 OBJECT(phb), phb->phb_id, errp)) { in pnv_phb_user_device_init()
111 PnvPHB *phb = PNV_PHB(dev); in pnv_phb_realize() local
[all …]
H A Dpnv_phb3_pbcq.c25 (pbcq)->phb->chip_id, (pbcq)->phb->phb_id, ## __VA_ARGS__)
52 return pnv_phb3_reg_read(pbcq->phb, in pnv_pbcq_spci_xscom_read()
86 pnv_phb3_update_regions(pbcq->phb); in pnv_pbcq_update_map()
118 pnv_phb3_update_regions(pbcq->phb); in pnv_pbcq_update_map()
148 pnv_phb3_remap_irqs(pbcq->phb); in pnv_pbcq_nest_xscom_write()
153 pnv_phb3_remap_irqs(pbcq->phb); in pnv_pbcq_nest_xscom_write()
157 pnv_phb3_remap_irqs(pbcq->phb); in pnv_pbcq_nest_xscom_write()
196 pnv_phb3_reg_write(pbcq->phb, pbcq->spci_regs[PBCQ_SPCI_ASB_ADDR], in pnv_pbcq_spci_xscom_write()
241 PnvPHB3 *phb = pbcq->phb; in pnv_pbcq_default_bars() local
243 mm0 = 0x3d00000000000ull + 0x4000000000ull * phb->chip_id + in pnv_pbcq_default_bars()
[all …]
H A Dpnv_phb3_msi.c20 static uint64_t phb3_msi_ive_addr(PnvPHB3 *phb, int srcno) in phb3_msi_ive_addr() argument
22 uint64_t ivtbar = phb->regs[PHB_IVT_BAR >> 3]; in phb3_msi_ive_addr()
23 uint64_t phbctl = phb->regs[PHB_CONTROL >> 3]; in phb3_msi_ive_addr()
45 static bool phb3_msi_read_ive(PnvPHB3 *phb, int srcno, uint64_t *out_ive) in phb3_msi_read_ive() argument
49 ive_addr = phb3_msi_ive_addr(phb, srcno); in phb3_msi_read_ive()
70 ive_addr = phb3_msi_ive_addr(msi->phb, srcno); in phb3_msi_set_p()
87 ive_addr = phb3_msi_ive_addr(msi->phb, srcno); in phb3_msi_set_q()
105 if (!phb3_msi_read_ive(msi->phb, srcno, &ive)) { in phb3_msi_try_send()
170 if (!phb3_msi_read_ive(msi->phb, src, &ive)) { in pnv_phb3_msi_send()
190 msi->phb->regs[PHB_FFI_LOCK >> 3] = 0; in pnv_phb3_msi_ffi()
[all …]
H A Dgrackle.c53 PCIHostState *phb = PCI_HOST_BRIDGE(dev); in grackle_realize() local
55 phb->bus = pci_register_root_bus(dev, NULL, in grackle_realize()
63 pci_create_simple(phb->bus, 0, "grackle"); in grackle_realize()
70 PCIHostState *phb = PCI_HOST_BRIDGE(obj); in grackle_init() local
79 memory_region_init_io(&phb->conf_mem, obj, &pci_host_conf_le_ops, in grackle_init()
81 memory_region_init_io(&phb->data_mem, obj, &pci_host_data_le_ops, in grackle_init()
84 sysbus_init_mmio(sbd, &phb->conf_mem); in grackle_init()
85 sysbus_init_mmio(sbd, &phb->data_mem); in grackle_init()
/openbmc/linux/arch/powerpc/platforms/powernv/
H A Dpci-ioda.c116 static struct pnv_ioda_pe *pnv_ioda_init_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_init_pe() argument
120 phb->ioda.pe_array[pe_no].phb = phb; in pnv_ioda_init_pe()
121 phb->ioda.pe_array[pe_no].pe_number = pe_no; in pnv_ioda_init_pe()
122 phb->ioda.pe_array[pe_no].dma_setup_done = false; in pnv_ioda_init_pe()
129 rc = opal_pci_eeh_freeze_clear(phb->opal_id, pe_no, in pnv_ioda_init_pe()
133 __func__, rc, phb->hose->global_number, pe_no); in pnv_ioda_init_pe()
135 return &phb->ioda.pe_array[pe_no]; in pnv_ioda_init_pe()
138 static void pnv_ioda_reserve_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_reserve_pe() argument
140 if (!(pe_no >= 0 && pe_no < phb->ioda.total_pe_num)) { in pnv_ioda_reserve_pe()
142 __func__, pe_no, phb->hose->global_number); in pnv_ioda_reserve_pe()
[all …]
H A Deeh-powernv.c109 struct pnv_phb *phb = hose->private_data; in pnv_eeh_dbgfs_set() local
111 out_be64(phb->regs + offset, val); in pnv_eeh_dbgfs_set()
118 struct pnv_phb *phb = hose->private_data; in pnv_eeh_dbgfs_get() local
120 *val = in_be64(phb->regs + offset); in pnv_eeh_dbgfs_get()
149 struct pnv_phb *phb; in pnv_eeh_enable_phbs() local
152 phb = hose->private_data; in pnv_eeh_enable_phbs()
159 phb->flags |= PNV_PHB_FLAG_EEH; in pnv_eeh_enable_phbs()
161 phb->flags &= ~PNV_PHB_FLAG_EEH; in pnv_eeh_enable_phbs()
176 struct pnv_phb *phb; in pnv_eeh_post_init() local
204 phb = hose->private_data; in pnv_eeh_post_init()
[all …]
H A Dpci-sriov.c145 struct pnv_phb *phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_ioda_fixup_iov_resources() local
156 mul = phb->ioda.total_pe_num; in pnv_pci_ioda_fixup_iov_resources()
180 if (vf_bar_sz > (phb->ioda.m64_segsize >> 2)) { in pnv_pci_ioda_fixup_iov_resources()
251 struct pnv_phb *phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_iov_resource_alignment() local
281 return phb->ioda.total_pe_num * align; in pnv_pci_iov_resource_alignment()
287 struct pnv_phb *phb; in pnv_pci_vf_release_m64() local
290 phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_vf_release_m64()
294 opal_pci_phb_mmio_enable(phb->opal_id, in pnv_pci_vf_release_m64()
299 clear_bit(window_id, &phb->ioda.m64_bar_alloc); in pnv_pci_vf_release_m64()
311 static int64_t pnv_ioda_map_m64_segmented(struct pnv_phb *phb, in pnv_ioda_map_m64_segmented() argument
[all …]
H A Dpci-cxl.c16 struct pnv_phb *phb = hose->private_data; in pnv_phb_to_cxl_mode() local
26 rc = opal_pci_set_phb_cxl_mode(phb->opal_id, mode, pe->pe_number); in pnv_phb_to_cxl_mode()
42 struct pnv_phb *phb = hose->private_data; in pnv_cxl_alloc_hwirqs() local
43 int hwirq = msi_bitmap_alloc_hwirqs(&phb->msi_bmp, num); in pnv_cxl_alloc_hwirqs()
50 return phb->msi_base + hwirq; in pnv_cxl_alloc_hwirqs()
57 struct pnv_phb *phb = hose->private_data; in pnv_cxl_release_hwirqs() local
59 msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq - phb->msi_base, num); in pnv_cxl_release_hwirqs()
67 struct pnv_phb *phb = hose->private_data; in pnv_cxl_release_hwirq_ranges() local
76 hwirq = irqs->offset[i] - phb->msi_base; in pnv_cxl_release_hwirq_ranges()
77 msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq, in pnv_cxl_release_hwirq_ranges()
[all …]
H A Dpci.c488 static void pnv_pci_handle_eeh_config(struct pnv_phb *phb, u32 pe_no) in pnv_pci_handle_eeh_config() argument
493 spin_lock_irqsave(&phb->lock, flags); in pnv_pci_handle_eeh_config()
496 rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag_data, in pnv_pci_handle_eeh_config()
497 phb->diag_data_size); in pnv_pci_handle_eeh_config()
501 if (phb->unfreeze_pe) { in pnv_pci_handle_eeh_config()
502 ret = phb->unfreeze_pe(phb, in pnv_pci_handle_eeh_config()
506 rc = opal_pci_eeh_freeze_clear(phb->opal_id, in pnv_pci_handle_eeh_config()
512 __func__, rc, phb->hose->global_number, in pnv_pci_handle_eeh_config()
525 pnv_pci_dump_phb_diag_data(phb->hose, phb->diag_data); in pnv_pci_handle_eeh_config()
527 spin_unlock_irqrestore(&phb->lock, flags); in pnv_pci_handle_eeh_config()
[all …]
H A Dpci.h57 struct pnv_phb *phb; member
126 int (*init_m64)(struct pnv_phb *phb);
127 int (*get_pe_state)(struct pnv_phb *phb, int pe_no);
128 void (*freeze_pe)(struct pnv_phb *phb, int pe_no);
129 int (*unfreeze_pe)(struct pnv_phb *phb, int pe_no, int opt);
187 static inline bool pnv_pci_is_m64(struct pnv_phb *phb, struct resource *r) in pnv_pci_is_m64() argument
196 return (r->start >= phb->ioda.m64_base && in pnv_pci_is_m64()
197 r->start < (phb->ioda.m64_base + phb->ioda.m64_size)); in pnv_pci_is_m64()
207 int pnv_ioda_configure_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe);
208 int pnv_ioda_deconfigure_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe);
[all …]
/openbmc/linux/drivers/misc/cxl/
H A Dvphb.c30 struct pci_controller *phb; in cxl_pci_enable_device_hook() local
34 phb = pci_bus_to_host(dev->bus); in cxl_pci_enable_device_hook()
35 afu = (struct cxl_afu *)phb->private_data; in cxl_pci_enable_device_hook()
82 struct pci_controller *phb = bus ? pci_bus_to_host(bus) : NULL; in pci_bus_to_afu() local
84 return phb ? phb->private_data : NULL; in pci_bus_to_afu()
204 struct pci_controller *phb; in cxl_pci_vphb_add() local
230 phb = pcibios_alloc_controller(vphb_dn); in cxl_pci_vphb_add()
231 if (!phb) in cxl_pci_vphb_add()
235 phb->parent = parent; in cxl_pci_vphb_add()
238 phb->ops = &cxl_pcie_pci_ops; in cxl_pci_vphb_add()
[all …]
/openbmc/linux/arch/powerpc/platforms/pseries/
H A Dpci_dlpar.c23 struct pci_controller *phb; in init_phb_dynamic() local
27 phb = pcibios_alloc_controller(dn); in init_phb_dynamic()
28 if (!phb) in init_phb_dynamic()
30 rtas_setup_phb(phb); in init_phb_dynamic()
31 pci_process_bridge_OF_ranges(phb, dn, 0); in init_phb_dynamic()
32 phb->controller_ops = pseries_pci_controller_ops; in init_phb_dynamic()
34 pci_devs_phb_init_dynamic(phb); in init_phb_dynamic()
36 pseries_msi_allocate_domains(phb); in init_phb_dynamic()
38 ppc_iommu_register_device(phb); in init_phb_dynamic()
41 eeh_phb_pe_create(phb); in init_phb_dynamic()
[all …]
H A Deeh_pseries.c104 struct pci_controller *phb = pdn->phb; in pseries_eeh_get_pe_config_addr() local
113 config_addr, BUID_HI(phb->buid), in pseries_eeh_get_pe_config_addr()
114 BUID_LO(phb->buid), 1); in pseries_eeh_get_pe_config_addr()
120 config_addr, BUID_HI(phb->buid), in pseries_eeh_get_pe_config_addr()
121 BUID_LO(phb->buid), 0); in pseries_eeh_get_pe_config_addr()
124 __func__, phb->global_number, config_addr); in pseries_eeh_get_pe_config_addr()
133 config_addr, BUID_HI(phb->buid), in pseries_eeh_get_pe_config_addr()
134 BUID_LO(phb->buid), 0); in pseries_eeh_get_pe_config_addr()
137 __func__, phb->global_number, config_addr); in pseries_eeh_get_pe_config_addr()
162 static int pseries_eeh_phb_reset(struct pci_controller *phb, int config_addr, int option) in pseries_eeh_phb_reset() argument
[all …]
H A Dmsi.c39 buid = pdn->phb->buid; in rtas_change_msi()
100 buid = pdn->phb->buid; in rtas_query_irq_number()
556 struct pci_controller *phb = domain->host_data; in pseries_irq_domain_alloc() local
570 phb->dn, virq, hwirq, nr_irqs); in pseries_irq_domain_alloc()
593 struct pci_controller *phb = irq_data_get_irq_chip_data(d); in pseries_irq_domain_free() local
595 pr_debug("%s bridge %pOF %d #%d\n", __func__, phb->dn, virq, nr_irqs); in pseries_irq_domain_free()
605 static int __pseries_msi_allocate_domains(struct pci_controller *phb, in __pseries_msi_allocate_domains() argument
610 phb->fwnode = irq_domain_alloc_named_id_fwnode("pSeries-MSI", in __pseries_msi_allocate_domains()
611 phb->global_number); in __pseries_msi_allocate_domains()
612 if (!phb->fwnode) in __pseries_msi_allocate_domains()
[all …]
/openbmc/linux/arch/powerpc/kernel/
H A Dof_platform.c35 struct pci_controller *phb; in of_pci_phb_probe() local
44 phb = pcibios_alloc_controller(dev->dev.of_node); in of_pci_phb_probe()
45 if (!phb) in of_pci_phb_probe()
49 phb->parent = &dev->dev; in of_pci_phb_probe()
52 if (ppc_md.pci_setup_phb(phb)) { in of_pci_phb_probe()
53 pcibios_free_controller(phb); in of_pci_phb_probe()
58 pci_process_bridge_OF_ranges(phb, dev->dev.of_node, 0); in of_pci_phb_probe()
61 pci_devs_phb_init_dynamic(phb); in of_pci_phb_probe()
64 eeh_phb_pe_create(phb); in of_pci_phb_probe()
67 pcibios_scan_phb(phb); in of_pci_phb_probe()
[all …]
H A Dmsi.c14 struct pci_controller *phb = pci_bus_to_host(dev->bus); in arch_setup_msi_irqs() local
16 if (!phb->controller_ops.setup_msi_irqs || in arch_setup_msi_irqs()
17 !phb->controller_ops.teardown_msi_irqs) { in arch_setup_msi_irqs()
26 return phb->controller_ops.setup_msi_irqs(dev, nvec, type); in arch_setup_msi_irqs()
31 struct pci_controller *phb = pci_bus_to_host(dev->bus); in arch_teardown_msi_irqs() local
37 if (phb->controller_ops.teardown_msi_irqs) in arch_teardown_msi_irqs()
38 phb->controller_ops.teardown_msi_irqs(dev); in arch_teardown_msi_irqs()
H A Dpci-hotplug.c43 if (!pdn || !pdn->phb || !pdn->phb->bus) in pci_find_bus_by_node()
46 return find_bus_among_children(pdn->phb->bus, dn); in pci_find_bus_by_node()
58 struct pci_controller *phb = pci_bus_to_host(dev->bus); in pcibios_release_device() local
61 if (phb->controller_ops.release_device) in pcibios_release_device()
62 phb->controller_ops.release_device(dev); in pcibios_release_device()
111 struct pci_controller *phb; in pci_hp_add_devices() local
114 phb = pci_bus_to_host(bus); in pci_hp_add_devices()
117 if (phb->controller_ops.probe_mode) in pci_hp_add_devices()
118 mode = phb->controller_ops.probe_mode(bus); in pci_hp_add_devices()
H A Drtas_pci.c63 buid = pdn->phb->buid; in rtas_read_config()
114 buid = pdn->phb->buid; in rtas_write_config()
200 unsigned long get_phb_buid(struct device_node *phb) in get_phb_buid() argument
206 if (of_address_to_resource(phb, 0, &r)) in get_phb_buid()
212 struct pci_controller *phb) in phb_set_bus_ranges() argument
222 phb->first_busno = be32_to_cpu(bus_range[0]); in phb_set_bus_ranges()
223 phb->last_busno = be32_to_cpu(bus_range[1]); in phb_set_bus_ranges()
228 int rtas_setup_phb(struct pci_controller *phb) in rtas_setup_phb() argument
230 struct device_node *dev = phb->dn; in rtas_setup_phb()
235 if (phb_set_bus_ranges(dev, phb)) in rtas_setup_phb()
[all …]
H A Dio-workarounds.c35 struct pci_controller *phb = bus->phb; in iowa_pci_find() local
38 vstart = (unsigned long)phb->io_base_virt; in iowa_pci_find()
39 vend = vstart + phb->pci_io_size - 1; in iowa_pci_find()
46 res = &phb->mem_resources[j]; in iowa_pci_find()
170 void iowa_register_bus(struct pci_controller *phb, struct ppc_pci_io *ops, in iowa_register_bus() argument
174 struct device_node *np = phb->dn; in iowa_register_bus()
185 bus->phb = phb; in iowa_register_bus()
H A Dpci-common.c126 struct pci_controller *phb; in pcibios_alloc_controller() local
128 phb = kzalloc(sizeof(struct pci_controller), GFP_KERNEL); in pcibios_alloc_controller()
129 if (phb == NULL) in pcibios_alloc_controller()
132 phb->global_number = get_phb_number(dev); in pcibios_alloc_controller()
135 list_add_tail(&phb->list_node, &hose_list); in pcibios_alloc_controller()
138 phb->dn = of_node_get(dev); in pcibios_alloc_controller()
139 phb->is_dynamic = slab_is_available(); in pcibios_alloc_controller()
147 PHB_SET_NODE(phb, nid); in pcibios_alloc_controller()
150 return phb; in pcibios_alloc_controller()
154 void pcibios_free_controller(struct pci_controller *phb) in pcibios_free_controller() argument
[all …]
/openbmc/linux/drivers/pci/hotplug/
H A Drpadlpar_core.c141 struct pci_controller *phb = pdn->phb; in dlpar_pci_add_bus() local
147 dev = of_create_pci_dev(dn, phb->bus, pdn->devfn); in dlpar_pci_add_bus()
166 pcibios_finish_adding_to_bus(phb->bus); in dlpar_pci_add_bus()
172 struct pci_controller *phb; in dlpar_add_pci_slot() local
181 phb = PCI_DN(dn)->phb; in dlpar_add_pci_slot()
182 dev = dlpar_find_new_dev(phb->bus, dn); in dlpar_add_pci_slot()
223 BUG_ON(!pdn || !pdn->phb); in dlpar_remove_phb()
224 rc = remove_phb_dynamic(pdn->phb); in dlpar_remove_phb()
228 pdn->phb = NULL; in dlpar_remove_phb()
235 struct pci_controller *phb; in dlpar_add_phb() local
[all …]
/openbmc/qemu/hw/ppc/
H A Dspapr_pci.c84 PCIHostState *phb = PCI_HOST_BRIDGE(sphb); in spapr_pci_find_dev() local
88 if (!phb) { in spapr_pci_find_dev()
92 return pci_find_device(phb->bus, bus_num, devfn); in spapr_pci_find_dev()
280 SpaprPhbState *phb = NULL; in rtas_ibm_change_msi() local
288 phb = spapr_pci_find_phb(spapr, buid); in rtas_ibm_change_msi()
289 if (phb) { in rtas_ibm_change_msi()
292 if (!phb || !pdev) { in rtas_ibm_change_msi()
330 msi = (SpaprPciMsi *) g_hash_table_lookup(phb->msi, &config_addr); in rtas_ibm_change_msi()
346 g_hash_table_remove(phb->msi, &config_addr); in rtas_ibm_change_msi()
409 g_hash_table_remove(phb->msi, &config_addr); in rtas_ibm_change_msi()
[all …]
/openbmc/linux/arch/powerpc/include/asm/
H A Dppc-pci.h31 extern void pci_devs_phb_init_dynamic(struct pci_controller *phb);
35 extern void ppc_iommu_register_device(struct pci_controller *phb);
36 extern void ppc_iommu_unregister_device(struct pci_controller *phb);
38 static inline void ppc_iommu_register_device(struct pci_controller *phb) { } in ppc_iommu_register_device() argument
39 static inline void ppc_iommu_unregister_device(struct pci_controller *phb) { } in ppc_iommu_unregister_device() argument
46 extern int rtas_setup_phb(struct pci_controller *phb);

1234