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, NULL); in genwqe_remove_mappings()
238 struct genwqe_dev *cd = cfile->cd; in genwqe_remove_pinnings() local
252 genwqe_user_vunmap(cd, dma_map, NULL); 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
313 cd = container_of(inode->i_cdev, struct genwqe_dev, cdev_genwqe); in genwqe_open()
314 pci_dev = cd->pci_dev; in genwqe_open()
315 cfile->cd = cd; in genwqe_open()
327 genwqe_add_file(cd, cfile); in genwqe_open()
366 struct genwqe_dev *cd = cfile->cd; in genwqe_release() local
380 genwqe_del_file(cd, cfile); in genwqe_release()
400 struct genwqe_dev *cd = container_of(inode->i_cdev, struct genwqe_dev, in genwqe_vma_close() local
402 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_vma_close()
416 __genwqe_free_consistent(cd, dma_map->size, dma_map->k_vaddr, in genwqe_vma_close()
443 struct genwqe_dev *cd = cfile->cd; in genwqe_mmap() local
460 dma_map->k_vaddr = __genwqe_alloc_consistent(cd, vsize, in genwqe_mmap()
488 __genwqe_free_consistent(cd, dma_map->size, in genwqe_mmap()
518 struct genwqe_dev *cd = cfile->cd; in do_flash_update() local
520 struct pci_dev *pci_dev = cd->pci_dev; in do_flash_update()
544 xbuf = __genwqe_alloc_consistent(cd, FLASH_BLOCK, &dma_addr); in do_flash_update()
581 if (genwqe_get_slu_id(cd) <= 0x2) { in do_flash_update()
614 rc = __genwqe_execute_raw_ddcb(cd, req, filp->f_flags); in do_flash_update()
639 __genwqe_free_consistent(cd, FLASH_BLOCK, xbuf, dma_addr); in do_flash_update()
653 struct genwqe_dev *cd = cfile->cd; in do_flash_read() local
655 struct pci_dev *pci_dev = cd->pci_dev; in do_flash_read()
680 xbuf = __genwqe_alloc_consistent(cd, FLASH_BLOCK, &dma_addr); in do_flash_read()
707 if (genwqe_get_slu_id(cd) <= 0x2) { in do_flash_read()
732 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags); in do_flash_read()
769 __genwqe_free_consistent(cd, FLASH_BLOCK, xbuf, dma_addr); in do_flash_read()
776 struct genwqe_dev *cd = cfile->cd; in genwqe_pin_mem() local
777 struct pci_dev *pci_dev = cfile->cd->pci_dev; in genwqe_pin_mem()
793 rc = genwqe_user_vmap(cd, dma_map, (void *)map_addr, map_size, NULL); in genwqe_pin_mem()
807 struct genwqe_dev *cd = cfile->cd; in genwqe_unpin_mem() local
823 genwqe_user_vunmap(cd, dma_map, NULL); in genwqe_unpin_mem()
837 struct genwqe_dev *cd = cfile->cd; in ddcb_cmd_cleanup() local
844 genwqe_user_vunmap(cd, dma_map, req); in ddcb_cmd_cleanup()
847 genwqe_free_sync_sgl(cd, &req->sgls[i]); in ddcb_cmd_cleanup()
864 struct genwqe_dev *cd = cfile->cd; in ddcb_cmd_fixups() local
945 rc = genwqe_user_vmap(cd, m, (void *)u_addr, in ddcb_cmd_fixups()
955 rc = genwqe_alloc_sync_sgl(cd, &req->sgls[i], in ddcb_cmd_fixups()
961 genwqe_setup_sgl(cd, &req->sgls[i], in ddcb_cmd_fixups()
992 struct genwqe_dev *cd = cfile->cd; in genwqe_execute_ddcb() local
1000 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags); in genwqe_execute_ddcb()
1011 struct genwqe_dev *cd = cfile->cd; in do_execute_ddcb() local
1028 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags); in do_execute_ddcb()
1055 struct genwqe_dev *cd = cfile->cd; in genwqe_ioctl() local
1056 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_ioctl()
1071 put_user(cd->card_state, (enum genwqe_card_state __user *)arg); in genwqe_ioctl()
1081 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x7)) in genwqe_ioctl()
1084 val = __genwqe_readq(cd, reg_offs); in genwqe_ioctl()
1101 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x7)) in genwqe_ioctl()
1107 __genwqe_writeq(cd, reg_offs, val); in genwqe_ioctl()
1117 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x3)) in genwqe_ioctl()
1120 val = __genwqe_readl(cd, reg_offs); in genwqe_ioctl()
1137 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x3)) in genwqe_ioctl()
1143 __genwqe_writel(cd, reg_offs, val); in genwqe_ioctl()
1151 if (!genwqe_is_privileged(cd)) in genwqe_ioctl()
1172 if (!genwqe_is_privileged(cd)) in genwqe_ioctl()
1175 if (genwqe_flash_readback_fails(cd)) in genwqe_ioctl()
1258 static int genwqe_device_initialized(struct genwqe_dev *cd) in genwqe_device_initialized() argument
1260 return cd->dev != NULL; in genwqe_device_initialized()
1271 int genwqe_device_create(struct genwqe_dev *cd) in genwqe_device_create() argument
1274 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_device_create()
1282 rc = alloc_chrdev_region(&cd->devnum_genwqe, 0, in genwqe_device_create()
1289 cdev_init(&cd->cdev_genwqe, &genwqe_fops); in genwqe_device_create()
1290 cd->cdev_genwqe.owner = THIS_MODULE; in genwqe_device_create()
1292 rc = cdev_add(&cd->cdev_genwqe, cd->devnum_genwqe, 1); in genwqe_device_create()
1302 cd->dev = device_create_with_groups(cd->class_genwqe, in genwqe_device_create()
1303 &cd->pci_dev->dev, in genwqe_device_create()
1304 cd->devnum_genwqe, cd, in genwqe_device_create()
1307 cd->card_idx); in genwqe_device_create()
1308 if (IS_ERR(cd->dev)) { in genwqe_device_create()
1309 rc = PTR_ERR(cd->dev); in genwqe_device_create()
1313 rc = genwqe_init_debugfs(cd); in genwqe_device_create()
1320 device_destroy(cd->class_genwqe, cd->devnum_genwqe); in genwqe_device_create()
1322 cdev_del(&cd->cdev_genwqe); in genwqe_device_create()
1324 unregister_chrdev_region(cd->devnum_genwqe, GENWQE_MAX_MINOR); in genwqe_device_create()
1326 cd->dev = NULL; in genwqe_device_create()
1330 static int genwqe_inform_and_stop_processes(struct genwqe_dev *cd) in genwqe_inform_and_stop_processes() argument
1334 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_inform_and_stop_processes()
1336 if (!genwqe_open_files(cd)) in genwqe_inform_and_stop_processes()
1341 rc = genwqe_kill_fasync(cd, SIGIO); in genwqe_inform_and_stop_processes()
1345 genwqe_open_files(cd); i++) { in genwqe_inform_and_stop_processes()
1353 if (!genwqe_open_files(cd)) in genwqe_inform_and_stop_processes()
1359 rc = genwqe_force_sig(cd, SIGKILL); /* force terminate */ in genwqe_inform_and_stop_processes()
1363 genwqe_open_files(cd); i++) { in genwqe_inform_and_stop_processes()
1383 int genwqe_device_remove(struct genwqe_dev *cd) in genwqe_device_remove() argument
1386 struct pci_dev *pci_dev = cd->pci_dev; in genwqe_device_remove()
1388 if (!genwqe_device_initialized(cd)) in genwqe_device_remove()
1391 genwqe_inform_and_stop_processes(cd); in genwqe_device_remove()
1399 rc = atomic_read(&cd->cdev_genwqe.kobj.kref.refcount); in genwqe_device_remove()
1406 genqwe_exit_debugfs(cd); in genwqe_device_remove()
1407 device_destroy(cd->class_genwqe, cd->devnum_genwqe); in genwqe_device_remove()
1408 cdev_del(&cd->cdev_genwqe); in genwqe_device_remove()
1409 unregister_chrdev_region(cd->devnum_genwqe, GENWQE_MAX_MINOR); in genwqe_device_remove()
1410 cd->dev = NULL; in genwqe_device_remove()