Lines Matching refs:card
67 struct rsxx_cardinfo *card = m->private; in rsxx_attr_pci_regs_show() local
70 ioread32(card->regmap + HWID)); in rsxx_attr_pci_regs_show()
72 ioread32(card->regmap + SCRATCH)); in rsxx_attr_pci_regs_show()
74 ioread32(card->regmap + IER)); in rsxx_attr_pci_regs_show()
76 ioread32(card->regmap + IPR)); in rsxx_attr_pci_regs_show()
78 ioread32(card->regmap + CREG_CMD)); in rsxx_attr_pci_regs_show()
80 ioread32(card->regmap + CREG_ADD)); in rsxx_attr_pci_regs_show()
82 ioread32(card->regmap + CREG_CNT)); in rsxx_attr_pci_regs_show()
84 ioread32(card->regmap + CREG_STAT)); in rsxx_attr_pci_regs_show()
86 ioread32(card->regmap + CREG_DATA0)); in rsxx_attr_pci_regs_show()
88 ioread32(card->regmap + CREG_DATA1)); in rsxx_attr_pci_regs_show()
90 ioread32(card->regmap + CREG_DATA2)); in rsxx_attr_pci_regs_show()
92 ioread32(card->regmap + CREG_DATA3)); in rsxx_attr_pci_regs_show()
94 ioread32(card->regmap + CREG_DATA4)); in rsxx_attr_pci_regs_show()
96 ioread32(card->regmap + CREG_DATA5)); in rsxx_attr_pci_regs_show()
98 ioread32(card->regmap + CREG_DATA6)); in rsxx_attr_pci_regs_show()
100 ioread32(card->regmap + CREG_DATA7)); in rsxx_attr_pci_regs_show()
102 ioread32(card->regmap + INTR_COAL)); in rsxx_attr_pci_regs_show()
104 ioread32(card->regmap + HW_ERROR)); in rsxx_attr_pci_regs_show()
106 ioread32(card->regmap + PCI_DEBUG0)); in rsxx_attr_pci_regs_show()
108 ioread32(card->regmap + PCI_DEBUG1)); in rsxx_attr_pci_regs_show()
110 ioread32(card->regmap + PCI_DEBUG2)); in rsxx_attr_pci_regs_show()
112 ioread32(card->regmap + PCI_DEBUG3)); in rsxx_attr_pci_regs_show()
114 ioread32(card->regmap + PCI_DEBUG4)); in rsxx_attr_pci_regs_show()
116 ioread32(card->regmap + PCI_DEBUG5)); in rsxx_attr_pci_regs_show()
118 ioread32(card->regmap + PCI_DEBUG6)); in rsxx_attr_pci_regs_show()
120 ioread32(card->regmap + PCI_DEBUG7)); in rsxx_attr_pci_regs_show()
122 ioread32(card->regmap + PCI_RECONFIG)); in rsxx_attr_pci_regs_show()
129 struct rsxx_cardinfo *card = m->private; in rsxx_attr_stats_show() local
132 for (i = 0; i < card->n_targets; i++) { in rsxx_attr_stats_show()
134 i, card->ctrl[i].stats.crc_errors); in rsxx_attr_stats_show()
136 i, card->ctrl[i].stats.hard_errors); in rsxx_attr_stats_show()
138 i, card->ctrl[i].stats.soft_errors); in rsxx_attr_stats_show()
140 i, card->ctrl[i].stats.writes_issued); in rsxx_attr_stats_show()
142 i, card->ctrl[i].stats.writes_failed); in rsxx_attr_stats_show()
144 i, card->ctrl[i].stats.reads_issued); in rsxx_attr_stats_show()
146 i, card->ctrl[i].stats.reads_failed); in rsxx_attr_stats_show()
148 i, card->ctrl[i].stats.reads_retried); in rsxx_attr_stats_show()
150 i, card->ctrl[i].stats.discards_issued); in rsxx_attr_stats_show()
152 i, card->ctrl[i].stats.discards_failed); in rsxx_attr_stats_show()
154 i, card->ctrl[i].stats.dma_sw_err); in rsxx_attr_stats_show()
156 i, card->ctrl[i].stats.dma_hw_fault); in rsxx_attr_stats_show()
158 i, card->ctrl[i].stats.dma_cancelled); in rsxx_attr_stats_show()
160 i, card->ctrl[i].stats.sw_q_depth); in rsxx_attr_stats_show()
162 i, atomic_read(&card->ctrl[i].stats.hw_q_depth)); in rsxx_attr_stats_show()
181 struct rsxx_cardinfo *card = file_inode(fp)->i_private; in rsxx_cram_read() local
189 st = rsxx_creg_read(card, CREG_ADD_CRAM + (u32)*ppos, cnt, buf, 1); in rsxx_cram_read()
202 struct rsxx_cardinfo *card = file_inode(fp)->i_private; in rsxx_cram_write() local
212 st = rsxx_creg_write(card, CREG_ADD_CRAM + (u32)*ppos, cnt, in rsxx_cram_write()
243 static void rsxx_debugfs_dev_new(struct rsxx_cardinfo *card) in rsxx_debugfs_dev_new() argument
249 card->debugfs_dir = debugfs_create_dir(card->gendisk->disk_name, NULL); in rsxx_debugfs_dev_new()
250 if (IS_ERR_OR_NULL(card->debugfs_dir)) in rsxx_debugfs_dev_new()
254 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
260 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
266 card->debugfs_dir, card, in rsxx_debugfs_dev_new()
277 debugfs_remove(card->debugfs_dir); in rsxx_debugfs_dev_new()
279 card->debugfs_dir = NULL; in rsxx_debugfs_dev_new()
284 static void rsxx_mask_interrupts(struct rsxx_cardinfo *card) in rsxx_mask_interrupts() argument
286 card->isr_mask = 0; in rsxx_mask_interrupts()
287 card->ier_mask = 0; in rsxx_mask_interrupts()
307 void rsxx_enable_ier(struct rsxx_cardinfo *card, unsigned int intr) in rsxx_enable_ier() argument
309 if (unlikely(card->halt) || in rsxx_enable_ier()
310 unlikely(card->eeh_state)) in rsxx_enable_ier()
313 __enable_intr(&card->ier_mask, intr); in rsxx_enable_ier()
314 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_enable_ier()
317 void rsxx_disable_ier(struct rsxx_cardinfo *card, unsigned int intr) in rsxx_disable_ier() argument
319 if (unlikely(card->eeh_state)) in rsxx_disable_ier()
322 __disable_intr(&card->ier_mask, intr); in rsxx_disable_ier()
323 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_disable_ier()
326 void rsxx_enable_ier_and_isr(struct rsxx_cardinfo *card, in rsxx_enable_ier_and_isr() argument
329 if (unlikely(card->halt) || in rsxx_enable_ier_and_isr()
330 unlikely(card->eeh_state)) in rsxx_enable_ier_and_isr()
333 __enable_intr(&card->isr_mask, intr); in rsxx_enable_ier_and_isr()
334 __enable_intr(&card->ier_mask, intr); in rsxx_enable_ier_and_isr()
335 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_enable_ier_and_isr()
337 void rsxx_disable_ier_and_isr(struct rsxx_cardinfo *card, in rsxx_disable_ier_and_isr() argument
340 if (unlikely(card->eeh_state)) in rsxx_disable_ier_and_isr()
343 __disable_intr(&card->isr_mask, intr); in rsxx_disable_ier_and_isr()
344 __disable_intr(&card->ier_mask, intr); in rsxx_disable_ier_and_isr()
345 iowrite32(card->ier_mask, card->regmap + IER); in rsxx_disable_ier_and_isr()
350 struct rsxx_cardinfo *card = pdata; in rsxx_isr() local
356 spin_lock(&card->irq_lock); in rsxx_isr()
361 if (unlikely(card->eeh_state)) in rsxx_isr()
364 isr = ioread32(card->regmap + ISR); in rsxx_isr()
371 dev_info(CARD_TO_DEV(card), in rsxx_isr()
376 isr &= card->isr_mask; in rsxx_isr()
380 for (i = 0; i < card->n_targets; i++) { in rsxx_isr()
382 if (card->ier_mask & CR_INTR_DMA(i)) { in rsxx_isr()
383 rsxx_disable_ier(card, CR_INTR_DMA(i)); in rsxx_isr()
386 queue_work(card->ctrl[i].done_wq, in rsxx_isr()
387 &card->ctrl[i].dma_done_work); in rsxx_isr()
393 queue_work(card->creg_ctrl.creg_wq, in rsxx_isr()
394 &card->creg_ctrl.done_work); in rsxx_isr()
399 queue_work(card->event_wq, &card->event_work); in rsxx_isr()
400 rsxx_disable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_isr()
405 spin_unlock(&card->irq_lock); in rsxx_isr()
422 static void card_state_change(struct rsxx_cardinfo *card, in card_state_change() argument
427 dev_info(CARD_TO_DEV(card), in card_state_change()
429 rsxx_card_state_to_str(card->state), in card_state_change()
432 card->state = new_state; in card_state_change()
435 if (!card->config_valid) in card_state_change()
440 dev_crit(CARD_TO_DEV(card), in card_state_change()
447 st = rsxx_get_card_size8(card, &card->size8); in card_state_change()
449 dev_err(CARD_TO_DEV(card), in card_state_change()
452 if (card->config_valid) in card_state_change()
453 set_capacity(card->gendisk, card->size8 >> 9); in card_state_change()
457 dev_crit(CARD_TO_DEV(card), in card_state_change()
472 set_capacity(card->gendisk, 0); in card_state_change()
479 struct rsxx_cardinfo *card; in card_event_handler() local
484 card = container_of(work, struct rsxx_cardinfo, event_work); in card_event_handler()
486 if (unlikely(card->halt)) in card_event_handler()
494 spin_lock_irqsave(&card->irq_lock, flags); in card_event_handler()
495 rsxx_enable_ier_and_isr(card, CR_INTR_EVENT); in card_event_handler()
496 spin_unlock_irqrestore(&card->irq_lock, flags); in card_event_handler()
498 st = rsxx_get_card_state(card, &state); in card_event_handler()
500 dev_info(CARD_TO_DEV(card), in card_event_handler()
505 if (card->state != state) in card_event_handler()
506 card_state_change(card, state); in card_event_handler()
508 if (card->creg_ctrl.creg_stats.stat & CREG_STAT_LOG_PENDING) in card_event_handler()
509 rsxx_read_hw_log(card); in card_event_handler()
513 static int card_shutdown(struct rsxx_cardinfo *card) in card_shutdown() argument
523 st = rsxx_get_card_state(card, &state); in card_shutdown()
535 st = rsxx_issue_card_cmd(card, CARD_CMD_SHUTDOWN); in card_shutdown()
542 st = rsxx_get_card_state(card, &state); in card_shutdown()
556 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_eeh_frozen() local
562 card->eeh_state = 1; in rsxx_eeh_frozen()
563 rsxx_mask_interrupts(card); in rsxx_eeh_frozen()
574 st = rsxx_eeh_save_issued_dmas(card); in rsxx_eeh_frozen()
578 rsxx_eeh_save_issued_creg(card); in rsxx_eeh_frozen()
580 for (i = 0; i < card->n_targets; i++) { in rsxx_eeh_frozen()
581 if (card->ctrl[i].status.buf) in rsxx_eeh_frozen()
582 pci_free_consistent(card->dev, STATUS_BUFFER_SIZE8, in rsxx_eeh_frozen()
583 card->ctrl[i].status.buf, in rsxx_eeh_frozen()
584 card->ctrl[i].status.dma_addr); in rsxx_eeh_frozen()
585 if (card->ctrl[i].cmd.buf) in rsxx_eeh_frozen()
586 pci_free_consistent(card->dev, COMMAND_BUFFER_SIZE8, in rsxx_eeh_frozen()
587 card->ctrl[i].cmd.buf, in rsxx_eeh_frozen()
588 card->ctrl[i].cmd.dma_addr); in rsxx_eeh_frozen()
596 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_eeh_failure() local
602 card->eeh_state = 1; in rsxx_eeh_failure()
603 card->halt = 1; in rsxx_eeh_failure()
605 for (i = 0; i < card->n_targets; i++) { in rsxx_eeh_failure()
606 spin_lock_bh(&card->ctrl[i].queue_lock); in rsxx_eeh_failure()
607 cnt = rsxx_cleanup_dma_queue(&card->ctrl[i], in rsxx_eeh_failure()
608 &card->ctrl[i].queue, in rsxx_eeh_failure()
610 spin_unlock_bh(&card->ctrl[i].queue_lock); in rsxx_eeh_failure()
612 cnt += rsxx_dma_cancel(&card->ctrl[i]); in rsxx_eeh_failure()
615 dev_info(CARD_TO_DEV(card), in rsxx_eeh_failure()
617 cnt, card->ctrl[i].id); in rsxx_eeh_failure()
621 static int rsxx_eeh_fifo_flush_poll(struct rsxx_cardinfo *card) in rsxx_eeh_fifo_flush_poll() argument
628 status = ioread32(card->regmap + PCI_RECONFIG); in rsxx_eeh_fifo_flush_poll()
636 dev_warn(CARD_TO_DEV(card), "HW: flash controller timeout\n"); in rsxx_eeh_fifo_flush_poll()
669 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_slot_reset() local
683 st = rsxx_eeh_fifo_flush_poll(card); in rsxx_slot_reset()
687 rsxx_dma_queue_reset(card); in rsxx_slot_reset()
689 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
690 st = rsxx_hw_buffers_init(dev, &card->ctrl[i]); in rsxx_slot_reset()
695 if (card->config_valid) in rsxx_slot_reset()
696 rsxx_dma_configure(card); in rsxx_slot_reset()
699 st = ioread32(card->regmap + ISR); in rsxx_slot_reset()
701 card->eeh_state = 0; in rsxx_slot_reset()
703 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_slot_reset()
704 if (card->n_targets & RSXX_MAX_TARGETS) in rsxx_slot_reset()
705 rsxx_enable_ier_and_isr(card, CR_INTR_ALL_G); in rsxx_slot_reset()
707 rsxx_enable_ier_and_isr(card, CR_INTR_ALL_C); in rsxx_slot_reset()
708 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_slot_reset()
710 rsxx_kick_creg_queue(card); in rsxx_slot_reset()
712 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
713 spin_lock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
714 if (list_empty(&card->ctrl[i].queue)) { in rsxx_slot_reset()
715 spin_unlock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
718 spin_unlock(&card->ctrl[i].queue_lock); in rsxx_slot_reset()
720 queue_work(card->ctrl[i].issue_wq, in rsxx_slot_reset()
721 &card->ctrl[i].issue_dma_work); in rsxx_slot_reset()
729 for (i = 0; i < card->n_targets; i++) { in rsxx_slot_reset()
730 if (card->ctrl[i].status.buf) in rsxx_slot_reset()
731 pci_free_consistent(card->dev, in rsxx_slot_reset()
733 card->ctrl[i].status.buf, in rsxx_slot_reset()
734 card->ctrl[i].status.dma_addr); in rsxx_slot_reset()
735 if (card->ctrl[i].cmd.buf) in rsxx_slot_reset()
736 pci_free_consistent(card->dev, in rsxx_slot_reset()
738 card->ctrl[i].cmd.buf, in rsxx_slot_reset()
739 card->ctrl[i].cmd.dma_addr); in rsxx_slot_reset()
750 static int rsxx_compatibility_check(struct rsxx_cardinfo *card) in rsxx_compatibility_check() argument
754 pci_read_config_byte(card->dev, PCI_REVISION_ID, &pci_rev); in rsxx_compatibility_check()
764 struct rsxx_cardinfo *card; in rsxx_pci_probe() local
770 card = kzalloc(sizeof(*card), GFP_KERNEL); in rsxx_pci_probe()
771 if (!card) in rsxx_pci_probe()
774 card->dev = dev; in rsxx_pci_probe()
775 pci_set_drvdata(dev, card); in rsxx_pci_probe()
784 st = ida_get_new(&rsxx_disk_ida, &card->disk_id); in rsxx_pci_probe()
800 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
807 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
813 dev_err(CARD_TO_DEV(card), "BAR0 has length 0!\n"); in rsxx_pci_probe()
818 card->regmap = pci_iomap(dev, 0, 0); in rsxx_pci_probe()
819 if (!card->regmap) { in rsxx_pci_probe()
820 dev_err(CARD_TO_DEV(card), "Failed to map BAR0\n"); in rsxx_pci_probe()
825 spin_lock_init(&card->irq_lock); in rsxx_pci_probe()
826 card->halt = 0; in rsxx_pci_probe()
827 card->eeh_state = 0; in rsxx_pci_probe()
829 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
830 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_probe()
831 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
836 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
841 DRIVER_NAME, card); in rsxx_pci_probe()
843 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
849 st = rsxx_creg_setup(card); in rsxx_pci_probe()
851 dev_err(CARD_TO_DEV(card), "Failed to setup creg interface.\n"); in rsxx_pci_probe()
855 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
856 rsxx_enable_ier_and_isr(card, CR_INTR_CREG); in rsxx_pci_probe()
857 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
859 st = rsxx_compatibility_check(card); in rsxx_pci_probe()
861 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
868 st = rsxx_load_config(card); in rsxx_pci_probe()
870 dev_err(CARD_TO_DEV(card), in rsxx_pci_probe()
874 st = rsxx_get_num_targets(card, &card->n_targets); in rsxx_pci_probe()
876 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
879 card->ctrl = kzalloc(card->n_targets * sizeof(*card->ctrl), GFP_KERNEL); in rsxx_pci_probe()
880 if (!card->ctrl) { in rsxx_pci_probe()
885 st = rsxx_dma_setup(card); in rsxx_pci_probe()
887 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
893 card->event_wq = create_singlethread_workqueue(DRIVER_NAME"_event"); in rsxx_pci_probe()
894 if (!card->event_wq) { in rsxx_pci_probe()
895 dev_err(CARD_TO_DEV(card), "Failed card event setup.\n"); in rsxx_pci_probe()
899 INIT_WORK(&card->event_work, card_event_handler); in rsxx_pci_probe()
901 st = rsxx_setup_dev(card); in rsxx_pci_probe()
905 rsxx_get_card_state(card, &card->state); in rsxx_pci_probe()
907 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
909 rsxx_card_state_to_str(card->state)); in rsxx_pci_probe()
916 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
917 rsxx_enable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_pci_probe()
918 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
920 if (card->state == CARD_STATE_SHUTDOWN) { in rsxx_pci_probe()
921 st = rsxx_issue_card_cmd(card, CARD_CMD_STARTUP); in rsxx_pci_probe()
923 dev_crit(CARD_TO_DEV(card), in rsxx_pci_probe()
928 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
935 rsxx_get_card_state(card, &card->state); in rsxx_pci_probe()
937 (card->state == CARD_STATE_STARTING)); in rsxx_pci_probe()
939 if (card->state == CARD_STATE_STARTING) { in rsxx_pci_probe()
940 dev_warn(CARD_TO_DEV(card), in rsxx_pci_probe()
942 card->size8 = 0; in rsxx_pci_probe()
944 dev_info(CARD_TO_DEV(card), in rsxx_pci_probe()
946 rsxx_card_state_to_str(card->state)); in rsxx_pci_probe()
947 st = rsxx_get_card_size8(card, &card->size8); in rsxx_pci_probe()
949 card->size8 = 0; in rsxx_pci_probe()
952 } else if (card->state == CARD_STATE_GOOD || in rsxx_pci_probe()
953 card->state == CARD_STATE_RD_ONLY_FAULT) { in rsxx_pci_probe()
954 st = rsxx_get_card_size8(card, &card->size8); in rsxx_pci_probe()
956 card->size8 = 0; in rsxx_pci_probe()
959 rsxx_attach_dev(card); in rsxx_pci_probe()
962 rsxx_debugfs_dev_new(card); in rsxx_pci_probe()
967 destroy_workqueue(card->event_wq); in rsxx_pci_probe()
968 card->event_wq = NULL; in rsxx_pci_probe()
970 rsxx_dma_destroy(card); in rsxx_pci_probe()
973 destroy_workqueue(card->creg_ctrl.creg_wq); in rsxx_pci_probe()
974 card->creg_ctrl.creg_wq = NULL; in rsxx_pci_probe()
976 spin_lock_irq(&card->irq_lock); in rsxx_pci_probe()
977 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_probe()
978 spin_unlock_irq(&card->irq_lock); in rsxx_pci_probe()
979 free_irq(dev->irq, card); in rsxx_pci_probe()
983 pci_iounmap(dev, card->regmap); in rsxx_pci_probe()
991 ida_remove(&rsxx_disk_ida, card->disk_id); in rsxx_pci_probe()
994 kfree(card); in rsxx_pci_probe()
1001 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_pci_remove() local
1006 if (!card) in rsxx_pci_remove()
1009 dev_info(CARD_TO_DEV(card), in rsxx_pci_remove()
1012 rsxx_detach_dev(card); in rsxx_pci_remove()
1014 for (i = 0; i < card->n_targets; i++) { in rsxx_pci_remove()
1015 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1016 rsxx_disable_ier_and_isr(card, CR_INTR_DMA(i)); in rsxx_pci_remove()
1017 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1020 st = card_shutdown(card); in rsxx_pci_remove()
1022 dev_crit(CARD_TO_DEV(card), "Shutdown failed!\n"); in rsxx_pci_remove()
1025 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1026 rsxx_disable_ier_and_isr(card, CR_INTR_EVENT); in rsxx_pci_remove()
1027 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1029 cancel_work_sync(&card->event_work); in rsxx_pci_remove()
1031 rsxx_destroy_dev(card); in rsxx_pci_remove()
1032 rsxx_dma_destroy(card); in rsxx_pci_remove()
1034 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_remove()
1035 rsxx_disable_ier_and_isr(card, CR_INTR_ALL); in rsxx_pci_remove()
1036 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_remove()
1039 card->halt = 1; in rsxx_pci_remove()
1041 debugfs_remove_recursive(card->debugfs_dir); in rsxx_pci_remove()
1043 free_irq(dev->irq, card); in rsxx_pci_remove()
1048 rsxx_creg_destroy(card); in rsxx_pci_remove()
1050 pci_iounmap(dev, card->regmap); in rsxx_pci_remove()
1055 kfree(card); in rsxx_pci_remove()
1066 struct rsxx_cardinfo *card = pci_get_drvdata(dev); in rsxx_pci_shutdown() local
1070 if (!card) in rsxx_pci_shutdown()
1073 dev_info(CARD_TO_DEV(card), "Shutting down PCI-Flash SSD.\n"); in rsxx_pci_shutdown()
1075 rsxx_detach_dev(card); in rsxx_pci_shutdown()
1077 for (i = 0; i < card->n_targets; i++) { in rsxx_pci_shutdown()
1078 spin_lock_irqsave(&card->irq_lock, flags); in rsxx_pci_shutdown()
1079 rsxx_disable_ier_and_isr(card, CR_INTR_DMA(i)); in rsxx_pci_shutdown()
1080 spin_unlock_irqrestore(&card->irq_lock, flags); in rsxx_pci_shutdown()
1083 card_shutdown(card); in rsxx_pci_shutdown()