• Home
  • Raw
  • Download

Lines Matching refs:card

52 	struct rsxx_cardinfo *card = m->private;  in rsxx_attr_pci_regs_show()  local
55 ioread32(card->regmap + HWID)); in rsxx_attr_pci_regs_show()
57 ioread32(card->regmap + SCRATCH)); in rsxx_attr_pci_regs_show()
59 ioread32(card->regmap + IER)); in rsxx_attr_pci_regs_show()
61 ioread32(card->regmap + IPR)); in rsxx_attr_pci_regs_show()
63 ioread32(card->regmap + CREG_CMD)); in rsxx_attr_pci_regs_show()
65 ioread32(card->regmap + CREG_ADD)); in rsxx_attr_pci_regs_show()
67 ioread32(card->regmap + CREG_CNT)); in rsxx_attr_pci_regs_show()
69 ioread32(card->regmap + CREG_STAT)); in rsxx_attr_pci_regs_show()
71 ioread32(card->regmap + CREG_DATA0)); in rsxx_attr_pci_regs_show()
73 ioread32(card->regmap + CREG_DATA1)); in rsxx_attr_pci_regs_show()
75 ioread32(card->regmap + CREG_DATA2)); in rsxx_attr_pci_regs_show()
77 ioread32(card->regmap + CREG_DATA3)); in rsxx_attr_pci_regs_show()
79 ioread32(card->regmap + CREG_DATA4)); in rsxx_attr_pci_regs_show()
81 ioread32(card->regmap + CREG_DATA5)); in rsxx_attr_pci_regs_show()
83 ioread32(card->regmap + CREG_DATA6)); in rsxx_attr_pci_regs_show()
85 ioread32(card->regmap + CREG_DATA7)); in rsxx_attr_pci_regs_show()
87 ioread32(card->regmap + INTR_COAL)); in rsxx_attr_pci_regs_show()
89 ioread32(card->regmap + HW_ERROR)); in rsxx_attr_pci_regs_show()
91 ioread32(card->regmap + PCI_DEBUG0)); in rsxx_attr_pci_regs_show()
93 ioread32(card->regmap + PCI_DEBUG1)); in rsxx_attr_pci_regs_show()
95 ioread32(card->regmap + PCI_DEBUG2)); in rsxx_attr_pci_regs_show()
97 ioread32(card->regmap + PCI_DEBUG3)); in rsxx_attr_pci_regs_show()
99 ioread32(card->regmap + PCI_DEBUG4)); in rsxx_attr_pci_regs_show()
101 ioread32(card->regmap + PCI_DEBUG5)); in rsxx_attr_pci_regs_show()
103 ioread32(card->regmap + PCI_DEBUG6)); in rsxx_attr_pci_regs_show()
105 ioread32(card->regmap + PCI_DEBUG7)); in rsxx_attr_pci_regs_show()
107 ioread32(card->regmap + PCI_RECONFIG)); in rsxx_attr_pci_regs_show()
114 struct rsxx_cardinfo *card = m->private; in rsxx_attr_stats_show() local
117 for (i = 0; i < card->n_targets; i++) { in rsxx_attr_stats_show()
119 i, card->ctrl[i].stats.crc_errors); in rsxx_attr_stats_show()
121 i, card->ctrl[i].stats.hard_errors); in rsxx_attr_stats_show()
123 i, card->ctrl[i].stats.soft_errors); in rsxx_attr_stats_show()
125 i, card->ctrl[i].stats.writes_issued); in rsxx_attr_stats_show()
127 i, card->ctrl[i].stats.writes_failed); in rsxx_attr_stats_show()
129 i, card->ctrl[i].stats.reads_issued); in rsxx_attr_stats_show()
131 i, card->ctrl[i].stats.reads_failed); in rsxx_attr_stats_show()
133 i, card->ctrl[i].stats.reads_retried); in rsxx_attr_stats_show()
135 i, card->ctrl[i].stats.discards_issued); in rsxx_attr_stats_show()
137 i, card->ctrl[i].stats.discards_failed); in rsxx_attr_stats_show()
139 i, card->ctrl[i].stats.dma_sw_err); in rsxx_attr_stats_show()
141 i, card->ctrl[i].stats.dma_hw_fault); in rsxx_attr_stats_show()
143 i, card->ctrl[i].stats.dma_cancelled); in rsxx_attr_stats_show()
145 i, card->ctrl[i].stats.sw_q_depth); in rsxx_attr_stats_show()
147 i, atomic_read(&card->ctrl[i].stats.hw_q_depth)); in rsxx_attr_stats_show()
166 struct rsxx_cardinfo *card = file_inode(fp)->i_private; in rsxx_cram_read() local
174 st = rsxx_creg_read(card, CREG_ADD_CRAM + (u32)*ppos, cnt, buf, 1); in rsxx_cram_read()
189 struct rsxx_cardinfo *card = file_inode(fp)->i_private; in rsxx_cram_write() local
197 st = rsxx_creg_write(card, CREG_ADD_CRAM + (u32)*ppos, cnt, buf, 1); in rsxx_cram_write()
227 static void rsxx_debugfs_dev_new(struct rsxx_cardinfo *card) in rsxx_debugfs_dev_new() argument
233 card->debugfs_dir = debugfs_create_dir(card->gendisk->disk_name, NULL); in rsxx_debugfs_dev_new()
234 if (IS_ERR_OR_NULL(card->debugfs_dir)) in rsxx_debugfs_dev_new()
238 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
244 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
250 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
261 debugfs_remove(card->debugfs_dir); in rsxx_debugfs_dev_new()
263 card->debugfs_dir = NULL; in rsxx_debugfs_dev_new()
268 static void rsxx_mask_interrupts(struct rsxx_cardinfo *card) in rsxx_mask_interrupts() argument
270 card->isr_mask = 0; in rsxx_mask_interrupts()
271 card->ier_mask = 0; in rsxx_mask_interrupts()
291 void rsxx_enable_ier(struct rsxx_cardinfo *card, unsigned int intr) in rsxx_enable_ier() argument
293 if (unlikely(card->halt) || in rsxx_enable_ier()
294 unlikely(card->eeh_state)) in rsxx_enable_ier()
297 __enable_intr(&card->ier_mask, intr); in rsxx_enable_ier()
298 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_enable_ier()
301 void rsxx_disable_ier(struct rsxx_cardinfo *card, unsigned int intr) in rsxx_disable_ier() argument
303 if (unlikely(card->eeh_state)) in rsxx_disable_ier()
306 __disable_intr(&card->ier_mask, intr); in rsxx_disable_ier()
307 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_disable_ier()
310 void rsxx_enable_ier_and_isr(struct rsxx_cardinfo *card, in rsxx_enable_ier_and_isr() argument
313 if (unlikely(card->halt) || in rsxx_enable_ier_and_isr()
314 unlikely(card->eeh_state)) in rsxx_enable_ier_and_isr()
317 __enable_intr(&card->isr_mask, intr); in rsxx_enable_ier_and_isr()
318 __enable_intr(&card->ier_mask, intr); in rsxx_enable_ier_and_isr()
319 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_enable_ier_and_isr()
321 void rsxx_disable_ier_and_isr(struct rsxx_cardinfo *card, in rsxx_disable_ier_and_isr() argument
324 if (unlikely(card->eeh_state)) in rsxx_disable_ier_and_isr()
327 __disable_intr(&card->isr_mask, intr); in rsxx_disable_ier_and_isr()
328 __disable_intr(&card->ier_mask, intr); in rsxx_disable_ier_and_isr()
329 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_disable_ier_and_isr()
334 struct rsxx_cardinfo *card = pdata; in rsxx_isr() local
340 spin_lock(&card->irq_lock); in rsxx_isr()
345 if (unlikely(card->eeh_state)) in rsxx_isr()
348 isr = ioread32(card->regmap + ISR); in rsxx_isr()
355 dev_info(CARD_TO_DEV(card), in rsxx_isr()
360 isr &= card->isr_mask; in rsxx_isr()
364 for (i = 0; i < card->n_targets; i++) { in rsxx_isr()
366 if (card->ier_mask & CR_INTR_DMA(i)) { in rsxx_isr()
367 rsxx_disable_ier(card, CR_INTR_DMA(i)); in rsxx_isr()
370 queue_work(card->ctrl[i].done_wq, in rsxx_isr()
371 &card->ctrl[i].dma_done_work); in rsxx_isr()
377 queue_work(card->creg_ctrl.creg_wq, in rsxx_isr()
378 &card->creg_ctrl.done_work); in rsxx_isr()
383 queue_work(card->event_wq, &card->event_work); in rsxx_isr()
384 rsxx_disable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_isr()
389 spin_unlock(&card->irq_lock); in rsxx_isr()
406 static void card_state_change(struct rsxx_cardinfo *card, in card_state_change() argument
411 dev_info(CARD_TO_DEV(card), in card_state_change()
413 rsxx_card_state_to_str(card->state), in card_state_change()
416 card->state = new_state; in card_state_change()
419 if (!card->config_valid) in card_state_change()
424 dev_crit(CARD_TO_DEV(card), in card_state_change()
432 st = rsxx_get_card_size8(card, &card->size8); in card_state_change()
434 dev_err(CARD_TO_DEV(card), in card_state_change()
437 if (card->config_valid) in card_state_change()
438 set_capacity(card->gendisk, card->size8 >> 9); in card_state_change()
442 dev_crit(CARD_TO_DEV(card), in card_state_change()
457 set_capacity(card->gendisk, 0); in card_state_change()
464 struct rsxx_cardinfo *card; in card_event_handler() local
469 card = container_of(work, struct rsxx_cardinfo, event_work); in card_event_handler()
471 if (unlikely(card->halt)) in card_event_handler()
479 spin_lock_irqsave(&card->irq_lock, flags); in card_event_handler()
480 rsxx_enable_ier_and_isr(card, CR_INTR_EVENT); in card_event_handler()
481 spin_unlock_irqrestore(&card->irq_lock, flags); in card_event_handler()
483 st = rsxx_get_card_state(card, &state); in card_event_handler()
485 dev_info(CARD_TO_DEV(card), in card_event_handler()
490 if (card->state != state) in card_event_handler()
491 card_state_change(card, state); in card_event_handler()
493 if (card->creg_ctrl.creg_stats.stat & CREG_STAT_LOG_PENDING) in card_event_handler()
494 rsxx_read_hw_log(card); in card_event_handler()
498 static int card_shutdown(struct rsxx_cardinfo *card) in card_shutdown() argument
508 st = rsxx_get_card_state(card, &state); in card_shutdown()
520 st = rsxx_issue_card_cmd(card, CARD_CMD_SHUTDOWN); in card_shutdown()
527 st = rsxx_get_card_state(card, &state); in card_shutdown()
541 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_eeh_frozen() local
547 card->eeh_state = 1; in rsxx_eeh_frozen()
548 rsxx_mask_interrupts(card); in rsxx_eeh_frozen()
559 st = rsxx_eeh_save_issued_dmas(card); in rsxx_eeh_frozen()
563 rsxx_eeh_save_issued_creg(card); in rsxx_eeh_frozen()
565 for (i = 0; i < card->n_targets; i++) { in rsxx_eeh_frozen()
566 if (card->ctrl[i].status.buf) in rsxx_eeh_frozen()
567 dma_free_coherent(&card->dev->dev, in rsxx_eeh_frozen()
569 card->ctrl[i].status.buf, in rsxx_eeh_frozen()
570 card->ctrl[i].status.dma_addr); in rsxx_eeh_frozen()
571 if (card->ctrl[i].cmd.buf) in rsxx_eeh_frozen()
572 dma_free_coherent(&card->dev->dev, in rsxx_eeh_frozen()
574 card->ctrl[i].cmd.buf, in rsxx_eeh_frozen()
575 card->ctrl[i].cmd.dma_addr); in rsxx_eeh_frozen()
583 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_eeh_failure() local
589 card->eeh_state = 1; in rsxx_eeh_failure()
590 card->halt = 1; in rsxx_eeh_failure()
592 for (i = 0; i < card->n_targets; i++) { in rsxx_eeh_failure()
593 spin_lock_bh(&card->ctrl[i].queue_lock); in rsxx_eeh_failure()
594 cnt = rsxx_cleanup_dma_queue(&card->ctrl[i], in rsxx_eeh_failure()
595 &card->ctrl[i].queue, in rsxx_eeh_failure()
597 spin_unlock_bh(&card->ctrl[i].queue_lock); in rsxx_eeh_failure()
599 cnt += rsxx_dma_cancel(&card->ctrl[i]); in rsxx_eeh_failure()
602 dev_info(CARD_TO_DEV(card), in rsxx_eeh_failure()
604 cnt, card->ctrl[i].id); in rsxx_eeh_failure()
608 static int rsxx_eeh_fifo_flush_poll(struct rsxx_cardinfo *card) in rsxx_eeh_fifo_flush_poll() argument
615 status = ioread32(card->regmap + PCI_RECONFIG); in rsxx_eeh_fifo_flush_poll()
623 dev_warn(CARD_TO_DEV(card), "HW: flash controller timeout\n"); in rsxx_eeh_fifo_flush_poll()
656 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_slot_reset() local
670 st = rsxx_eeh_fifo_flush_poll(card); in rsxx_slot_reset()
674 rsxx_dma_queue_reset(card); in rsxx_slot_reset()
676 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
677 st = rsxx_hw_buffers_init(dev, &card->ctrl[i]); in rsxx_slot_reset()
682 if (card->config_valid) in rsxx_slot_reset()
683 rsxx_dma_configure(card); in rsxx_slot_reset()
686 st = ioread32(card->regmap + ISR); in rsxx_slot_reset()
688 card->eeh_state = 0; in rsxx_slot_reset()
690 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_slot_reset()
691 if (card->n_targets & RSXX_MAX_TARGETS) in rsxx_slot_reset()
692 rsxx_enable_ier_and_isr(card, CR_INTR_ALL_G); in rsxx_slot_reset()
694 rsxx_enable_ier_and_isr(card, CR_INTR_ALL_C); in rsxx_slot_reset()
695 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_slot_reset()
697 rsxx_kick_creg_queue(card); in rsxx_slot_reset()
699 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
700 spin_lock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
701 if (list_empty(&card->ctrl[i].queue)) { in rsxx_slot_reset()
702 spin_unlock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
705 spin_unlock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
707 queue_work(card->ctrl[i].issue_wq, in rsxx_slot_reset()
708 &card->ctrl[i].issue_dma_work); in rsxx_slot_reset()
716 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
717 if (card->ctrl[i].status.buf) in rsxx_slot_reset()
718 dma_free_coherent(&card->dev->dev, in rsxx_slot_reset()
720 card->ctrl[i].status.buf, in rsxx_slot_reset()
721 card->ctrl[i].status.dma_addr); in rsxx_slot_reset()
722 if (card->ctrl[i].cmd.buf) in rsxx_slot_reset()
723 dma_free_coherent(&card->dev->dev, in rsxx_slot_reset()
725 card->ctrl[i].cmd.buf, in rsxx_slot_reset()
726 card->ctrl[i].cmd.dma_addr); in rsxx_slot_reset()
737 static int rsxx_compatibility_check(struct rsxx_cardinfo *card) in rsxx_compatibility_check() argument
741 pci_read_config_byte(card->dev, PCI_REVISION_ID, &pci_rev); in rsxx_compatibility_check()
751 struct rsxx_cardinfo *card; in rsxx_pci_probe() local
757 card = kzalloc(sizeof(*card), GFP_KERNEL); in rsxx_pci_probe()
758 if (!card) in rsxx_pci_probe()
761 card->dev = dev; in rsxx_pci_probe()
762 pci_set_drvdata(dev, card); in rsxx_pci_probe()
767 card->disk_id = st; in rsxx_pci_probe()
777 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
784 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
790 dev_err(CARD_TO_DEV(card), "BAR0 has length 0!\n"); in rsxx_pci_probe()
795 card->regmap = pci_iomap(dev, 0, 0); in rsxx_pci_probe()
796 if (!card->regmap) { in rsxx_pci_probe()
797 dev_err(CARD_TO_DEV(card), "Failed to map BAR0\n"); in rsxx_pci_probe()
802 spin_lock_init(&card->irq_lock); in rsxx_pci_probe()
803 card->halt = 0; in rsxx_pci_probe()
804 card->eeh_state = 0; in rsxx_pci_probe()
806 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
807 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_probe()
808 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
813 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
818 DRIVER_NAME, card); in rsxx_pci_probe()
820 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
826 st = rsxx_creg_setup(card); in rsxx_pci_probe()
828 dev_err(CARD_TO_DEV(card), "Failed to setup creg interface.\n"); in rsxx_pci_probe()
832 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
833 rsxx_enable_ier_and_isr(card, CR_INTR_CREG); in rsxx_pci_probe()
834 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
836 st = rsxx_compatibility_check(card); in rsxx_pci_probe()
838 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
845 st = rsxx_load_config(card); in rsxx_pci_probe()
847 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
851 st = rsxx_get_num_targets(card, &card->n_targets); in rsxx_pci_probe()
853 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
856 card->ctrl = kcalloc(card->n_targets, sizeof(*card->ctrl), in rsxx_pci_probe()
858 if (!card->ctrl) { in rsxx_pci_probe()
863 st = rsxx_dma_setup(card); in rsxx_pci_probe()
865 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
871 card->event_wq = create_singlethread_workqueue(DRIVER_NAME"_event"); in rsxx_pci_probe()
872 if (!card->event_wq) { in rsxx_pci_probe()
873 dev_err(CARD_TO_DEV(card), "Failed card event setup.\n"); in rsxx_pci_probe()
878 INIT_WORK(&card->event_work, card_event_handler); in rsxx_pci_probe()
880 st = rsxx_setup_dev(card); in rsxx_pci_probe()
884 rsxx_get_card_state(card, &card->state); in rsxx_pci_probe()
886 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
888 rsxx_card_state_to_str(card->state)); in rsxx_pci_probe()
895 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
896 rsxx_enable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_pci_probe()
897 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
899 if (card->state == CARD_STATE_SHUTDOWN) { in rsxx_pci_probe()
900 st = rsxx_issue_card_cmd(card, CARD_CMD_STARTUP); in rsxx_pci_probe()
902 dev_crit(CARD_TO_DEV(card), in rsxx_pci_probe()
907 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
914 rsxx_get_card_state(card, &card->state); in rsxx_pci_probe()
916 (card->state == CARD_STATE_STARTING)); in rsxx_pci_probe()
918 if (card->state == CARD_STATE_STARTING) { in rsxx_pci_probe()
919 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
921 card->size8 = 0; in rsxx_pci_probe()
923 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
925 rsxx_card_state_to_str(card->state)); in rsxx_pci_probe()
926 st = rsxx_get_card_size8(card, &card->size8); in rsxx_pci_probe()
928 card->size8 = 0; in rsxx_pci_probe()
931 } else if (card->state == CARD_STATE_GOOD || in rsxx_pci_probe()
932 card->state == CARD_STATE_RD_ONLY_FAULT) { in rsxx_pci_probe()
933 st = rsxx_get_card_size8(card, &card->size8); in rsxx_pci_probe()
935 card->size8 = 0; in rsxx_pci_probe()
938 rsxx_attach_dev(card); in rsxx_pci_probe()
941 rsxx_debugfs_dev_new(card); in rsxx_pci_probe()
946 destroy_workqueue(card->event_wq); in rsxx_pci_probe()
947 card->event_wq = NULL; in rsxx_pci_probe()
949 rsxx_dma_destroy(card); in rsxx_pci_probe()
952 destroy_workqueue(card->creg_ctrl.creg_wq); in rsxx_pci_probe()
953 card->creg_ctrl.creg_wq = NULL; in rsxx_pci_probe()
955 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
956 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_probe()
957 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
958 free_irq(dev->irq, card); in rsxx_pci_probe()
962 pci_iounmap(dev, card->regmap); in rsxx_pci_probe()
969 ida_free(&rsxx_disk_ida, card->disk_id); in rsxx_pci_probe()
971 kfree(card); in rsxx_pci_probe()
978 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_pci_remove() local
983 if (!card) in rsxx_pci_remove()
986 dev_info(CARD_TO_DEV(card), in rsxx_pci_remove()
989 rsxx_detach_dev(card); in rsxx_pci_remove()
991 for (i = 0; i < card->n_targets; i++) { in rsxx_pci_remove()
992 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
993 rsxx_disable_ier_and_isr(card, CR_INTR_DMA(i)); in rsxx_pci_remove()
994 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
997 st = card_shutdown(card); in rsxx_pci_remove()
999 dev_crit(CARD_TO_DEV(card), "Shutdown failed!\n"); in rsxx_pci_remove()
1002 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1003 rsxx_disable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_pci_remove()
1004 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1006 cancel_work_sync(&card->event_work); in rsxx_pci_remove()
1008 destroy_workqueue(card->event_wq); in rsxx_pci_remove()
1009 rsxx_destroy_dev(card); in rsxx_pci_remove()
1010 rsxx_dma_destroy(card); in rsxx_pci_remove()
1011 destroy_workqueue(card->creg_ctrl.creg_wq); in rsxx_pci_remove()
1013 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1014 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_remove()
1015 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1018 card->halt = 1; in rsxx_pci_remove()
1020 debugfs_remove_recursive(card->debugfs_dir); in rsxx_pci_remove()
1022 free_irq(dev->irq, card); in rsxx_pci_remove()
1027 rsxx_creg_destroy(card); in rsxx_pci_remove()
1029 pci_iounmap(dev, card->regmap); in rsxx_pci_remove()
1034 ida_free(&rsxx_disk_ida, card->disk_id); in rsxx_pci_remove()
1035 kfree(card); in rsxx_pci_remove()
1046 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_pci_shutdown() local
1050 if (!card) in rsxx_pci_shutdown()
1053 dev_info(CARD_TO_DEV(card), "Shutting down PCI-Flash SSD.\n"); in rsxx_pci_shutdown()
1055 rsxx_detach_dev(card); in rsxx_pci_shutdown()
1057 for (i = 0; i < card->n_targets; i++) { in rsxx_pci_shutdown()
1058 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_shutdown()
1059 rsxx_disable_ier_and_isr(card, CR_INTR_DMA(i)); in rsxx_pci_shutdown()
1060 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_shutdown()
1063 card_shutdown(card); in rsxx_pci_shutdown()