Lines Matching +full:saw +full:- +full:reg
1 // SPDX-License-Identifier: GPL-2.0
23 unsigned long reg) 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()
34 unsigned long reg) 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()
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
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()
130 if (!bus_dev->number && !PCI_SLOT(devfn)) in sun4u_read_pci_cfg()
146 printk("pci_read_config_word: misaligned reg [%x]\n", in sun4u_read_pci_cfg()
156 printk("pci_read_config_dword: misaligned reg [%x]\n", in sun4u_read_pci_cfg()
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()
220 if (!bus_dev->number && !PCI_SLOT(devfn)) in sun4u_write_pci_cfg()
235 printk("pci_write_config_word: misaligned reg [%x]\n", in sun4u_write_pci_cfg()
244 printk("pci_write_config_dword: misaligned reg [%x]\n", 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()
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()
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()
484 list_for_each_entry(pdev, &pbus->devices, bus_list) { in pci_scan_for_target_abort()
493 pci_info(pdev, "%s: Device saw Target Abort [%016x]\n", 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()
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()
531 list_for_each_entry(pdev, &pbus->devices, bus_list) { in pci_scan_for_parity_error()
540 pci_info(pdev, "%s: Device saw Parity Error [%016x]\n", 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()