Lines Matching refs:afu

423 			struct ocxl_afu_config *afu)
433 ptr = (u32 *) &afu->name[i];
436 afu->name[OCXL_AFU_NAME_SZ - 1] = '\0'; /* play safe */
441 struct ocxl_afu_config *afu)
452 afu->global_mmio_bar = EXTRACT_BITS(val, 0, 2);
453 afu->global_mmio_offset = EXTRACT_BITS(val, 16, 31) << 16;
458 afu->global_mmio_offset += (u64) val << 32;
463 afu->global_mmio_size = val;
471 afu->pp_mmio_bar = EXTRACT_BITS(val, 0, 2);
472 afu->pp_mmio_offset = EXTRACT_BITS(val, 16, 31) << 16;
477 afu->pp_mmio_offset += (u64) val << 32;
482 afu->pp_mmio_stride = val;
487 static int read_afu_control(struct pci_dev *dev, struct ocxl_afu_config *afu)
493 pos = find_dvsec_afu_ctrl(dev, afu->idx);
496 afu->idx);
499 afu->dvsec_afu_control_pos = pos;
502 afu->pasid_supported_log = EXTRACT_BITS(val8, 0, 4);
505 afu->actag_supported = EXTRACT_BITS(val16, 0, 11);
525 static int validate_afu(struct pci_dev *dev, struct ocxl_afu_config *afu)
529 if (!afu->name[0]) {
534 if (!char_allowed(afu->name[i])) {
541 if (afu->global_mmio_bar != 0 &&
542 afu->global_mmio_bar != 2 &&
543 afu->global_mmio_bar != 4) {
547 if (afu->pp_mmio_bar != 0 &&
548 afu->pp_mmio_bar != 2 &&
549 afu->pp_mmio_bar != 4) {
560 * @afu: the AFU struct to populate the LPC metadata into
566 struct ocxl_afu_config *afu)
575 afu->lpc_mem_offset = 0;
576 afu->lpc_mem_size = 0;
577 afu->special_purpose_mem_offset = 0;
578 afu->special_purpose_mem_size = 0;
614 afu->lpc_mem_offset = val32;
620 afu->lpc_mem_offset |= (u64) val32 << 32;
641 afu->lpc_mem_size = lpc_mem_size;
644 afu->special_purpose_mem_offset =
645 afu->lpc_mem_offset + lpc_mem_size;
646 afu->special_purpose_mem_size =
653 struct ocxl_afu_config *afu, u8 afu_idx)
663 afu->idx = afu_idx;
666 afu->idx);
668 rc = read_afu_name(dev, fn, afu);
675 afu->version_major = EXTRACT_BITS(val32, 24, 31);
676 afu->version_minor = EXTRACT_BITS(val32, 16, 23);
677 afu->afuc_type = EXTRACT_BITS(val32, 14, 15);
678 afu->afum_type = EXTRACT_BITS(val32, 12, 13);
679 afu->profile = EXTRACT_BITS(val32, 0, 7);
681 rc = read_afu_mmio(dev, fn, afu);
685 rc = read_afu_lpc_memory_info(dev, fn, afu);
689 rc = read_afu_control(dev, afu);
694 dev_dbg(&dev->dev, " name = %s\n", afu->name);
695 dev_dbg(&dev->dev, " version = %d.%d\n", afu->version_major,
696 afu->version_minor);
697 dev_dbg(&dev->dev, " global mmio bar = %hhu\n", afu->global_mmio_bar);
699 afu->global_mmio_offset);
700 dev_dbg(&dev->dev, " global mmio size = %#x\n", afu->global_mmio_size);
701 dev_dbg(&dev->dev, " pp mmio bar = %hhu\n", afu->pp_mmio_bar);
702 dev_dbg(&dev->dev, " pp mmio offset = %#llx\n", afu->pp_mmio_offset);
703 dev_dbg(&dev->dev, " pp mmio stride = %#x\n", afu->pp_mmio_stride);
704 dev_dbg(&dev->dev, " lpc_mem offset = %#llx\n", afu->lpc_mem_offset);
705 dev_dbg(&dev->dev, " lpc_mem size = %#llx\n", afu->lpc_mem_size);
707 afu->special_purpose_mem_offset);
709 afu->special_purpose_mem_size);
711 afu->pasid_supported_log);
713 afu->actag_supported);
715 rc = validate_afu(dev, afu);