aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/pcie
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/pcie')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/trans.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
index 0b021305eedf..197dbe0a868c 100644
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -578,9 +578,17 @@ static void iwl_trans_pcie_stop_device(struct iwl_trans *trans)
578 clear_bit(STATUS_RFKILL, &trans_pcie->status); 578 clear_bit(STATUS_RFKILL, &trans_pcie->status);
579} 579}
580 580
581static void iwl_trans_pcie_d3_suspend(struct iwl_trans *trans) 581static void iwl_trans_pcie_d3_suspend(struct iwl_trans *trans, bool test)
582{ 582{
583 iwl_disable_interrupts(trans); 583 iwl_disable_interrupts(trans);
584
585 /*
586 * in testing mode, the host stays awake and the
587 * hardware won't be reset (not even partially)
588 */
589 if (test)
590 return;
591
584 iwl_pcie_disable_ict(trans); 592 iwl_pcie_disable_ict(trans);
585 593
586 iwl_clear_bit(trans, CSR_GP_CNTRL, 594 iwl_clear_bit(trans, CSR_GP_CNTRL,
@@ -599,11 +607,18 @@ static void iwl_trans_pcie_d3_suspend(struct iwl_trans *trans)
599} 607}
600 608
601static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans, 609static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans,
602 enum iwl_d3_status *status) 610 enum iwl_d3_status *status,
611 bool test)
603{ 612{
604 u32 val; 613 u32 val;
605 int ret; 614 int ret;
606 615
616 if (test) {
617 iwl_enable_interrupts(trans);
618 *status = IWL_D3_STATUS_ALIVE;
619 return 0;
620 }
621
607 iwl_pcie_set_pwr(trans, false); 622 iwl_pcie_set_pwr(trans, false);
608 623
609 val = iwl_read32(trans, CSR_RESET); 624 val = iwl_read32(trans, CSR_RESET);