Lines Matching +full:bus +full:- +full:addr

1 // SPDX-License-Identifier: GPL-2.0
21 unsigned long bus, 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()
32 unsigned long bus, 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()
41 reg = (reg & ((1 << rbits) - 1)); in sun4u_config_mkaddr()
43 bus <<= rbits + 8; in sun4u_config_mkaddr()
45 return (void *) (pbm->config_space | bus | devfn | reg); in sun4u_config_mkaddr()
50 * Strange but true, and I see no language in the UltraSPARC-IIi
54 unsigned char bus, unsigned int devfn, in sun4u_read_pci_cfg_host() argument
57 u32 tmp32, *addr; in sun4u_read_pci_cfg_host() local
61 addr = sun4u_config_mkaddr(pbm, bus, devfn, where); in sun4u_read_pci_cfg_host()
62 if (!addr) in sun4u_read_pci_cfg_host()
68 unsigned long align = (unsigned long) addr; in sun4u_read_pci_cfg_host()
77 pci_config_read8((u8 *)addr, &tmp8); in sun4u_read_pci_cfg_host()
84 pci_config_read16((u16 *)addr, &tmp16); in sun4u_read_pci_cfg_host()
87 pci_config_read8((u8 *)addr, &tmp8); in sun4u_read_pci_cfg_host()
89 pci_config_read8(((u8 *)addr) + 1, &tmp8); 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()
113 unsigned char bus = bus_dev->number; in sun4u_read_pci_cfg() local
114 u32 *addr; in sun4u_read_pci_cfg() local
130 if (!bus_dev->number && !PCI_SLOT(devfn)) in sun4u_read_pci_cfg()
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()
135 if (!addr) in sun4u_read_pci_cfg()
140 pci_config_read8((u8 *)addr, &tmp8); in sun4u_read_pci_cfg()
150 pci_config_read16((u16 *)addr, &tmp16); in sun4u_read_pci_cfg()
160 pci_config_read32(addr, value); in sun4u_read_pci_cfg()
167 unsigned char bus, unsigned int devfn, in sun4u_write_pci_cfg_host() argument
170 u32 *addr; in sun4u_write_pci_cfg_host() local
172 addr = sun4u_config_mkaddr(pbm, bus, devfn, where); in sun4u_write_pci_cfg_host()
173 if (!addr) in sun4u_write_pci_cfg_host()
179 unsigned long align = (unsigned long) addr; in sun4u_write_pci_cfg_host()
193 pci_config_write8((u8 *)addr, value); in sun4u_write_pci_cfg_host()
197 pci_config_write16((u16 *)addr, value); in sun4u_write_pci_cfg_host()
199 pci_config_write8((u8 *)addr, value & 0xff); in sun4u_write_pci_cfg_host()
200 pci_config_write8(((u8 *)addr) + 1, value >> 8); 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()
217 unsigned char bus = bus_dev->number; in sun4u_write_pci_cfg() local
218 u32 *addr; in sun4u_write_pci_cfg() local
220 if (!bus_dev->number && !PCI_SLOT(devfn)) in sun4u_write_pci_cfg()
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()
225 if (!addr) in sun4u_write_pci_cfg()
230 pci_config_write8((u8 *)addr, value); in sun4u_write_pci_cfg()
239 pci_config_write16((u16 *)addr, value); in sun4u_write_pci_cfg()
248 pci_config_write32(addr, value); in sun4u_write_pci_cfg()
261 struct pci_pbm_info *pbm = bus_dev->sysdata; in sun4v_read_pci_cfg()
262 u32 devhandle = pbm->devhandle; in sun4v_read_pci_cfg()
263 unsigned int bus = bus_dev->number; in sun4v_read_pci_cfg() local
268 if (config_out_of_range(pbm, bus, devfn, where)) { in sun4v_read_pci_cfg()
272 HV_PCI_DEVICE_BUILD(bus, device, func), in sun4v_read_pci_cfg()
294 struct pci_pbm_info *pbm = bus_dev->sysdata; in sun4v_write_pci_cfg()
295 u32 devhandle = pbm->devhandle; in sun4v_write_pci_cfg()
296 unsigned int bus = bus_dev->number; in sun4v_write_pci_cfg() local
300 if (config_out_of_range(pbm, bus, devfn, where)) { in sun4v_write_pci_cfg()
308 HV_PCI_DEVICE_BUILD(bus, device, func), in sun4v_write_pci_cfg()
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()
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()
346 rp->name = "IOMMU"; in pci_register_iommu_region()
347 rp->start = pbm->mem_space.start + (unsigned long) vdma[0]; in pci_register_iommu_region()
348 rp->end = rp->start + (unsigned long) vdma[1] - 1UL; in pci_register_iommu_region()
349 rp->flags = IORESOURCE_BUSY; 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()
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()
386 parent_phys_hi = pr->parent_phys_hi; in pci_determine_mem_io_space()
387 parent_phys_lo = pr->parent_phys_lo; in pci_determine_mem_io_space()
388 child_phys_mid = pr->child_phys_mid; in pci_determine_mem_io_space()
389 child_phys_lo = pr->child_phys_lo; in pci_determine_mem_io_space()
393 size_hi = pr->size_hi; in pci_determine_mem_io_space()
394 size_lo = pr->size_lo; in pci_determine_mem_io_space()
396 type = (pr->child_phys_hi >> 24) & 0x3; in pci_determine_mem_io_space()
407 pbm->config_space = a; in pci_determine_mem_io_space()
411 /* 16-bit IO space, 16MB */ 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()
420 /* 32-bit MEM space, 2GB */ 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()
429 /* 64-bit MEM handling */ 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()
482 struct pci_bus *bus; in pci_scan_for_target_abort() local
484 list_for_each_entry(pdev, &pbus->devices, bus_list) { in pci_scan_for_target_abort()
494 pbm->name, status); in pci_scan_for_target_abort()
498 list_for_each_entry(bus, &pbus->children, node) in pci_scan_for_target_abort()
499 pci_scan_for_target_abort(pbm, bus); in pci_scan_for_target_abort()
506 struct pci_bus *bus; in pci_scan_for_master_abort() local
508 list_for_each_entry(pdev, &pbus->devices, bus_list) { in pci_scan_for_master_abort()
517 "[%016x]\n", pbm->name, status); in pci_scan_for_master_abort()
521 list_for_each_entry(bus, &pbus->children, node) in pci_scan_for_master_abort()
522 pci_scan_for_master_abort(pbm, bus); in pci_scan_for_master_abort()
529 struct pci_bus *bus; in pci_scan_for_parity_error() local
531 list_for_each_entry(pdev, &pbus->devices, bus_list) { in pci_scan_for_parity_error()
541 pbm->name, status); in pci_scan_for_parity_error()
545 list_for_each_entry(bus, &pbus->children, node) in pci_scan_for_parity_error()
546 pci_scan_for_parity_error(pbm, bus); in pci_scan_for_parity_error()