Lines Matching refs:cd
40 static int genwqe_open_files(struct genwqe_dev *cd) in genwqe_open_files() argument
45 spin_lock_irqsave(&cd->file_lock, flags); in genwqe_open_files()
46 rc = list_empty(&cd->file_list); in genwqe_open_files()
47 spin_unlock_irqrestore(&cd->file_lock, flags); in genwqe_open_files()
51 static void genwqe_add_file(struct genwqe_dev *cd, struct genwqe_file *cfile) in genwqe_add_file() argument
56 spin_lock_irqsave(&cd->file_lock, flags); in genwqe_add_file()
57 list_add(&cfile->list, &cd->file_list); in genwqe_add_file()
58 spin_unlock_irqrestore(&cd->file_lock, flags); in genwqe_add_file()
61 static int genwqe_del_file(struct genwqe_dev *cd, struct genwqe_file *cfile) in genwqe_del_file() argument
65 spin_lock_irqsave(&cd->file_lock, flags); in genwqe_del_file()
67 spin_unlock_irqrestore(&cd->file_lock, flags); in genwqe_del_file()
164 struct pci_dev *pci_dev = cfile->cd->pci_dev; in __genwqe_search_mapping()
200 struct genwqe_dev *cd = cfile->cd; in genwqe_remove_mappings() local
201 struct pci_dev *pci_dev = cfile->cd->pci_dev; in genwqe_remove_mappings()
223 __genwqe_free_consistent(cd, dma_map->size, in genwqe_remove_mappings()
229 genwqe_user_vunmap(cd, dma_map); in genwqe_remove_mappings()
238 struct genwqe_dev *cd = cfile->cd; in genwqe_remove_pinnings() local
252 genwqe_user_vunmap(cd, dma_map); in genwqe_remove_pinnings()
262 static int genwqe_kill_fasync(struct genwqe_dev *cd, int sig) in genwqe_kill_fasync() argument
268 spin_lock_irqsave(&cd->file_lock, flags); in genwqe_kill_fasync()
269 list_for_each_entry(cfile, &cd->file_list, list) { in genwqe_kill_fasync()
274 spin_unlock_irqrestore(&cd->file_lock, flags); in genwqe_kill_fasync()
278 static int genwqe_force_sig(struct genwqe_dev *cd, int sig) in genwqe_force_sig() argument
284 spin_lock_irqsave(&cd->file_lock, flags); in genwqe_force_sig()
285 list_for_each_entry(cfile, &cd->file_list, list) { in genwqe_force_sig()
289 spin_unlock_irqrestore(&cd->file_lock, flags); in genwqe_force_sig()
305 struct genwqe_dev *cd; in genwqe_open() local
312 cd = container_of(inode->i_cdev, struct genwqe_dev, cdev_genwqe); in genwqe_open()
313 cfile->cd = cd; in genwqe_open()
325 genwqe_add_file(cd, cfile); in genwqe_open()
364 struct genwqe_dev *cd = cfile->cd; in genwqe_release() local
378 genwqe_del_file(cd, cfile); in genwqe_release()
398 struct genwqe_dev *cd = container_of(inode->i_cdev, struct genwqe_dev, in genwqe_vma_close() local
400 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_vma_close()
414 __genwqe_free_consistent(cd, dma_map->size, dma_map->k_vaddr, in genwqe_vma_close()
441 struct genwqe_dev *cd = cfile->cd; in genwqe_mmap() local
458 dma_map->k_vaddr = __genwqe_alloc_consistent(cd, vsize, in genwqe_mmap()
486 __genwqe_free_consistent(cd, dma_map->size, in genwqe_mmap()
516 struct genwqe_dev *cd = cfile->cd; in do_flash_update() local
518 struct pci_dev *pci_dev = cd->pci_dev; in do_flash_update()
542 xbuf = __genwqe_alloc_consistent(cd, FLASH_BLOCK, &dma_addr); in do_flash_update()
579 if (genwqe_get_slu_id(cd) <= 0x2) { in do_flash_update()
612 rc = __genwqe_execute_raw_ddcb(cd, req, filp->f_flags); in do_flash_update()
637 __genwqe_free_consistent(cd, FLASH_BLOCK, xbuf, dma_addr); in do_flash_update()
651 struct genwqe_dev *cd = cfile->cd; in do_flash_read() local
653 struct pci_dev *pci_dev = cd->pci_dev; in do_flash_read()
678 xbuf = __genwqe_alloc_consistent(cd, FLASH_BLOCK, &dma_addr); in do_flash_read()
705 if (genwqe_get_slu_id(cd) <= 0x2) { in do_flash_read()
730 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags); in do_flash_read()
767 __genwqe_free_consistent(cd, FLASH_BLOCK, xbuf, dma_addr); in do_flash_read()
774 struct genwqe_dev *cd = cfile->cd; in genwqe_pin_mem() local
775 struct pci_dev *pci_dev = cfile->cd->pci_dev; in genwqe_pin_mem()
791 rc = genwqe_user_vmap(cd, dma_map, (void *)map_addr, map_size); in genwqe_pin_mem()
805 struct genwqe_dev *cd = cfile->cd; in genwqe_unpin_mem() local
821 genwqe_user_vunmap(cd, dma_map); in genwqe_unpin_mem()
835 struct genwqe_dev *cd = cfile->cd; in ddcb_cmd_cleanup() local
842 genwqe_user_vunmap(cd, dma_map); in ddcb_cmd_cleanup()
845 genwqe_free_sync_sgl(cd, &req->sgls[i]); in ddcb_cmd_cleanup()
862 struct genwqe_dev *cd = cfile->cd; in ddcb_cmd_fixups() local
944 rc = genwqe_user_vmap(cd, m, (void *)u_addr, in ddcb_cmd_fixups()
954 rc = genwqe_alloc_sync_sgl(cd, &req->sgls[i], in ddcb_cmd_fixups()
960 genwqe_setup_sgl(cd, &req->sgls[i], in ddcb_cmd_fixups()
991 struct genwqe_dev *cd = cfile->cd; in genwqe_execute_ddcb() local
999 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags); in genwqe_execute_ddcb()
1009 struct genwqe_dev *cd = cfile->cd; in do_execute_ddcb() local
1024 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags); in do_execute_ddcb()
1051 struct genwqe_dev *cd = cfile->cd; in genwqe_ioctl() local
1052 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_ioctl()
1067 put_user(cd->card_state, (enum genwqe_card_state __user *)arg); in genwqe_ioctl()
1077 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x7)) in genwqe_ioctl()
1080 val = __genwqe_readq(cd, reg_offs); in genwqe_ioctl()
1097 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x7)) in genwqe_ioctl()
1103 __genwqe_writeq(cd, reg_offs, val); in genwqe_ioctl()
1113 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x3)) in genwqe_ioctl()
1116 val = __genwqe_readl(cd, reg_offs); in genwqe_ioctl()
1133 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x3)) in genwqe_ioctl()
1139 __genwqe_writel(cd, reg_offs, val); in genwqe_ioctl()
1147 if (!genwqe_is_privileged(cd)) in genwqe_ioctl()
1168 if (!genwqe_is_privileged(cd)) in genwqe_ioctl()
1171 if (genwqe_flash_readback_fails(cd)) in genwqe_ioctl()
1254 static int genwqe_device_initialized(struct genwqe_dev *cd) in genwqe_device_initialized() argument
1256 return cd->dev != NULL; in genwqe_device_initialized()
1267 int genwqe_device_create(struct genwqe_dev *cd) in genwqe_device_create() argument
1270 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_device_create()
1278 rc = alloc_chrdev_region(&cd->devnum_genwqe, 0, in genwqe_device_create()
1285 cdev_init(&cd->cdev_genwqe, &genwqe_fops); in genwqe_device_create()
1286 cd->cdev_genwqe.owner = THIS_MODULE; in genwqe_device_create()
1288 rc = cdev_add(&cd->cdev_genwqe, cd->devnum_genwqe, 1); in genwqe_device_create()
1298 cd->dev = device_create_with_groups(cd->class_genwqe, in genwqe_device_create()
1299 &cd->pci_dev->dev, in genwqe_device_create()
1300 cd->devnum_genwqe, cd, in genwqe_device_create()
1303 cd->card_idx); in genwqe_device_create()
1304 if (IS_ERR(cd->dev)) { in genwqe_device_create()
1305 rc = PTR_ERR(cd->dev); in genwqe_device_create()
1309 rc = genwqe_init_debugfs(cd); in genwqe_device_create()
1316 device_destroy(cd->class_genwqe, cd->devnum_genwqe); in genwqe_device_create()
1318 cdev_del(&cd->cdev_genwqe); in genwqe_device_create()
1320 unregister_chrdev_region(cd->devnum_genwqe, GENWQE_MAX_MINOR); in genwqe_device_create()
1322 cd->dev = NULL; in genwqe_device_create()
1326 static int genwqe_inform_and_stop_processes(struct genwqe_dev *cd) in genwqe_inform_and_stop_processes() argument
1330 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_inform_and_stop_processes()
1332 if (!genwqe_open_files(cd)) in genwqe_inform_and_stop_processes()
1337 rc = genwqe_kill_fasync(cd, SIGIO); in genwqe_inform_and_stop_processes()
1341 genwqe_open_files(cd); i++) { in genwqe_inform_and_stop_processes()
1349 if (!genwqe_open_files(cd)) in genwqe_inform_and_stop_processes()
1355 rc = genwqe_force_sig(cd, SIGKILL); /* force terminate */ in genwqe_inform_and_stop_processes()
1359 genwqe_open_files(cd); i++) { in genwqe_inform_and_stop_processes()
1379 int genwqe_device_remove(struct genwqe_dev *cd) in genwqe_device_remove() argument
1382 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_device_remove()
1384 if (!genwqe_device_initialized(cd)) in genwqe_device_remove()
1387 genwqe_inform_and_stop_processes(cd); in genwqe_device_remove()
1395 rc = kref_read(&cd->cdev_genwqe.kobj.kref); in genwqe_device_remove()
1402 genqwe_exit_debugfs(cd); in genwqe_device_remove()
1403 device_destroy(cd->class_genwqe, cd->devnum_genwqe); in genwqe_device_remove()
1404 cdev_del(&cd->cdev_genwqe); in genwqe_device_remove()
1405 unregister_chrdev_region(cd->devnum_genwqe, GENWQE_MAX_MINOR); in genwqe_device_remove()
1406 cd->dev = NULL; in genwqe_device_remove()