Lines Matching refs:creg_ctrl
140 if (card->creg_ctrl.active || list_empty(&card->creg_ctrl.queue)) in creg_kick_queue()
143 card->creg_ctrl.active = 1; in creg_kick_queue()
144 card->creg_ctrl.active_cmd = list_first_entry(&card->creg_ctrl.queue, in creg_kick_queue()
146 list_del(&card->creg_ctrl.active_cmd->list); in creg_kick_queue()
147 card->creg_ctrl.q_depth--; in creg_kick_queue()
155 mod_timer(&card->creg_ctrl.cmd_timer, in creg_kick_queue()
158 creg_issue_cmd(card, card->creg_ctrl.active_cmd); in creg_kick_queue()
176 if (card->creg_ctrl.reset) in creg_queue_cmd()
197 spin_lock_bh(&card->creg_ctrl.lock); in creg_queue_cmd()
198 list_add_tail(&cmd->list, &card->creg_ctrl.queue); in creg_queue_cmd()
199 card->creg_ctrl.q_depth++; in creg_queue_cmd()
201 spin_unlock_bh(&card->creg_ctrl.lock); in creg_queue_cmd()
211 spin_lock(&card->creg_ctrl.lock); in creg_cmd_timed_out()
212 cmd = card->creg_ctrl.active_cmd; in creg_cmd_timed_out()
213 card->creg_ctrl.active_cmd = NULL; in creg_cmd_timed_out()
214 spin_unlock(&card->creg_ctrl.lock); in creg_cmd_timed_out()
217 card->creg_ctrl.creg_stats.creg_timeout++; in creg_cmd_timed_out()
229 spin_lock(&card->creg_ctrl.lock); in creg_cmd_timed_out()
230 card->creg_ctrl.active = 0; in creg_cmd_timed_out()
232 spin_unlock(&card->creg_ctrl.lock); in creg_cmd_timed_out()
243 creg_ctrl.done_work); in creg_cmd_done()
249 if (del_timer_sync(&card->creg_ctrl.cmd_timer) == 0) in creg_cmd_done()
250 card->creg_ctrl.creg_stats.failed_cancel_timer++; in creg_cmd_done()
252 spin_lock_bh(&card->creg_ctrl.lock); in creg_cmd_done()
253 cmd = card->creg_ctrl.active_cmd; in creg_cmd_done()
254 card->creg_ctrl.active_cmd = NULL; in creg_cmd_done()
255 spin_unlock_bh(&card->creg_ctrl.lock); in creg_cmd_done()
263 card->creg_ctrl.creg_stats.stat = ioread32(card->regmap + CREG_STAT); in creg_cmd_done()
264 cmd->status = card->creg_ctrl.creg_stats.stat; in creg_cmd_done()
305 spin_lock_bh(&card->creg_ctrl.lock); in creg_cmd_done()
306 card->creg_ctrl.active = 0; in creg_cmd_done()
308 spin_unlock_bh(&card->creg_ctrl.lock); in creg_cmd_done()
321 if (!mutex_trylock(&card->creg_ctrl.reset_lock)) in creg_reset()
324 card->creg_ctrl.reset = 1; in creg_reset()
333 spin_lock_bh(&card->creg_ctrl.lock); in creg_reset()
334 list_for_each_entry_safe(cmd, tmp, &card->creg_ctrl.queue, list) { in creg_reset()
336 card->creg_ctrl.q_depth--; in creg_reset()
342 cmd = card->creg_ctrl.active_cmd; in creg_reset()
343 card->creg_ctrl.active_cmd = NULL; in creg_reset()
345 if (timer_pending(&card->creg_ctrl.cmd_timer)) in creg_reset()
346 del_timer_sync(&card->creg_ctrl.cmd_timer); in creg_reset()
352 card->creg_ctrl.active = 0; in creg_reset()
354 spin_unlock_bh(&card->creg_ctrl.lock); in creg_reset()
356 card->creg_ctrl.reset = 0; in creg_reset()
361 mutex_unlock(&card->creg_ctrl.reset_lock); in creg_reset()
413 card->creg_ctrl.q_depth + 20000); in __issue_creg_rw()
712 cmd = card->creg_ctrl.active_cmd; in rsxx_eeh_save_issued_creg()
713 card->creg_ctrl.active_cmd = NULL; in rsxx_eeh_save_issued_creg()
716 del_timer_sync(&card->creg_ctrl.cmd_timer); in rsxx_eeh_save_issued_creg()
718 spin_lock_bh(&card->creg_ctrl.lock); in rsxx_eeh_save_issued_creg()
719 list_add(&cmd->list, &card->creg_ctrl.queue); in rsxx_eeh_save_issued_creg()
720 card->creg_ctrl.q_depth++; in rsxx_eeh_save_issued_creg()
721 card->creg_ctrl.active = 0; in rsxx_eeh_save_issued_creg()
722 spin_unlock_bh(&card->creg_ctrl.lock); in rsxx_eeh_save_issued_creg()
728 spin_lock_bh(&card->creg_ctrl.lock); in rsxx_kick_creg_queue()
729 if (!list_empty(&card->creg_ctrl.queue)) in rsxx_kick_creg_queue()
731 spin_unlock_bh(&card->creg_ctrl.lock); in rsxx_kick_creg_queue()
737 card->creg_ctrl.active_cmd = NULL; in rsxx_creg_setup()
739 card->creg_ctrl.creg_wq = in rsxx_creg_setup()
741 if (!card->creg_ctrl.creg_wq) in rsxx_creg_setup()
744 INIT_WORK(&card->creg_ctrl.done_work, creg_cmd_done); in rsxx_creg_setup()
745 mutex_init(&card->creg_ctrl.reset_lock); in rsxx_creg_setup()
746 INIT_LIST_HEAD(&card->creg_ctrl.queue); in rsxx_creg_setup()
747 spin_lock_init(&card->creg_ctrl.lock); in rsxx_creg_setup()
748 setup_timer(&card->creg_ctrl.cmd_timer, creg_cmd_timed_out, in rsxx_creg_setup()
761 spin_lock_bh(&card->creg_ctrl.lock); in rsxx_creg_destroy()
762 list_for_each_entry_safe(cmd, tmp, &card->creg_ctrl.queue, list) { in rsxx_creg_destroy()
774 cmd = card->creg_ctrl.active_cmd; in rsxx_creg_destroy()
775 card->creg_ctrl.active_cmd = NULL; in rsxx_creg_destroy()
777 if (timer_pending(&card->creg_ctrl.cmd_timer)) in rsxx_creg_destroy()
778 del_timer_sync(&card->creg_ctrl.cmd_timer); in rsxx_creg_destroy()
786 spin_unlock_bh(&card->creg_ctrl.lock); in rsxx_creg_destroy()
788 cancel_work_sync(&card->creg_ctrl.done_work); in rsxx_creg_destroy()