Lines Matching defs:cd

32 static int genwqe_open_files(struct genwqe_dev *cd)
37 spin_lock_irqsave(&cd->file_lock, flags);
38 rc = list_empty(&cd->file_list);
39 spin_unlock_irqrestore(&cd->file_lock, flags);
43 static void genwqe_add_file(struct genwqe_dev *cd, struct genwqe_file *cfile)
48 spin_lock_irqsave(&cd->file_lock, flags);
49 list_add(&cfile->list, &cd->file_list);
50 spin_unlock_irqrestore(&cd->file_lock, flags);
53 static int genwqe_del_file(struct genwqe_dev *cd, struct genwqe_file *cfile)
57 spin_lock_irqsave(&cd->file_lock, flags);
59 spin_unlock_irqrestore(&cd->file_lock, flags);
158 struct pci_dev *pci_dev = cfile->cd->pci_dev;
194 struct genwqe_dev *cd = cfile->cd;
195 struct pci_dev *pci_dev = cfile->cd->pci_dev;
217 __genwqe_free_consistent(cd, dma_map->size,
223 genwqe_user_vunmap(cd, dma_map);
232 struct genwqe_dev *cd = cfile->cd;
246 genwqe_user_vunmap(cd, dma_map);
253 * @cd: GenWQE device information
256 * E.g. genwqe_send_signal(cd, SIGIO);
258 static int genwqe_kill_fasync(struct genwqe_dev *cd, int sig)
264 spin_lock_irqsave(&cd->file_lock, flags);
265 list_for_each_entry(cfile, &cd->file_list, list) {
270 spin_unlock_irqrestore(&cd->file_lock, flags);
274 static int genwqe_terminate(struct genwqe_dev *cd)
280 spin_lock_irqsave(&cd->file_lock, flags);
281 list_for_each_entry(cfile, &cd->file_list, list) {
285 spin_unlock_irqrestore(&cd->file_lock, flags);
301 struct genwqe_dev *cd;
308 cd = container_of(inode->i_cdev, struct genwqe_dev, cdev_genwqe);
309 cfile->cd = cd;
321 genwqe_add_file(cd, cfile);
360 struct genwqe_dev *cd = cfile->cd;
370 * For this to work we must not release cd when this cfile is
374 genwqe_del_file(cd, cfile);
395 struct genwqe_dev *cd = container_of(inode->i_cdev, struct genwqe_dev,
397 struct pci_dev *pci_dev = cd->pci_dev;
411 __genwqe_free_consistent(cd, dma_map->size, dma_map->k_vaddr,
440 struct genwqe_dev *cd = cfile->cd;
457 dma_map->k_vaddr = __genwqe_alloc_consistent(cd, vsize,
485 __genwqe_free_consistent(cd, dma_map->size,
514 struct genwqe_dev *cd = cfile->cd;
516 struct pci_dev *pci_dev = cd->pci_dev;
540 xbuf = __genwqe_alloc_consistent(cd, FLASH_BLOCK, &dma_addr);
577 if (genwqe_get_slu_id(cd) <= 0x2) {
610 rc = __genwqe_execute_raw_ddcb(cd, req, filp->f_flags);
635 __genwqe_free_consistent(cd, FLASH_BLOCK, xbuf, dma_addr);
649 struct genwqe_dev *cd = cfile->cd;
651 struct pci_dev *pci_dev = cd->pci_dev;
676 xbuf = __genwqe_alloc_consistent(cd, FLASH_BLOCK, &dma_addr);
703 if (genwqe_get_slu_id(cd) <= 0x2) {
728 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags);
765 __genwqe_free_consistent(cd, FLASH_BLOCK, xbuf, dma_addr);
772 struct genwqe_dev *cd = cfile->cd;
773 struct pci_dev *pci_dev = cfile->cd->pci_dev;
791 rc = genwqe_user_vmap(cd, dma_map, (void *)map_addr, map_size);
805 struct genwqe_dev *cd = cfile->cd;
821 genwqe_user_vunmap(cd, dma_map);
837 struct genwqe_dev *cd = cfile->cd;
844 genwqe_user_vunmap(cd, dma_map);
847 genwqe_free_sync_sgl(cd, &req->sgls[i]);
866 struct genwqe_dev *cd = cfile->cd;
948 rc = genwqe_user_vmap(cd, m, (void *)u_addr,
958 rc = genwqe_alloc_sync_sgl(cd, &req->sgls[i],
964 genwqe_setup_sgl(cd, &req->sgls[i],
997 struct genwqe_dev *cd = cfile->cd;
1005 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags);
1015 struct genwqe_dev *cd = cfile->cd;
1030 rc = __genwqe_execute_raw_ddcb(cd, cmd, filp->f_flags);
1057 struct genwqe_dev *cd = cfile->cd;
1058 struct pci_dev *pci_dev = cd->pci_dev;
1073 put_user(cd->card_state, (enum genwqe_card_state __user *)arg);
1083 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x7))
1086 val = __genwqe_readq(cd, reg_offs);
1103 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x7))
1109 __genwqe_writeq(cd, reg_offs, val);
1119 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x3))
1122 val = __genwqe_readl(cd, reg_offs);
1139 if ((reg_offs >= cd->mmio_len) || (reg_offs & 0x3))
1145 __genwqe_writel(cd, reg_offs, val);
1153 if (!genwqe_is_privileged(cd))
1174 if (!genwqe_is_privileged(cd))
1177 if (genwqe_flash_readback_fails(cd))
1239 static int genwqe_device_initialized(struct genwqe_dev *cd)
1241 return cd->dev != NULL;
1246 * @cd: genwqe device descriptor
1252 int genwqe_device_create(struct genwqe_dev *cd)
1255 struct pci_dev *pci_dev = cd->pci_dev;
1263 rc = alloc_chrdev_region(&cd->devnum_genwqe, 0,
1270 cdev_init(&cd->cdev_genwqe, &genwqe_fops);
1271 cd->cdev_genwqe.owner = THIS_MODULE;
1273 rc = cdev_add(&cd->cdev_genwqe, cd->devnum_genwqe, 1);
1283 cd->dev = device_create_with_groups(cd->class_genwqe,
1284 &cd->pci_dev->dev,
1285 cd->devnum_genwqe, cd,
1288 cd->card_idx);
1289 if (IS_ERR(cd->dev)) {
1290 rc = PTR_ERR(cd->dev);
1294 genwqe_init_debugfs(cd);
1299 cdev_del(&cd->cdev_genwqe);
1301 unregister_chrdev_region(cd->devnum_genwqe, GENWQE_MAX_MINOR);
1303 cd->dev = NULL;
1307 static int genwqe_inform_and_stop_processes(struct genwqe_dev *cd)
1311 struct pci_dev *pci_dev = cd->pci_dev;
1313 if (!genwqe_open_files(cd))
1318 rc = genwqe_kill_fasync(cd, SIGIO);
1322 genwqe_open_files(cd); i++) {
1330 if (!genwqe_open_files(cd))
1336 rc = genwqe_terminate(cd);
1340 genwqe_open_files(cd); i++) {
1353 * @cd: GenWQE device information
1361 int genwqe_device_remove(struct genwqe_dev *cd)
1364 struct pci_dev *pci_dev = cd->pci_dev;
1366 if (!genwqe_device_initialized(cd))
1369 genwqe_inform_and_stop_processes(cd);
1377 rc = kref_read(&cd->cdev_genwqe.kobj.kref);
1384 genqwe_exit_debugfs(cd);
1385 device_destroy(cd->class_genwqe, cd->devnum_genwqe);
1386 cdev_del(&cd->cdev_genwqe);
1387 unregister_chrdev_region(cd->devnum_genwqe, GENWQE_MAX_MINOR);
1388 cd->dev = NULL;