genwqe_dev 48 drivers/misc/genwqe/card_base.c static struct genwqe_dev *genwqe_devices[GENWQE_CARD_NO_MAX]; genwqe_dev 113 drivers/misc/genwqe/card_base.c static struct genwqe_dev *genwqe_dev_alloc(void) genwqe_dev 116 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd; genwqe_dev 125 drivers/misc/genwqe/card_base.c cd = kzalloc(sizeof(struct genwqe_dev), GFP_KERNEL); genwqe_dev 157 drivers/misc/genwqe/card_base.c static void genwqe_dev_free(struct genwqe_dev *cd) genwqe_dev 174 drivers/misc/genwqe/card_base.c static int genwqe_bus_reset(struct genwqe_dev *cd) genwqe_dev 239 drivers/misc/genwqe/card_base.c bool genwqe_need_err_masking(struct genwqe_dev *cd) genwqe_dev 244 drivers/misc/genwqe/card_base.c static void genwqe_tweak_hardware(struct genwqe_dev *cd) genwqe_dev 271 drivers/misc/genwqe/card_base.c int genwqe_recovery_on_fatal_gfir_required(struct genwqe_dev *cd) genwqe_dev 276 drivers/misc/genwqe/card_base.c int genwqe_flash_readback_fails(struct genwqe_dev *cd) genwqe_dev 292 drivers/misc/genwqe/card_base.c static int genwqe_T_psec(struct genwqe_dev *cd) genwqe_dev 313 drivers/misc/genwqe/card_base.c static bool genwqe_setup_pf_jtimer(struct genwqe_dev *cd) genwqe_dev 333 drivers/misc/genwqe/card_base.c static bool genwqe_setup_vf_jtimer(struct genwqe_dev *cd) genwqe_dev 359 drivers/misc/genwqe/card_base.c static int genwqe_ffdc_buffs_alloc(struct genwqe_dev *cd) genwqe_dev 392 drivers/misc/genwqe/card_base.c static void genwqe_ffdc_buffs_free(struct genwqe_dev *cd) genwqe_dev 402 drivers/misc/genwqe/card_base.c static int genwqe_read_ids(struct genwqe_dev *cd) genwqe_dev 450 drivers/misc/genwqe/card_base.c static int genwqe_start(struct genwqe_dev *cd) genwqe_dev 556 drivers/misc/genwqe/card_base.c static int genwqe_stop(struct genwqe_dev *cd) genwqe_dev 580 drivers/misc/genwqe/card_base.c static int genwqe_recover_card(struct genwqe_dev *cd, int fatal_err) genwqe_dev 612 drivers/misc/genwqe/card_base.c static int genwqe_health_check_cond(struct genwqe_dev *cd, u64 *gfir) genwqe_dev 628 drivers/misc/genwqe/card_base.c static u64 genwqe_fir_checking(struct genwqe_dev *cd) genwqe_dev 795 drivers/misc/genwqe/card_base.c static int genwqe_platform_recovery(struct genwqe_dev *cd) genwqe_dev 837 drivers/misc/genwqe/card_base.c static int genwqe_reload_bistream(struct genwqe_dev *cd) genwqe_dev 903 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd = data; genwqe_dev 1018 drivers/misc/genwqe/card_base.c static int genwqe_health_check_start(struct genwqe_dev *cd) genwqe_dev 1039 drivers/misc/genwqe/card_base.c static int genwqe_health_thread_running(struct genwqe_dev *cd) genwqe_dev 1044 drivers/misc/genwqe/card_base.c static int genwqe_health_check_stop(struct genwqe_dev *cd) genwqe_dev 1059 drivers/misc/genwqe/card_base.c static int genwqe_pci_setup(struct genwqe_dev *cd) genwqe_dev 1144 drivers/misc/genwqe/card_base.c static void genwqe_pci_remove(struct genwqe_dev *cd) genwqe_dev 1167 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd; genwqe_dev 1222 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd = dev_get_drvdata(&pci_dev->dev); genwqe_dev 1245 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd; genwqe_dev 1273 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd = dev_get_drvdata(&pci_dev->dev); genwqe_dev 1293 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd = dev_get_drvdata(&pci_dev->dev); genwqe_dev 1311 drivers/misc/genwqe/card_base.c struct genwqe_dev *cd = dev_get_drvdata(&dev->dev); genwqe_dev 368 drivers/misc/genwqe/card_base.h int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl, genwqe_dev 371 drivers/misc/genwqe/card_base.h int genwqe_setup_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl, genwqe_dev 374 drivers/misc/genwqe/card_base.h int genwqe_free_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl); genwqe_dev 398 drivers/misc/genwqe/card_base.h struct genwqe_dev *cd; genwqe_dev 413 drivers/misc/genwqe/card_base.h int genwqe_setup_service_layer(struct genwqe_dev *cd); /* for PF only */ genwqe_dev 414 drivers/misc/genwqe/card_base.h int genwqe_finish_queue(struct genwqe_dev *cd); genwqe_dev 415 drivers/misc/genwqe/card_base.h int genwqe_release_service_layer(struct genwqe_dev *cd); genwqe_dev 424 drivers/misc/genwqe/card_base.h static inline int genwqe_get_slu_id(struct genwqe_dev *cd) genwqe_dev 429 drivers/misc/genwqe/card_base.h int genwqe_ddcbs_in_flight(struct genwqe_dev *cd); genwqe_dev 431 drivers/misc/genwqe/card_base.h u8 genwqe_card_type(struct genwqe_dev *cd); genwqe_dev 432 drivers/misc/genwqe/card_base.h int genwqe_card_reset(struct genwqe_dev *cd); genwqe_dev 433 drivers/misc/genwqe/card_base.h int genwqe_set_interrupt_capability(struct genwqe_dev *cd, int count); genwqe_dev 434 drivers/misc/genwqe/card_base.h void genwqe_reset_interrupt_capability(struct genwqe_dev *cd); genwqe_dev 436 drivers/misc/genwqe/card_base.h int genwqe_device_create(struct genwqe_dev *cd); genwqe_dev 437 drivers/misc/genwqe/card_base.h int genwqe_device_remove(struct genwqe_dev *cd); genwqe_dev 440 drivers/misc/genwqe/card_base.h void genwqe_init_debugfs(struct genwqe_dev *cd); genwqe_dev 441 drivers/misc/genwqe/card_base.h void genqwe_exit_debugfs(struct genwqe_dev *cd); genwqe_dev 443 drivers/misc/genwqe/card_base.h int genwqe_read_softreset(struct genwqe_dev *cd); genwqe_dev 446 drivers/misc/genwqe/card_base.h int genwqe_recovery_on_fatal_gfir_required(struct genwqe_dev *cd); genwqe_dev 447 drivers/misc/genwqe/card_base.h int genwqe_flash_readback_fails(struct genwqe_dev *cd); genwqe_dev 456 drivers/misc/genwqe/card_base.h int genwqe_write_vreg(struct genwqe_dev *cd, u32 reg, u64 val, int func); genwqe_dev 466 drivers/misc/genwqe/card_base.h u64 genwqe_read_vreg(struct genwqe_dev *cd, u32 reg, int func); genwqe_dev 469 drivers/misc/genwqe/card_base.h int genwqe_ffdc_buff_size(struct genwqe_dev *cd, int unit_id); genwqe_dev 470 drivers/misc/genwqe/card_base.h int genwqe_ffdc_buff_read(struct genwqe_dev *cd, int unit_id, genwqe_dev 472 drivers/misc/genwqe/card_base.h int genwqe_read_ffdc_regs(struct genwqe_dev *cd, struct genwqe_reg *regs, genwqe_dev 474 drivers/misc/genwqe/card_base.h int genwqe_ffdc_dump_dma(struct genwqe_dev *cd, genwqe_dev 477 drivers/misc/genwqe/card_base.h int genwqe_init_debug_data(struct genwqe_dev *cd, genwqe_dev 481 drivers/misc/genwqe/card_base.h int genwqe_read_app_id(struct genwqe_dev *cd, char *app_name, int len); genwqe_dev 484 drivers/misc/genwqe/card_base.h int genwqe_user_vmap(struct genwqe_dev *cd, struct dma_mapping *m, genwqe_dev 487 drivers/misc/genwqe/card_base.h int genwqe_user_vunmap(struct genwqe_dev *cd, struct dma_mapping *m); genwqe_dev 505 drivers/misc/genwqe/card_base.h int __genwqe_execute_ddcb(struct genwqe_dev *cd, genwqe_dev 517 drivers/misc/genwqe/card_base.h int __genwqe_execute_raw_ddcb(struct genwqe_dev *cd, genwqe_dev 520 drivers/misc/genwqe/card_base.h int __genwqe_enqueue_ddcb(struct genwqe_dev *cd, genwqe_dev 524 drivers/misc/genwqe/card_base.h int __genwqe_wait_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req); genwqe_dev 525 drivers/misc/genwqe/card_base.h int __genwqe_purge_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req); genwqe_dev 528 drivers/misc/genwqe/card_base.h int __genwqe_writeq(struct genwqe_dev *cd, u64 byte_offs, u64 val); genwqe_dev 529 drivers/misc/genwqe/card_base.h u64 __genwqe_readq(struct genwqe_dev *cd, u64 byte_offs); genwqe_dev 530 drivers/misc/genwqe/card_base.h int __genwqe_writel(struct genwqe_dev *cd, u64 byte_offs, u32 val); genwqe_dev 531 drivers/misc/genwqe/card_base.h u32 __genwqe_readl(struct genwqe_dev *cd, u64 byte_offs); genwqe_dev 533 drivers/misc/genwqe/card_base.h void *__genwqe_alloc_consistent(struct genwqe_dev *cd, size_t size, genwqe_dev 535 drivers/misc/genwqe/card_base.h void __genwqe_free_consistent(struct genwqe_dev *cd, size_t size, genwqe_dev 539 drivers/misc/genwqe/card_base.h int genwqe_base_clock_frequency(struct genwqe_dev *cd); genwqe_dev 542 drivers/misc/genwqe/card_base.h void genwqe_stop_traps(struct genwqe_dev *cd); genwqe_dev 543 drivers/misc/genwqe/card_base.h void genwqe_start_traps(struct genwqe_dev *cd); genwqe_dev 546 drivers/misc/genwqe/card_base.h bool genwqe_need_err_masking(struct genwqe_dev *cd); genwqe_dev 572 drivers/misc/genwqe/card_base.h static inline int genwqe_is_privileged(struct genwqe_dev *cd) genwqe_dev 163 drivers/misc/genwqe/card_ddcb.c static void print_ddcb_info(struct genwqe_dev *cd, struct ddcb_queue *queue) genwqe_dev 241 drivers/misc/genwqe/card_ddcb.c static int ddcb_requ_finished(struct genwqe_dev *cd, struct ddcb_requ *req) genwqe_dev 265 drivers/misc/genwqe/card_ddcb.c static int enqueue_ddcb(struct genwqe_dev *cd, struct ddcb_queue *queue, genwqe_dev 362 drivers/misc/genwqe/card_ddcb.c static int genwqe_check_ddcb_queue(struct genwqe_dev *cd, genwqe_dev 474 drivers/misc/genwqe/card_ddcb.c int __genwqe_wait_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req) genwqe_dev 562 drivers/misc/genwqe/card_ddcb.c static struct ddcb *get_next_ddcb(struct genwqe_dev *cd, genwqe_dev 615 drivers/misc/genwqe/card_ddcb.c int __genwqe_purge_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req) genwqe_dev 720 drivers/misc/genwqe/card_ddcb.c int genwqe_init_debug_data(struct genwqe_dev *cd, struct genwqe_debug_data *d) genwqe_dev 749 drivers/misc/genwqe/card_ddcb.c int __genwqe_enqueue_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req, genwqe_dev 906 drivers/misc/genwqe/card_ddcb.c int __genwqe_execute_raw_ddcb(struct genwqe_dev *cd, genwqe_dev 971 drivers/misc/genwqe/card_ddcb.c static int genwqe_next_ddcb_ready(struct genwqe_dev *cd) genwqe_dev 1001 drivers/misc/genwqe/card_ddcb.c int genwqe_ddcbs_in_flight(struct genwqe_dev *cd) genwqe_dev 1014 drivers/misc/genwqe/card_ddcb.c static int setup_ddcb_queue(struct genwqe_dev *cd, struct ddcb_queue *queue) genwqe_dev 1096 drivers/misc/genwqe/card_ddcb.c static void free_ddcb_queue(struct genwqe_dev *cd, struct ddcb_queue *queue) genwqe_dev 1116 drivers/misc/genwqe/card_ddcb.c struct genwqe_dev *cd = (struct genwqe_dev *)dev_id; genwqe_dev 1164 drivers/misc/genwqe/card_ddcb.c struct genwqe_dev *cd = (struct genwqe_dev *)dev_id; genwqe_dev 1183 drivers/misc/genwqe/card_ddcb.c struct genwqe_dev *cd = (struct genwqe_dev *)data; genwqe_dev 1220 drivers/misc/genwqe/card_ddcb.c int genwqe_setup_service_layer(struct genwqe_dev *cd) genwqe_dev 1307 drivers/misc/genwqe/card_ddcb.c static int queue_wake_up_all(struct genwqe_dev *cd) genwqe_dev 1332 drivers/misc/genwqe/card_ddcb.c int genwqe_finish_queue(struct genwqe_dev *cd) genwqe_dev 1384 drivers/misc/genwqe/card_ddcb.c int genwqe_release_service_layer(struct genwqe_dev *cd) genwqe_dev 45 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 92 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 121 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 150 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 174 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 195 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 213 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 286 drivers/misc/genwqe/card_debugfs.c struct genwqe_dev *cd = s->private; genwqe_dev 319 drivers/misc/genwqe/card_debugfs.c void genwqe_init_debugfs(struct genwqe_dev *cd) genwqe_dev 375 drivers/misc/genwqe/card_debugfs.c void genqwe_exit_debugfs(struct genwqe_dev *cd) genwqe_dev 32 drivers/misc/genwqe/card_dev.c static int genwqe_open_files(struct genwqe_dev *cd) genwqe_dev 43 drivers/misc/genwqe/card_dev.c static void genwqe_add_file(struct genwqe_dev *cd, struct genwqe_file *cfile) genwqe_dev 53 drivers/misc/genwqe/card_dev.c static int genwqe_del_file(struct genwqe_dev *cd, struct genwqe_file *cfile) genwqe_dev 193 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 231 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 255 drivers/misc/genwqe/card_dev.c static int genwqe_kill_fasync(struct genwqe_dev *cd, int sig) genwqe_dev 271 drivers/misc/genwqe/card_dev.c static int genwqe_terminate(struct genwqe_dev *cd) genwqe_dev 298 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd; genwqe_dev 305 drivers/misc/genwqe/card_dev.c cd = container_of(inode->i_cdev, struct genwqe_dev, cdev_genwqe); genwqe_dev 357 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 391 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = container_of(inode->i_cdev, struct genwqe_dev, genwqe_dev 434 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 509 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 644 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 767 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 800 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 830 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 857 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 986 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 1004 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 1046 drivers/misc/genwqe/card_dev.c struct genwqe_dev *cd = cfile->cd; genwqe_dev 1249 drivers/misc/genwqe/card_dev.c static int genwqe_device_initialized(struct genwqe_dev *cd) genwqe_dev 1262 drivers/misc/genwqe/card_dev.c int genwqe_device_create(struct genwqe_dev *cd) genwqe_dev 1317 drivers/misc/genwqe/card_dev.c static int genwqe_inform_and_stop_processes(struct genwqe_dev *cd) genwqe_dev 1370 drivers/misc/genwqe/card_dev.c int genwqe_device_remove(struct genwqe_dev *cd) genwqe_dev 42 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 53 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 64 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 77 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 89 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 101 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 113 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 125 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 152 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 168 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 189 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 215 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 274 drivers/misc/genwqe/card_sysfs.c struct genwqe_dev *cd = dev_get_drvdata(dev); genwqe_dev 44 drivers/misc/genwqe/card_utils.c int __genwqe_writeq(struct genwqe_dev *cd, u64 byte_offs, u64 val) genwqe_dev 68 drivers/misc/genwqe/card_utils.c u64 __genwqe_readq(struct genwqe_dev *cd, u64 byte_offs) genwqe_dev 95 drivers/misc/genwqe/card_utils.c int __genwqe_writel(struct genwqe_dev *cd, u64 byte_offs, u32 val) genwqe_dev 119 drivers/misc/genwqe/card_utils.c u32 __genwqe_readl(struct genwqe_dev *cd, u64 byte_offs) genwqe_dev 135 drivers/misc/genwqe/card_utils.c int genwqe_read_app_id(struct genwqe_dev *cd, char *app_name, int len) genwqe_dev 207 drivers/misc/genwqe/card_utils.c void *__genwqe_alloc_consistent(struct genwqe_dev *cd, size_t size, genwqe_dev 217 drivers/misc/genwqe/card_utils.c void __genwqe_free_consistent(struct genwqe_dev *cd, size_t size, genwqe_dev 226 drivers/misc/genwqe/card_utils.c static void genwqe_unmap_pages(struct genwqe_dev *cd, dma_addr_t *dma_list, genwqe_dev 239 drivers/misc/genwqe/card_utils.c static int genwqe_map_pages(struct genwqe_dev *cd, genwqe_dev 288 drivers/misc/genwqe/card_utils.c int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl, genwqe_dev 371 drivers/misc/genwqe/card_utils.c int genwqe_setup_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl, genwqe_dev 468 drivers/misc/genwqe/card_utils.c int genwqe_free_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl) genwqe_dev 564 drivers/misc/genwqe/card_utils.c int genwqe_user_vmap(struct genwqe_dev *cd, struct dma_mapping *m, void *uaddr, genwqe_dev 639 drivers/misc/genwqe/card_utils.c int genwqe_user_vunmap(struct genwqe_dev *cd, struct dma_mapping *m) genwqe_dev 674 drivers/misc/genwqe/card_utils.c u8 genwqe_card_type(struct genwqe_dev *cd) genwqe_dev 685 drivers/misc/genwqe/card_utils.c int genwqe_card_reset(struct genwqe_dev *cd) genwqe_dev 722 drivers/misc/genwqe/card_utils.c int genwqe_read_softreset(struct genwqe_dev *cd) genwqe_dev 739 drivers/misc/genwqe/card_utils.c int genwqe_set_interrupt_capability(struct genwqe_dev *cd, int count) genwqe_dev 753 drivers/misc/genwqe/card_utils.c void genwqe_reset_interrupt_capability(struct genwqe_dev *cd) genwqe_dev 768 drivers/misc/genwqe/card_utils.c static int set_reg_idx(struct genwqe_dev *cd, struct genwqe_reg *r, genwqe_dev 782 drivers/misc/genwqe/card_utils.c static int set_reg(struct genwqe_dev *cd, struct genwqe_reg *r, genwqe_dev 788 drivers/misc/genwqe/card_utils.c int genwqe_read_ffdc_regs(struct genwqe_dev *cd, struct genwqe_reg *regs, genwqe_dev 846 drivers/misc/genwqe/card_utils.c int genwqe_ffdc_buff_size(struct genwqe_dev *cd, int uid) genwqe_dev 899 drivers/misc/genwqe/card_utils.c int genwqe_ffdc_buff_read(struct genwqe_dev *cd, int uid, genwqe_dev 987 drivers/misc/genwqe/card_utils.c int genwqe_write_vreg(struct genwqe_dev *cd, u32 reg, u64 val, int func) genwqe_dev 1000 drivers/misc/genwqe/card_utils.c u64 genwqe_read_vreg(struct genwqe_dev *cd, u32 reg, int func) genwqe_dev 1018 drivers/misc/genwqe/card_utils.c int genwqe_base_clock_frequency(struct genwqe_dev *cd) genwqe_dev 1035 drivers/misc/genwqe/card_utils.c void genwqe_stop_traps(struct genwqe_dev *cd) genwqe_dev 1045 drivers/misc/genwqe/card_utils.c void genwqe_start_traps(struct genwqe_dev *cd)