diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2011-07-07 07:37:26 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-07-16 10:39:28 -0400 |
commit | ab6cf8e816bad473a1496f2006bea3a3849c2519 (patch) | |
tree | 924e71788ca5a299714fa520fc841b4d3aba11fb /drivers/net/wireless/iwlwifi/iwl-trans.c | |
parent | 253a634ccd1b291282cd0cade219bd90eb0371eb (diff) |
iwlagn: move iwlagn_stop_device to transport layer
Since iwlagn_stop_device was the only caller to the rx_stop / tx_stop,
these two don't need to be API any more.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-trans.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans.c | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.c b/drivers/net/wireless/iwlwifi/iwl-trans.c index 6b7cb73442b..8d455540479 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans.c | |||
@@ -611,6 +611,46 @@ static int iwl_trans_tx_stop(struct iwl_priv *priv) | |||
611 | return 0; | 611 | return 0; |
612 | } | 612 | } |
613 | 613 | ||
614 | static void iwl_trans_stop_device(struct iwl_priv *priv) | ||
615 | { | ||
616 | unsigned long flags; | ||
617 | |||
618 | /* stop and reset the on-board processor */ | ||
619 | iwl_write32(priv, CSR_RESET, CSR_RESET_REG_FLAG_NEVO_RESET); | ||
620 | |||
621 | /* tell the device to stop sending interrupts */ | ||
622 | spin_lock_irqsave(&priv->lock, flags); | ||
623 | iwl_disable_interrupts(priv); | ||
624 | spin_unlock_irqrestore(&priv->lock, flags); | ||
625 | trans_sync_irq(priv); | ||
626 | |||
627 | /* device going down, Stop using ICT table */ | ||
628 | iwl_disable_ict(priv); | ||
629 | |||
630 | /* | ||
631 | * If a HW restart happens during firmware loading, | ||
632 | * then the firmware loading might call this function | ||
633 | * and later it might be called again due to the | ||
634 | * restart. So don't process again if the device is | ||
635 | * already dead. | ||
636 | */ | ||
637 | if (test_bit(STATUS_DEVICE_ENABLED, &priv->status)) { | ||
638 | iwl_trans_tx_stop(priv); | ||
639 | iwl_trans_rx_stop(priv); | ||
640 | |||
641 | /* Power-down device's busmaster DMA clocks */ | ||
642 | iwl_write_prph(priv, APMG_CLK_DIS_REG, | ||
643 | APMG_CLK_VAL_DMA_CLK_RQT); | ||
644 | udelay(5); | ||
645 | } | ||
646 | |||
647 | /* Make sure (redundant) we've released our request to stay awake */ | ||
648 | iwl_clear_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ); | ||
649 | |||
650 | /* Stop the device, and put it in low power state */ | ||
651 | iwl_apm_stop(priv); | ||
652 | } | ||
653 | |||
614 | static struct iwl_tx_cmd *iwl_trans_get_tx_cmd(struct iwl_priv *priv, | 654 | static struct iwl_tx_cmd *iwl_trans_get_tx_cmd(struct iwl_priv *priv, |
615 | int txq_id) | 655 | int txq_id) |
616 | { | 656 | { |
@@ -779,13 +819,13 @@ static void iwl_trans_free(struct iwl_priv *priv) | |||
779 | 819 | ||
780 | static const struct iwl_trans_ops trans_ops = { | 820 | static const struct iwl_trans_ops trans_ops = { |
781 | .rx_init = iwl_trans_rx_init, | 821 | .rx_init = iwl_trans_rx_init, |
782 | .rx_stop = iwl_trans_rx_stop, | ||
783 | .rx_free = iwl_trans_rx_free, | 822 | .rx_free = iwl_trans_rx_free, |
784 | 823 | ||
785 | .tx_init = iwl_trans_tx_init, | 824 | .tx_init = iwl_trans_tx_init, |
786 | .tx_stop = iwl_trans_tx_stop, | ||
787 | .tx_free = iwl_trans_tx_free, | 825 | .tx_free = iwl_trans_tx_free, |
788 | 826 | ||
827 | .stop_device = iwl_trans_stop_device, | ||
828 | |||
789 | .send_cmd = iwl_send_cmd, | 829 | .send_cmd = iwl_send_cmd, |
790 | .send_cmd_pdu = iwl_send_cmd_pdu, | 830 | .send_cmd_pdu = iwl_send_cmd_pdu, |
791 | 831 | ||