Lines Matching +full:class +full:- +full:d
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * VAS user space API for its accelerators (Only NX-GZIP is supported now)
14 #include <uapi/asm/vas-api.h>
19 * For NX-GZIP
21 * fd = open("/dev/crypto/nx-gzip", O_RDWR);
28 * where "vas_copy" and "vas_paste" are defined in copy-paste.h.
35 * Wrapper object for the nx-gzip device - there is just one instance of
43 struct class *class; member
63 return -ENOMEM; in coproc_open()
65 cp_inst->coproc = container_of(inode->i_cdev, struct coproc_dev, in coproc_open()
67 fp->private_data = cp_inst; in coproc_open()
81 cp_inst = fp->private_data; in coproc_ioc_tx_win_open()
86 if (cp_inst->txwin) in coproc_ioc_tx_win_open()
87 return -EEXIST; in coproc_ioc_tx_win_open()
91 pr_err("%s(): copy_from_user() returns %d\n", __func__, rc); in coproc_ioc_tx_win_open()
92 return -EFAULT; in coproc_ioc_tx_win_open()
97 return -EINVAL; in coproc_ioc_tx_win_open()
102 vas_init_tx_win_attr(&txattr, cp_inst->coproc->cop_type); in coproc_ioc_tx_win_open()
110 pr_devel("Pid %d: Opening txwin, PIDR %ld\n", txattr.pidr, in coproc_ioc_tx_win_open()
113 txwin = vas_tx_win_open(vasid, cp_inst->coproc->cop_type, &txattr); in coproc_ioc_tx_win_open()
120 cp_inst->txwin = txwin; in coproc_ioc_tx_win_open()
127 struct coproc_instance *cp_inst = fp->private_data; in coproc_release()
129 if (cp_inst->txwin) { in coproc_release()
130 vas_win_close(cp_inst->txwin); in coproc_release()
131 cp_inst->txwin = NULL; in coproc_release()
135 fp->private_data = NULL; in coproc_release()
150 struct coproc_instance *cp_inst = fp->private_data; in coproc_mmap()
157 txwin = cp_inst->txwin; in coproc_mmap()
159 if ((vma->vm_end - vma->vm_start) > PAGE_SIZE) { in coproc_mmap()
161 (vma->vm_end - vma->vm_start), PAGE_SIZE); in coproc_mmap()
162 return -EINVAL; in coproc_mmap()
168 return -EINVAL; in coproc_mmap()
175 vma->vm_flags |= VM_IO | VM_PFNMAP; in coproc_mmap()
176 vma->vm_page_prot = pgprot_cached(vma->vm_page_prot); in coproc_mmap()
178 prot = __pgprot(pgprot_val(vma->vm_page_prot) | _PAGE_DIRTY); in coproc_mmap()
180 rc = remap_pfn_range(vma, vma->vm_start, pfn + vma->vm_pgoff, in coproc_mmap()
181 vma->vm_end - vma->vm_start, prot); in coproc_mmap()
183 pr_devel("%s(): paste addr %llx at %lx, rc %d\n", __func__, in coproc_mmap()
184 paste_addr, vma->vm_start, rc); in coproc_mmap()
195 return -EINVAL; in coproc_ioctl()
207 * Supporting only nx-gzip coprocessor type now, but this API code
213 int rc = -EINVAL; in vas_register_coproc_api()
225 coproc_device.class = class_create(mod, name); in vas_register_coproc_api()
226 if (IS_ERR(coproc_device.class)) { in vas_register_coproc_api()
227 rc = PTR_ERR(coproc_device.class); in vas_register_coproc_api()
228 pr_err("Unable to create %s class %d\n", name, rc); in vas_register_coproc_api()
231 coproc_device.class->devnode = coproc_devnode; in vas_register_coproc_api()
240 pr_err("cdev_add() failed %d\n", rc); in vas_register_coproc_api()
244 coproc_device.device = device_create(coproc_device.class, NULL, in vas_register_coproc_api()
248 pr_err("Unable to create coproc-%d %d\n", MINOR(devno), rc); in vas_register_coproc_api()
252 pr_devel("%s: Added dev [%d,%d]\n", __func__, MAJOR(devno), in vas_register_coproc_api()
260 class_destroy(coproc_device.class); in vas_register_coproc_api()
273 device_destroy(coproc_device.class, devno); in vas_unregister_coproc_api()
275 class_destroy(coproc_device.class); in vas_unregister_coproc_api()