Lines Matching refs:afu
30 #define CXL_AFU_MINOR_D(afu) (CXL_CARD_MINOR(afu->adapter) + 1 + (3 * afu->slice)) argument
31 #define CXL_AFU_MINOR_M(afu) (CXL_AFU_MINOR_D(afu) + 1) argument
32 #define CXL_AFU_MINOR_S(afu) (CXL_AFU_MINOR_D(afu) + 2) argument
33 #define CXL_AFU_MKDEV_D(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_D(afu)) argument
34 #define CXL_AFU_MKDEV_M(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_M(afu)) argument
35 #define CXL_AFU_MKDEV_S(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_S(afu)) argument
48 struct cxl_afu *afu; in __afu_open() local
63 if (!(afu = adapter->afu[slice])) { in __afu_open()
73 cxl_afu_get(afu); in __afu_open()
76 if (!afu->current_mode) in __afu_open()
79 if (!cxl_ops->link_ok(adapter, afu)) { in __afu_open()
89 if ((rc = cxl_context_init(ctx, afu, master, inode->i_mapping))) in __afu_open()
100 cxl_afu_put(afu); in __afu_open()
178 work.num_interrupts = ctx->afu->pp_irqs; in afu_ioctl_start_work()
179 else if ((work.num_interrupts < ctx->afu->pp_irqs) || in afu_ioctl_start_work()
180 (work.num_interrupts > ctx->afu->irqs_max)) { in afu_ioctl_start_work()
196 rc = cxl_adapter_context_get(ctx->afu->adapter); in afu_ioctl_start_work()
226 cxl_adapter_context_put(ctx->afu->adapter); in afu_ioctl_start_work()
257 afuid.card_id = ctx->afu->adapter->adapter_num; in afu_ioctl_get_afu_id()
258 afuid.afu_offset = ctx->afu->slice; in afu_ioctl_get_afu_id()
259 afuid.afu_mode = ctx->afu->current_mode; in afu_ioctl_get_afu_id()
262 if (ctx->afu->current_mode == CXL_MODE_DIRECTED && !ctx->master) in afu_ioctl_get_afu_id()
278 if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) in afu_ioctl()
308 if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) in afu_mmap()
395 if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) in afu_read()
408 if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) { in afu_read()
525 static int cxl_add_chardev(struct cxl_afu *afu, dev_t devt, struct cdev *cdev, in cxl_add_chardev() argument
534 dev_err(&afu->dev, "Unable to add %s chardev: %i\n", desc, rc); in cxl_add_chardev()
538 dev = device_create(cxl_class, &afu->dev, devt, afu, in cxl_add_chardev()
539 "afu%i.%i%s", afu->adapter->adapter_num, afu->slice, postfix); in cxl_add_chardev()
541 dev_err(&afu->dev, "Unable to create %s chardev in sysfs: %i\n", desc, rc); in cxl_add_chardev()
554 int cxl_chardev_d_afu_add(struct cxl_afu *afu) in cxl_chardev_d_afu_add() argument
556 return cxl_add_chardev(afu, CXL_AFU_MKDEV_D(afu), &afu->afu_cdev_d, in cxl_chardev_d_afu_add()
557 &afu->chardev_d, "d", "dedicated", in cxl_chardev_d_afu_add()
561 int cxl_chardev_m_afu_add(struct cxl_afu *afu) in cxl_chardev_m_afu_add() argument
563 return cxl_add_chardev(afu, CXL_AFU_MKDEV_M(afu), &afu->afu_cdev_m, in cxl_chardev_m_afu_add()
564 &afu->chardev_m, "m", "master", in cxl_chardev_m_afu_add()
568 int cxl_chardev_s_afu_add(struct cxl_afu *afu) in cxl_chardev_s_afu_add() argument
570 return cxl_add_chardev(afu, CXL_AFU_MKDEV_S(afu), &afu->afu_cdev_s, in cxl_chardev_s_afu_add()
571 &afu->chardev_s, "s", "shared", in cxl_chardev_s_afu_add()
575 void cxl_chardev_afu_remove(struct cxl_afu *afu) in cxl_chardev_afu_remove() argument
577 if (afu->chardev_d) { in cxl_chardev_afu_remove()
578 cdev_del(&afu->afu_cdev_d); in cxl_chardev_afu_remove()
579 device_unregister(afu->chardev_d); in cxl_chardev_afu_remove()
580 afu->chardev_d = NULL; in cxl_chardev_afu_remove()
582 if (afu->chardev_m) { in cxl_chardev_afu_remove()
583 cdev_del(&afu->afu_cdev_m); in cxl_chardev_afu_remove()
584 device_unregister(afu->chardev_m); in cxl_chardev_afu_remove()
585 afu->chardev_m = NULL; in cxl_chardev_afu_remove()
587 if (afu->chardev_s) { in cxl_chardev_afu_remove()
588 cdev_del(&afu->afu_cdev_s); in cxl_chardev_afu_remove()
589 device_unregister(afu->chardev_s); in cxl_chardev_afu_remove()
590 afu->chardev_s = NULL; in cxl_chardev_afu_remove()
594 int cxl_register_afu(struct cxl_afu *afu) in cxl_register_afu() argument
596 afu->dev.class = cxl_class; in cxl_register_afu()
598 return device_register(&afu->dev); in cxl_register_afu()