diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/pcie')
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/trans.c | 19 |
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 | ||
581 | static void iwl_trans_pcie_d3_suspend(struct iwl_trans *trans) | 581 | static 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 | ||
601 | static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans, | 609 | static 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); |