Lines Matching refs:card

66 	struct rsxx_cardinfo *card = m->private;  in rsxx_attr_pci_regs_show()  local
69 ioread32(card->regmap + HWID)); in rsxx_attr_pci_regs_show()
71 ioread32(card->regmap + SCRATCH)); in rsxx_attr_pci_regs_show()
73 ioread32(card->regmap + IER)); in rsxx_attr_pci_regs_show()
75 ioread32(card->regmap + IPR)); in rsxx_attr_pci_regs_show()
77 ioread32(card->regmap + CREG_CMD)); in rsxx_attr_pci_regs_show()
79 ioread32(card->regmap + CREG_ADD)); in rsxx_attr_pci_regs_show()
81 ioread32(card->regmap + CREG_CNT)); in rsxx_attr_pci_regs_show()
83 ioread32(card->regmap + CREG_STAT)); in rsxx_attr_pci_regs_show()
85 ioread32(card->regmap + CREG_DATA0)); in rsxx_attr_pci_regs_show()
87 ioread32(card->regmap + CREG_DATA1)); in rsxx_attr_pci_regs_show()
89 ioread32(card->regmap + CREG_DATA2)); in rsxx_attr_pci_regs_show()
91 ioread32(card->regmap + CREG_DATA3)); in rsxx_attr_pci_regs_show()
93 ioread32(card->regmap + CREG_DATA4)); in rsxx_attr_pci_regs_show()
95 ioread32(card->regmap + CREG_DATA5)); in rsxx_attr_pci_regs_show()
97 ioread32(card->regmap + CREG_DATA6)); in rsxx_attr_pci_regs_show()
99 ioread32(card->regmap + CREG_DATA7)); in rsxx_attr_pci_regs_show()
101 ioread32(card->regmap + INTR_COAL)); in rsxx_attr_pci_regs_show()
103 ioread32(card->regmap + HW_ERROR)); in rsxx_attr_pci_regs_show()
105 ioread32(card->regmap + PCI_DEBUG0)); in rsxx_attr_pci_regs_show()
107 ioread32(card->regmap + PCI_DEBUG1)); in rsxx_attr_pci_regs_show()
109 ioread32(card->regmap + PCI_DEBUG2)); in rsxx_attr_pci_regs_show()
111 ioread32(card->regmap + PCI_DEBUG3)); in rsxx_attr_pci_regs_show()
113 ioread32(card->regmap + PCI_DEBUG4)); in rsxx_attr_pci_regs_show()
115 ioread32(card->regmap + PCI_DEBUG5)); in rsxx_attr_pci_regs_show()
117 ioread32(card->regmap + PCI_DEBUG6)); in rsxx_attr_pci_regs_show()
119 ioread32(card->regmap + PCI_DEBUG7)); in rsxx_attr_pci_regs_show()
121 ioread32(card->regmap + PCI_RECONFIG)); in rsxx_attr_pci_regs_show()
128 struct rsxx_cardinfo *card = m->private; in rsxx_attr_stats_show() local
131 for (i = 0; i < card->n_targets; i++) { in rsxx_attr_stats_show()
133 i, card->ctrl[i].stats.crc_errors); in rsxx_attr_stats_show()
135 i, card->ctrl[i].stats.hard_errors); in rsxx_attr_stats_show()
137 i, card->ctrl[i].stats.soft_errors); in rsxx_attr_stats_show()
139 i, card->ctrl[i].stats.writes_issued); in rsxx_attr_stats_show()
141 i, card->ctrl[i].stats.writes_failed); in rsxx_attr_stats_show()
143 i, card->ctrl[i].stats.reads_issued); in rsxx_attr_stats_show()
145 i, card->ctrl[i].stats.reads_failed); in rsxx_attr_stats_show()
147 i, card->ctrl[i].stats.reads_retried); in rsxx_attr_stats_show()
149 i, card->ctrl[i].stats.discards_issued); in rsxx_attr_stats_show()
151 i, card->ctrl[i].stats.discards_failed); in rsxx_attr_stats_show()
153 i, card->ctrl[i].stats.dma_sw_err); in rsxx_attr_stats_show()
155 i, card->ctrl[i].stats.dma_hw_fault); in rsxx_attr_stats_show()
157 i, card->ctrl[i].stats.dma_cancelled); in rsxx_attr_stats_show()
159 i, card->ctrl[i].stats.sw_q_depth); in rsxx_attr_stats_show()
161 i, atomic_read(&card->ctrl[i].stats.hw_q_depth)); in rsxx_attr_stats_show()
180 struct rsxx_cardinfo *card = file_inode(fp)->i_private; in rsxx_cram_read() local
188 st = rsxx_creg_read(card, CREG_ADD_CRAM + (u32)*ppos, cnt, buf, 1); in rsxx_cram_read()
201 struct rsxx_cardinfo *card = file_inode(fp)->i_private; in rsxx_cram_write() local
209 st = rsxx_creg_write(card, CREG_ADD_CRAM + (u32)*ppos, cnt, buf, 1); in rsxx_cram_write()
239 static void rsxx_debugfs_dev_new(struct rsxx_cardinfo *card) in rsxx_debugfs_dev_new() argument
245 card->debugfs_dir = debugfs_create_dir(card->gendisk->disk_name, NULL); in rsxx_debugfs_dev_new()
246 if (IS_ERR_OR_NULL(card->debugfs_dir)) in rsxx_debugfs_dev_new()
250 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
256 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
262 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
273 debugfs_remove(card->debugfs_dir); in rsxx_debugfs_dev_new()
275 card->debugfs_dir = NULL; in rsxx_debugfs_dev_new()
280 static void rsxx_mask_interrupts(struct rsxx_cardinfo *card) in rsxx_mask_interrupts() argument
282 card->isr_mask = 0; in rsxx_mask_interrupts()
283 card->ier_mask = 0; in rsxx_mask_interrupts()
303 void rsxx_enable_ier(struct rsxx_cardinfo *card, unsigned int intr) in rsxx_enable_ier() argument
305 if (unlikely(card->halt) || in rsxx_enable_ier()
306 unlikely(card->eeh_state)) in rsxx_enable_ier()
309 __enable_intr(&card->ier_mask, intr); in rsxx_enable_ier()
310 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_enable_ier()
313 void rsxx_disable_ier(struct rsxx_cardinfo *card, unsigned int intr) in rsxx_disable_ier() argument
315 if (unlikely(card->eeh_state)) in rsxx_disable_ier()
318 __disable_intr(&card->ier_mask, intr); in rsxx_disable_ier()
319 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_disable_ier()
322 void rsxx_enable_ier_and_isr(struct rsxx_cardinfo *card, in rsxx_enable_ier_and_isr() argument
325 if (unlikely(card->halt) || in rsxx_enable_ier_and_isr()
326 unlikely(card->eeh_state)) in rsxx_enable_ier_and_isr()
329 __enable_intr(&card->isr_mask, intr); in rsxx_enable_ier_and_isr()
330 __enable_intr(&card->ier_mask, intr); in rsxx_enable_ier_and_isr()
331 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_enable_ier_and_isr()
333 void rsxx_disable_ier_and_isr(struct rsxx_cardinfo *card, in rsxx_disable_ier_and_isr() argument
336 if (unlikely(card->eeh_state)) in rsxx_disable_ier_and_isr()
339 __disable_intr(&card->isr_mask, intr); in rsxx_disable_ier_and_isr()
340 __disable_intr(&card->ier_mask, intr); in rsxx_disable_ier_and_isr()
341 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_disable_ier_and_isr()
346 struct rsxx_cardinfo *card = pdata; in rsxx_isr() local
352 spin_lock(&card->irq_lock); in rsxx_isr()
357 if (unlikely(card->eeh_state)) in rsxx_isr()
360 isr = ioread32(card->regmap + ISR); in rsxx_isr()
367 dev_info(CARD_TO_DEV(card), in rsxx_isr()
372 isr &= card->isr_mask; in rsxx_isr()
376 for (i = 0; i < card->n_targets; i++) { in rsxx_isr()
378 if (card->ier_mask & CR_INTR_DMA(i)) { in rsxx_isr()
379 rsxx_disable_ier(card, CR_INTR_DMA(i)); in rsxx_isr()
382 queue_work(card->ctrl[i].done_wq, in rsxx_isr()
383 &card->ctrl[i].dma_done_work); in rsxx_isr()
389 queue_work(card->creg_ctrl.creg_wq, in rsxx_isr()
390 &card->creg_ctrl.done_work); in rsxx_isr()
395 queue_work(card->event_wq, &card->event_work); in rsxx_isr()
396 rsxx_disable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_isr()
401 spin_unlock(&card->irq_lock); in rsxx_isr()
418 static void card_state_change(struct rsxx_cardinfo *card, in card_state_change() argument
423 dev_info(CARD_TO_DEV(card), in card_state_change()
425 rsxx_card_state_to_str(card->state), in card_state_change()
428 card->state = new_state; in card_state_change()
431 if (!card->config_valid) in card_state_change()
436 dev_crit(CARD_TO_DEV(card), in card_state_change()
443 st = rsxx_get_card_size8(card, &card->size8); in card_state_change()
445 dev_err(CARD_TO_DEV(card), in card_state_change()
448 if (card->config_valid) in card_state_change()
449 set_capacity(card->gendisk, card->size8 >> 9); in card_state_change()
453 dev_crit(CARD_TO_DEV(card), in card_state_change()
468 set_capacity(card->gendisk, 0); in card_state_change()
475 struct rsxx_cardinfo *card; in card_event_handler() local
480 card = container_of(work, struct rsxx_cardinfo, event_work); in card_event_handler()
482 if (unlikely(card->halt)) in card_event_handler()
490 spin_lock_irqsave(&card->irq_lock, flags); in card_event_handler()
491 rsxx_enable_ier_and_isr(card, CR_INTR_EVENT); in card_event_handler()
492 spin_unlock_irqrestore(&card->irq_lock, flags); in card_event_handler()
494 st = rsxx_get_card_state(card, &state); in card_event_handler()
496 dev_info(CARD_TO_DEV(card), in card_event_handler()
501 if (card->state != state) in card_event_handler()
502 card_state_change(card, state); in card_event_handler()
504 if (card->creg_ctrl.creg_stats.stat & CREG_STAT_LOG_PENDING) in card_event_handler()
505 rsxx_read_hw_log(card); in card_event_handler()
509 static int card_shutdown(struct rsxx_cardinfo *card) in card_shutdown() argument
519 st = rsxx_get_card_state(card, &state); in card_shutdown()
531 st = rsxx_issue_card_cmd(card, CARD_CMD_SHUTDOWN); in card_shutdown()
538 st = rsxx_get_card_state(card, &state); in card_shutdown()
552 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_eeh_frozen() local
558 card->eeh_state = 1; in rsxx_eeh_frozen()
559 rsxx_mask_interrupts(card); in rsxx_eeh_frozen()
570 st = rsxx_eeh_save_issued_dmas(card); in rsxx_eeh_frozen()
574 rsxx_eeh_save_issued_creg(card); in rsxx_eeh_frozen()
576 for (i = 0; i < card->n_targets; i++) { in rsxx_eeh_frozen()
577 if (card->ctrl[i].status.buf) in rsxx_eeh_frozen()
578 pci_free_consistent(card->dev, STATUS_BUFFER_SIZE8, in rsxx_eeh_frozen()
579 card->ctrl[i].status.buf, in rsxx_eeh_frozen()
580 card->ctrl[i].status.dma_addr); in rsxx_eeh_frozen()
581 if (card->ctrl[i].cmd.buf) in rsxx_eeh_frozen()
582 pci_free_consistent(card->dev, COMMAND_BUFFER_SIZE8, in rsxx_eeh_frozen()
583 card->ctrl[i].cmd.buf, in rsxx_eeh_frozen()
584 card->ctrl[i].cmd.dma_addr); in rsxx_eeh_frozen()
592 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_eeh_failure() local
598 card->eeh_state = 1; in rsxx_eeh_failure()
599 card->halt = 1; in rsxx_eeh_failure()
601 for (i = 0; i < card->n_targets; i++) { in rsxx_eeh_failure()
602 spin_lock_bh(&card->ctrl[i].queue_lock); in rsxx_eeh_failure()
603 cnt = rsxx_cleanup_dma_queue(&card->ctrl[i], in rsxx_eeh_failure()
604 &card->ctrl[i].queue, in rsxx_eeh_failure()
606 spin_unlock_bh(&card->ctrl[i].queue_lock); in rsxx_eeh_failure()
608 cnt += rsxx_dma_cancel(&card->ctrl[i]); in rsxx_eeh_failure()
611 dev_info(CARD_TO_DEV(card), in rsxx_eeh_failure()
613 cnt, card->ctrl[i].id); in rsxx_eeh_failure()
617 static int rsxx_eeh_fifo_flush_poll(struct rsxx_cardinfo *card) in rsxx_eeh_fifo_flush_poll() argument
624 status = ioread32(card->regmap + PCI_RECONFIG); in rsxx_eeh_fifo_flush_poll()
632 dev_warn(CARD_TO_DEV(card), "HW: flash controller timeout\n"); in rsxx_eeh_fifo_flush_poll()
665 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_slot_reset() local
679 st = rsxx_eeh_fifo_flush_poll(card); in rsxx_slot_reset()
683 rsxx_dma_queue_reset(card); in rsxx_slot_reset()
685 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
686 st = rsxx_hw_buffers_init(dev, &card->ctrl[i]); in rsxx_slot_reset()
691 if (card->config_valid) in rsxx_slot_reset()
692 rsxx_dma_configure(card); in rsxx_slot_reset()
695 st = ioread32(card->regmap + ISR); in rsxx_slot_reset()
697 card->eeh_state = 0; in rsxx_slot_reset()
699 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_slot_reset()
700 if (card->n_targets & RSXX_MAX_TARGETS) in rsxx_slot_reset()
701 rsxx_enable_ier_and_isr(card, CR_INTR_ALL_G); in rsxx_slot_reset()
703 rsxx_enable_ier_and_isr(card, CR_INTR_ALL_C); in rsxx_slot_reset()
704 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_slot_reset()
706 rsxx_kick_creg_queue(card); in rsxx_slot_reset()
708 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
709 spin_lock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
710 if (list_empty(&card->ctrl[i].queue)) { in rsxx_slot_reset()
711 spin_unlock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
714 spin_unlock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
716 queue_work(card->ctrl[i].issue_wq, in rsxx_slot_reset()
717 &card->ctrl[i].issue_dma_work); in rsxx_slot_reset()
725 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
726 if (card->ctrl[i].status.buf) in rsxx_slot_reset()
727 pci_free_consistent(card->dev, in rsxx_slot_reset()
729 card->ctrl[i].status.buf, in rsxx_slot_reset()
730 card->ctrl[i].status.dma_addr); in rsxx_slot_reset()
731 if (card->ctrl[i].cmd.buf) in rsxx_slot_reset()
732 pci_free_consistent(card->dev, in rsxx_slot_reset()
734 card->ctrl[i].cmd.buf, in rsxx_slot_reset()
735 card->ctrl[i].cmd.dma_addr); in rsxx_slot_reset()
746 static int rsxx_compatibility_check(struct rsxx_cardinfo *card) in rsxx_compatibility_check() argument
750 pci_read_config_byte(card->dev, PCI_REVISION_ID, &pci_rev); in rsxx_compatibility_check()
760 struct rsxx_cardinfo *card; in rsxx_pci_probe() local
766 card = kzalloc(sizeof(*card), GFP_KERNEL); in rsxx_pci_probe()
767 if (!card) in rsxx_pci_probe()
770 card->dev = dev; in rsxx_pci_probe()
771 pci_set_drvdata(dev, card); in rsxx_pci_probe()
776 card->disk_id = st; in rsxx_pci_probe()
787 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
794 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
800 dev_err(CARD_TO_DEV(card), "BAR0 has length 0!\n"); in rsxx_pci_probe()
805 card->regmap = pci_iomap(dev, 0, 0); in rsxx_pci_probe()
806 if (!card->regmap) { in rsxx_pci_probe()
807 dev_err(CARD_TO_DEV(card), "Failed to map BAR0\n"); in rsxx_pci_probe()
812 spin_lock_init(&card->irq_lock); in rsxx_pci_probe()
813 card->halt = 0; in rsxx_pci_probe()
814 card->eeh_state = 0; in rsxx_pci_probe()
816 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
817 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_probe()
818 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
823 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
828 DRIVER_NAME, card); in rsxx_pci_probe()
830 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
836 st = rsxx_creg_setup(card); in rsxx_pci_probe()
838 dev_err(CARD_TO_DEV(card), "Failed to setup creg interface.\n"); in rsxx_pci_probe()
842 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
843 rsxx_enable_ier_and_isr(card, CR_INTR_CREG); in rsxx_pci_probe()
844 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
846 st = rsxx_compatibility_check(card); in rsxx_pci_probe()
848 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
855 st = rsxx_load_config(card); in rsxx_pci_probe()
857 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
861 st = rsxx_get_num_targets(card, &card->n_targets); in rsxx_pci_probe()
863 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
866 card->ctrl = kcalloc(card->n_targets, sizeof(*card->ctrl), in rsxx_pci_probe()
868 if (!card->ctrl) { in rsxx_pci_probe()
873 st = rsxx_dma_setup(card); in rsxx_pci_probe()
875 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
881 card->event_wq = create_singlethread_workqueue(DRIVER_NAME"_event"); in rsxx_pci_probe()
882 if (!card->event_wq) { in rsxx_pci_probe()
883 dev_err(CARD_TO_DEV(card), "Failed card event setup.\n"); in rsxx_pci_probe()
887 INIT_WORK(&card->event_work, card_event_handler); in rsxx_pci_probe()
889 st = rsxx_setup_dev(card); in rsxx_pci_probe()
893 rsxx_get_card_state(card, &card->state); in rsxx_pci_probe()
895 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
897 rsxx_card_state_to_str(card->state)); in rsxx_pci_probe()
904 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
905 rsxx_enable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_pci_probe()
906 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
908 if (card->state == CARD_STATE_SHUTDOWN) { in rsxx_pci_probe()
909 st = rsxx_issue_card_cmd(card, CARD_CMD_STARTUP); in rsxx_pci_probe()
911 dev_crit(CARD_TO_DEV(card), in rsxx_pci_probe()
916 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
923 rsxx_get_card_state(card, &card->state); in rsxx_pci_probe()
925 (card->state == CARD_STATE_STARTING)); in rsxx_pci_probe()
927 if (card->state == CARD_STATE_STARTING) { in rsxx_pci_probe()
928 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
930 card->size8 = 0; in rsxx_pci_probe()
932 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
934 rsxx_card_state_to_str(card->state)); in rsxx_pci_probe()
935 st = rsxx_get_card_size8(card, &card->size8); in rsxx_pci_probe()
937 card->size8 = 0; in rsxx_pci_probe()
940 } else if (card->state == CARD_STATE_GOOD || in rsxx_pci_probe()
941 card->state == CARD_STATE_RD_ONLY_FAULT) { in rsxx_pci_probe()
942 st = rsxx_get_card_size8(card, &card->size8); in rsxx_pci_probe()
944 card->size8 = 0; in rsxx_pci_probe()
947 rsxx_attach_dev(card); in rsxx_pci_probe()
950 rsxx_debugfs_dev_new(card); in rsxx_pci_probe()
955 destroy_workqueue(card->event_wq); in rsxx_pci_probe()
956 card->event_wq = NULL; in rsxx_pci_probe()
958 rsxx_dma_destroy(card); in rsxx_pci_probe()
961 destroy_workqueue(card->creg_ctrl.creg_wq); in rsxx_pci_probe()
962 card->creg_ctrl.creg_wq = NULL; in rsxx_pci_probe()
964 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
965 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_probe()
966 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
967 free_irq(dev->irq, card); in rsxx_pci_probe()
971 pci_iounmap(dev, card->regmap); in rsxx_pci_probe()
978 ida_free(&rsxx_disk_ida, card->disk_id); in rsxx_pci_probe()
980 kfree(card); in rsxx_pci_probe()
987 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_pci_remove() local
992 if (!card) in rsxx_pci_remove()
995 dev_info(CARD_TO_DEV(card), in rsxx_pci_remove()
998 rsxx_detach_dev(card); in rsxx_pci_remove()
1000 for (i = 0; i < card->n_targets; i++) { in rsxx_pci_remove()
1001 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1002 rsxx_disable_ier_and_isr(card, CR_INTR_DMA(i)); in rsxx_pci_remove()
1003 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1006 st = card_shutdown(card); in rsxx_pci_remove()
1008 dev_crit(CARD_TO_DEV(card), "Shutdown failed!\n"); in rsxx_pci_remove()
1011 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1012 rsxx_disable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_pci_remove()
1013 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1015 cancel_work_sync(&card->event_work); in rsxx_pci_remove()
1017 rsxx_destroy_dev(card); in rsxx_pci_remove()
1018 rsxx_dma_destroy(card); in rsxx_pci_remove()
1020 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1021 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_remove()
1022 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1025 card->halt = 1; in rsxx_pci_remove()
1027 debugfs_remove_recursive(card->debugfs_dir); in rsxx_pci_remove()
1029 free_irq(dev->irq, card); in rsxx_pci_remove()
1034 rsxx_creg_destroy(card); in rsxx_pci_remove()
1036 pci_iounmap(dev, card->regmap); in rsxx_pci_remove()
1041 ida_free(&rsxx_disk_ida, card->disk_id); in rsxx_pci_remove()
1042 kfree(card); in rsxx_pci_remove()
1053 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_pci_shutdown() local
1057 if (!card) in rsxx_pci_shutdown()
1060 dev_info(CARD_TO_DEV(card), "Shutting down PCI-Flash SSD.\n"); in rsxx_pci_shutdown()
1062 rsxx_detach_dev(card); in rsxx_pci_shutdown()
1064 for (i = 0; i < card->n_targets; i++) { in rsxx_pci_shutdown()
1065 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_shutdown()
1066 rsxx_disable_ier_and_isr(card, CR_INTR_DMA(i)); in rsxx_pci_shutdown()
1067 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_shutdown()
1070 card_shutdown(card); in rsxx_pci_shutdown()