ar9300_power.c (269793) | ar9300_power.c (278741) |
---|---|
1/* 2 * Copyright (c) 2013 Qualcomm Atheros, Inc. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH --- 455 unchanged lines hidden (view full) --- 464 } 465 466 OS_REG_WRITE(ah, AR_EMB_CPU_WOW_ENABLE, val); 467 468 OS_REG_CLR_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_CONF); 469 OS_REG_SET_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_REQ); 470 OS_REG_SET_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_INT_EMB_CPU); 471 | 1/* 2 * Copyright (c) 2013 Qualcomm Atheros, Inc. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH --- 455 unchanged lines hidden (view full) --- 464 } 465 466 OS_REG_WRITE(ah, AR_EMB_CPU_WOW_ENABLE, val); 467 468 OS_REG_CLR_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_CONF); 469 OS_REG_SET_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_REQ); 470 OS_REG_SET_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_INT_EMB_CPU); 471 |
472 if (!ath_hal_wait(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_CONF, AR_MBOX_WOW_CONF, bt_handshake_timeout_us)) { | 472 if (!ath_hal_waitfor(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_CONF, AR_MBOX_WOW_CONF, bt_handshake_timeout_us)) { |
473 HALDEBUG(ah, HAL_DEBUG_UNMASKABLE, "%s: WoW offload handshake failed", __func__); 474 return 0; 475 } 476 else { 477 OS_REG_CLR_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_CONF); 478 HALDEBUG(ah, HAL_DEBUG_POWER_MGMT, "%s: WoW offload handshake successful",__func__); 479 } 480 return 1; --- 192 unchanged lines hidden (view full) --- 673 if (set_chip) 674 ah->ah_powerMode = mode; 675 status = ar9300_set_power_mode_awake(ah, set_chip); 676#if ATH_SUPPORT_MCI 677 if (AH_PRIVATE(ah)->ah_caps.halMciSupport) { 678 OS_REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2); 679 } 680#endif | 473 HALDEBUG(ah, HAL_DEBUG_UNMASKABLE, "%s: WoW offload handshake failed", __func__); 474 return 0; 475 } 476 else { 477 OS_REG_CLR_BIT(ah, AR_MBOX_CTRL_STATUS, AR_MBOX_WOW_CONF); 478 HALDEBUG(ah, HAL_DEBUG_POWER_MGMT, "%s: WoW offload handshake successful",__func__); 479 } 480 return 1; --- 192 unchanged lines hidden (view full) --- 673 if (set_chip) 674 ah->ah_powerMode = mode; 675 status = ar9300_set_power_mode_awake(ah, set_chip); 676#if ATH_SUPPORT_MCI 677 if (AH_PRIVATE(ah)->ah_caps.halMciSupport) { 678 OS_REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2); 679 } 680#endif |
681 ahp->ah_chip_full_sleep = AH_FALSE; |
|
681 break; 682 case HAL_PM_FULL_SLEEP: 683#if ATH_SUPPORT_MCI 684 if (AH_PRIVATE(ah)->ah_caps.halMciSupport) { 685 if (ar9300_get_power_mode(ah) == HAL_PM_AWAKE) { 686 if ((ar9300_mci_state(ah, HAL_MCI_STATE_ENABLE, NULL) != 0) && 687 (ahp->ah_mci_bt_state != MCI_BT_SLEEP) && 688 !ahp->ah_mci_halted_bt_gpm) --- 293 unchanged lines hidden (view full) --- 982} 983 984HAL_BOOL 985ar9300_set_power_mode_wow_sleep(struct ath_hal *ah) 986{ 987 OS_REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV); 988 989 OS_REG_WRITE(ah, AR_CR, AR_CR_RXD); /* Set receive disable bit */ | 682 break; 683 case HAL_PM_FULL_SLEEP: 684#if ATH_SUPPORT_MCI 685 if (AH_PRIVATE(ah)->ah_caps.halMciSupport) { 686 if (ar9300_get_power_mode(ah) == HAL_PM_AWAKE) { 687 if ((ar9300_mci_state(ah, HAL_MCI_STATE_ENABLE, NULL) != 0) && 688 (ahp->ah_mci_bt_state != MCI_BT_SLEEP) && 689 !ahp->ah_mci_halted_bt_gpm) --- 293 unchanged lines hidden (view full) --- 983} 984 985HAL_BOOL 986ar9300_set_power_mode_wow_sleep(struct ath_hal *ah) 987{ 988 OS_REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV); 989 990 OS_REG_WRITE(ah, AR_CR, AR_CR_RXD); /* Set receive disable bit */ |
990 if (!ath_hal_wait(ah, AR_CR, AR_CR_RXE, 0, AH_WAIT_TIMEOUT)) { | 991 if (!ath_hal_waitfor(ah, AR_CR, AR_CR_RXE, 0, AH_WAIT_TIMEOUT)) { |
991 HALDEBUG(ah, HAL_DEBUG_POWER_MGMT, "%s: dma failed to stop in 10ms\n" 992 "AR_CR=0x%08x\nAR_DIAG_SW=0x%08x\n", __func__, 993 OS_REG_READ(ah, AR_CR), OS_REG_READ(ah, AR_DIAG_SW)); 994 return AH_FALSE; 995 } else { 996#if 0 997 OS_REG_WRITE(ah, AR_RXDP, 0x0); 998#endif --- 567 unchanged lines hidden --- | 992 HALDEBUG(ah, HAL_DEBUG_POWER_MGMT, "%s: dma failed to stop in 10ms\n" 993 "AR_CR=0x%08x\nAR_DIAG_SW=0x%08x\n", __func__, 994 OS_REG_READ(ah, AR_CR), OS_REG_READ(ah, AR_DIAG_SW)); 995 return AH_FALSE; 996 } else { 997#if 0 998 OS_REG_WRITE(ah, AR_RXDP, 0x0); 999#endif --- 567 unchanged lines hidden --- |