Lines Matching refs:pbm

20 static int config_out_of_range(struct pci_pbm_info *pbm,  in config_out_of_range()  argument
25 if (bus < pbm->pci_first_busno || in config_out_of_range()
26 bus > pbm->pci_last_busno) in config_out_of_range()
31 static void *sun4u_config_mkaddr(struct pci_pbm_info *pbm, in sun4u_config_mkaddr() argument
36 unsigned long rbits = pbm->config_space_reg_bits; in sun4u_config_mkaddr()
38 if (config_out_of_range(pbm, bus, devfn, reg)) in sun4u_config_mkaddr()
45 return (void *) (pbm->config_space | bus | devfn | reg); in sun4u_config_mkaddr()
53 static int sun4u_read_pci_cfg_host(struct pci_pbm_info *pbm, in sun4u_read_pci_cfg_host() argument
61 addr = sun4u_config_mkaddr(pbm, bus, devfn, where); in sun4u_read_pci_cfg_host()
96 sun4u_read_pci_cfg_host(pbm, bus, devfn, in sun4u_read_pci_cfg_host()
101 sun4u_read_pci_cfg_host(pbm, bus, devfn, in sun4u_read_pci_cfg_host()
112 struct pci_pbm_info *pbm = bus_dev->sysdata; in sun4u_read_pci_cfg() local
131 return sun4u_read_pci_cfg_host(pbm, bus, devfn, where, in sun4u_read_pci_cfg()
134 addr = sun4u_config_mkaddr(pbm, bus, devfn, where); in sun4u_read_pci_cfg()
166 static int sun4u_write_pci_cfg_host(struct pci_pbm_info *pbm, in sun4u_write_pci_cfg_host() argument
172 addr = sun4u_config_mkaddr(pbm, bus, devfn, where); in sun4u_write_pci_cfg_host()
204 sun4u_write_pci_cfg_host(pbm, bus, devfn, in sun4u_write_pci_cfg_host()
206 sun4u_write_pci_cfg_host(pbm, bus, devfn, in sun4u_write_pci_cfg_host()
216 struct pci_pbm_info *pbm = bus_dev->sysdata; in sun4u_write_pci_cfg() local
221 return sun4u_write_pci_cfg_host(pbm, bus, devfn, where, in sun4u_write_pci_cfg()
224 addr = sun4u_config_mkaddr(pbm, bus, devfn, where); in sun4u_write_pci_cfg()
261 struct pci_pbm_info *pbm = bus_dev->sysdata; in sun4v_read_pci_cfg() local
262 u32 devhandle = pbm->devhandle; in sun4v_read_pci_cfg()
268 if (config_out_of_range(pbm, bus, devfn, where)) { in sun4v_read_pci_cfg()
294 struct pci_pbm_info *pbm = bus_dev->sysdata; in sun4v_write_pci_cfg() local
295 u32 devhandle = pbm->devhandle; in sun4v_write_pci_cfg()
300 if (config_out_of_range(pbm, bus, devfn, where)) { in sun4v_write_pci_cfg()
319 void pci_get_pbm_props(struct pci_pbm_info *pbm) in pci_get_pbm_props() argument
321 const u32 *val = of_get_property(pbm->op->dev.of_node, "bus-range", NULL); in pci_get_pbm_props()
323 pbm->pci_first_busno = val[0]; in pci_get_pbm_props()
324 pbm->pci_last_busno = val[1]; in pci_get_pbm_props()
326 val = of_get_property(pbm->op->dev.of_node, "ino-bitmap", NULL); in pci_get_pbm_props()
328 pbm->ino_bitmap = (((u64)val[1] << 32UL) | in pci_get_pbm_props()
333 static void pci_register_iommu_region(struct pci_pbm_info *pbm) in pci_register_iommu_region() argument
335 const u32 *vdma = of_get_property(pbm->op->dev.of_node, "virtual-dma", in pci_register_iommu_region()
343 pbm->name); in pci_register_iommu_region()
347 rp->start = pbm->mem_space.start + (unsigned long) vdma[0]; in pci_register_iommu_region()
350 if (request_resource(&pbm->mem_space, rp)) { in pci_register_iommu_region()
352 pbm->name); in pci_register_iommu_region()
358 void pci_determine_mem_io_space(struct pci_pbm_info *pbm) in pci_determine_mem_io_space() argument
367 pbm_ranges = of_get_property(pbm->op->dev.of_node, "ranges", &i); in pci_determine_mem_io_space()
371 pbm->name); in pci_determine_mem_io_space()
376 memset(&pbm->mem64_space, 0, sizeof(struct resource)); in pci_determine_mem_io_space()
407 pbm->config_space = a; in pci_determine_mem_io_space()
412 pbm->io_space.start = a; in pci_determine_mem_io_space()
413 pbm->io_space.end = a + size - 1UL; in pci_determine_mem_io_space()
414 pbm->io_space.flags = IORESOURCE_IO; in pci_determine_mem_io_space()
415 pbm->io_offset = a - region_a; in pci_determine_mem_io_space()
421 pbm->mem_space.start = a; in pci_determine_mem_io_space()
422 pbm->mem_space.end = a + size - 1UL; in pci_determine_mem_io_space()
423 pbm->mem_space.flags = IORESOURCE_MEM; in pci_determine_mem_io_space()
424 pbm->mem_offset = a - region_a; in pci_determine_mem_io_space()
430 pbm->mem64_space.start = a; in pci_determine_mem_io_space()
431 pbm->mem64_space.end = a + size - 1UL; in pci_determine_mem_io_space()
432 pbm->mem64_space.flags = IORESOURCE_MEM; in pci_determine_mem_io_space()
433 pbm->mem64_offset = a - region_a; in pci_determine_mem_io_space()
444 pbm->name, in pci_determine_mem_io_space()
449 if (pbm->io_space.flags) in pci_determine_mem_io_space()
451 pbm->name, &pbm->io_space, pbm->io_offset); in pci_determine_mem_io_space()
452 if (pbm->mem_space.flags) in pci_determine_mem_io_space()
454 pbm->name, &pbm->mem_space, pbm->mem_offset); in pci_determine_mem_io_space()
455 if (pbm->mem64_space.flags && pbm->mem_space.flags) { in pci_determine_mem_io_space()
456 if (pbm->mem64_space.start <= pbm->mem_space.end) in pci_determine_mem_io_space()
457 pbm->mem64_space.start = pbm->mem_space.end + 1; in pci_determine_mem_io_space()
458 if (pbm->mem64_space.start > pbm->mem64_space.end) in pci_determine_mem_io_space()
459 pbm->mem64_space.flags = 0; in pci_determine_mem_io_space()
462 if (pbm->mem64_space.flags) in pci_determine_mem_io_space()
464 pbm->name, &pbm->mem64_space, pbm->mem64_offset); in pci_determine_mem_io_space()
466 pbm->io_space.name = pbm->mem_space.name = pbm->name; in pci_determine_mem_io_space()
467 pbm->mem64_space.name = pbm->name; in pci_determine_mem_io_space()
469 request_resource(&ioport_resource, &pbm->io_space); in pci_determine_mem_io_space()
470 request_resource(&iomem_resource, &pbm->mem_space); in pci_determine_mem_io_space()
471 if (pbm->mem64_space.flags) in pci_determine_mem_io_space()
472 request_resource(&iomem_resource, &pbm->mem64_space); in pci_determine_mem_io_space()
474 pci_register_iommu_region(pbm); in pci_determine_mem_io_space()
478 void pci_scan_for_target_abort(struct pci_pbm_info *pbm, in pci_scan_for_target_abort() argument
494 pbm->name, status); in pci_scan_for_target_abort()
499 pci_scan_for_target_abort(pbm, bus); in pci_scan_for_target_abort()
502 void pci_scan_for_master_abort(struct pci_pbm_info *pbm, in pci_scan_for_master_abort() argument
517 "[%016x]\n", pbm->name, status); in pci_scan_for_master_abort()
522 pci_scan_for_master_abort(pbm, bus); in pci_scan_for_master_abort()
525 void pci_scan_for_parity_error(struct pci_pbm_info *pbm, in pci_scan_for_parity_error() argument
541 pbm->name, status); in pci_scan_for_parity_error()
546 pci_scan_for_parity_error(pbm, bus); in pci_scan_for_parity_error()