pwr_mgt.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /*
  2. ** Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/pwr_mgt.h#1
  3. */
  4. /*! \file "pwr_mgt.h"
  5. \brief In this file we define the STATE and EVENT for Power Management FSM.
  6. The SCAN FSM is responsible for performing SCAN behavior when the Arbiter enter
  7. ARB_STATE_SCAN. The STATE and EVENT for SCAN FSM are defined here with detail
  8. description.
  9. */
  10. /*
  11. ** Log: pwr_mgt.h
  12. *
  13. * 07 09 2010 george.huang
  14. *
  15. * [WPD00001556] Migrate PM variables from FW to driver: for composing QoS Info
  16. *
  17. * 07 08 2010 cp.wu
  18. *
  19. * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
  20. *
  21. * 06 06 2010 kevin.huang
  22. * [WPD00003832][MT6620 5931] Create driver base
  23. * [MT6620 5931] Create driver base
  24. *
  25. * 04 20 2010 cp.wu
  26. * [WPD00001943]Create WiFi test driver framework on WinXP
  27. * don't need SPIN_LOCK_PWR_CTRL anymore, it will raise IRQL
  28. * and cause SdBusSubmitRequest running at DISPATCH_LEVEL as well.
  29. *
  30. * 03 25 2010 cp.wu
  31. * [WPD00001943]Create WiFi test driver framework on WinXP
  32. * firmware download load address & start address are now configured from config.h
  33. * * * due to the different configurations on FPGA and ASIC
  34. ** \main\maintrunk.MT6620WiFiDriver_Prj\7 2009-12-10 16:39:10 GMT mtk02752
  35. ** disable PM macros temporally
  36. ** \main\maintrunk.MT6620WiFiDriver_Prj\6 2009-10-29 19:48:37 GMT mtk01084
  37. ** temp remove power management macro
  38. ** \main\maintrunk.MT6620WiFiDriver_Prj\5 2009-04-08 16:51:11 GMT mtk01084
  39. ** update for power management control macro
  40. ** \main\maintrunk.MT6620WiFiDriver_Prj\4 2009-04-03 14:59:58 GMT mtk01426
  41. ** Add #if CFG_HIF_LOOPBACK_PRETEST
  42. ** \main\maintrunk.MT6620WiFiDriver_Prj\3 2009-03-23 16:53:10 GMT mtk01084
  43. ** modify ACQUIRE_POWER_CONTROL_FROM_PM() and RECLAIM_POWER_CONTROL_TO_PM() macro
  44. ** \main\maintrunk.MT6620WiFiDriver_Prj\2 2009-03-19 18:32:47 GMT mtk01084
  45. ** update for basic power management functions
  46. ** \main\maintrunk.MT6620WiFiDriver_Prj\1 2009-03-19 15:05:20 GMT mtk01084
  47. ** Initial version
  48. **
  49. */
  50. #ifndef _PWR_MGT_H
  51. #define _PWR_MGT_H
  52. /*******************************************************************************
  53. * C O M P I L E R F L A G S
  54. ********************************************************************************
  55. */
  56. /*******************************************************************************
  57. * E X T E R N A L R E F E R E N C E S
  58. ********************************************************************************
  59. */
  60. /*******************************************************************************
  61. * C O N S T A N T S
  62. ********************************************************************************
  63. */
  64. #define PM_UAPSD_AC0 (BIT(0))
  65. #define PM_UAPSD_AC1 (BIT(1))
  66. #define PM_UAPSD_AC2 (BIT(2))
  67. #define PM_UAPSD_AC3 (BIT(3))
  68. #define PM_UAPSD_ALL (PM_UAPSD_AC0 | PM_UAPSD_AC1 | PM_UAPSD_AC2 | PM_UAPSD_AC3)
  69. #define PM_UAPSD_NONE 0
  70. /*******************************************************************************
  71. * D A T A T Y P E S
  72. ********************************************************************************
  73. */
  74. typedef struct _PM_PROFILE_SETUP_INFO_T {
  75. /* Profile setup */
  76. UINT_8 ucBmpDeliveryAC; /* 0: AC_BE, 1: AC_BK, 2: AC_VI, 3: AC_VO */
  77. UINT_8 ucBmpTriggerAC; /* 0: AC_BE, 1: AC_BK, 2: AC_VI, 3: AC_VO */
  78. UINT_8 ucUapsdSp; /* Number of triggered packets in UAPSD */
  79. } PM_PROFILE_SETUP_INFO_T, *P_PM_PROFILE_SETUP_INFO_T;
  80. /*******************************************************************************
  81. * P U B L I C D A T A
  82. ********************************************************************************
  83. */
  84. /*******************************************************************************
  85. * P R I V A T E D A T A
  86. ********************************************************************************
  87. */
  88. /*******************************************************************************
  89. * M A C R O S
  90. ********************************************************************************
  91. */
  92. #if !CFG_ENABLE_FULL_PM
  93. #define ACQUIRE_POWER_CONTROL_FROM_PM(_prAdapter)
  94. #define RECLAIM_POWER_CONTROL_TO_PM(_prAdapter, _fgEnableGINT_in_IST)
  95. #else
  96. #define ACQUIRE_POWER_CONTROL_FROM_PM(_prAdapter) \
  97. { \
  98. if (_prAdapter->fgIsFwOwn) { \
  99. nicpmSetDriverOwn(_prAdapter); \
  100. } \
  101. /* Increase Block to Enter Low Power Semaphore count */ \
  102. GLUE_INC_REF_CNT(_prAdapter->u4PwrCtrlBlockCnt); \
  103. }
  104. #define RECLAIM_POWER_CONTROL_TO_PM(_prAdapter, _fgEnableGINT_in_IST) \
  105. { \
  106. ASSERT(_prAdapter->u4PwrCtrlBlockCnt != 0); \
  107. /* Decrease Block to Enter Low Power Semaphore count */ \
  108. GLUE_DEC_REF_CNT(_prAdapter->u4PwrCtrlBlockCnt); \
  109. if (_prAdapter->fgWiFiInSleepyState && (_prAdapter->u4PwrCtrlBlockCnt == 0)) { \
  110. nicpmSetFWOwn(_prAdapter, _fgEnableGINT_in_IST); \
  111. } \
  112. }
  113. #endif
  114. /*******************************************************************************
  115. * F U N C T I O N D E C L A R A T I O N S
  116. ********************************************************************************
  117. */
  118. /*******************************************************************************
  119. * F U N C T I O N S
  120. ********************************************************************************
  121. */
  122. #endif /* _PWR_MGT_H */