hal_btc.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2009-2012 Realtek Corporation.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. * You should have received a copy of the GNU General Public License along with
  15. * this program; if not, write to the Free Software Foundation, Inc.,
  16. * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
  17. *
  18. * The full GNU General Public License is included in this distribution in the
  19. * file called LICENSE.
  20. *
  21. * Contact Information:
  22. * wlanfae <wlanfae@realtek.com>
  23. * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
  24. * Hsinchu 300, Taiwan.
  25. * Larry Finger <Larry.Finger@lwfinger.net>
  26. *
  27. ****************************************************************************
  28. */
  29. #ifndef __RTL8723E_HAL_BTC_H__
  30. #define __RTL8723E_HAL_BTC_H__
  31. #include "../wifi.h"
  32. #include "btc.h"
  33. #include "hal_bt_coexist.h"
  34. #define BT_TXRX_CNT_THRES_1 1200
  35. #define BT_TXRX_CNT_THRES_2 1400
  36. #define BT_TXRX_CNT_THRES_3 3000
  37. #define BT_TXRX_CNT_LEVEL_0 0 /* < 1200 */
  38. #define BT_TXRX_CNT_LEVEL_1 1 /* >= 1200 && < 1400 */
  39. #define BT_TXRX_CNT_LEVEL_2 2 /* >= 1400 */
  40. #define BT_TXRX_CNT_LEVEL_3 3
  41. /* TDMA mode definition */
  42. #define TDMA_2ANT 0
  43. #define TDMA_1ANT 1
  44. #define TDMA_NAV_OFF 0
  45. #define TDMA_NAV_ON 1
  46. #define TDMA_DAC_SWING_OFF 0
  47. #define TDMA_DAC_SWING_ON 1
  48. /* PTA mode related definition */
  49. #define BT_PTA_MODE_OFF 0
  50. #define BT_PTA_MODE_ON 1
  51. /* Penalty Tx Rate Adaptive */
  52. #define BT_TX_RATE_ADAPTIVE_NORMAL 0
  53. #define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1
  54. /* RF Corner */
  55. #define BT_RF_RX_LPF_CORNER_RESUME 0
  56. #define BT_RF_RX_LPF_CORNER_SHRINK 1
  57. #define C2H_EVT_HOST_CLOSE 0x00
  58. #define C2H_EVT_FW_CLOSE 0xFF
  59. enum bt_traffic_mode {
  60. BT_MOTOR_EXT_BE = 0x00,
  61. BT_MOTOR_EXT_GUL = 0x01,
  62. BT_MOTOR_EXT_GUB = 0x02,
  63. BT_MOTOR_EXT_GULB = 0x03
  64. };
  65. enum bt_traffic_mode_profile {
  66. BT_PROFILE_NONE,
  67. BT_PROFILE_A2DP,
  68. BT_PROFILE_PAN,
  69. BT_PROFILE_HID,
  70. BT_PROFILE_SCO
  71. };
  72. enum hci_ext_bt_operation {
  73. HCI_BT_OP_NONE = 0x0,
  74. HCI_BT_OP_INQUIRE_START = 0x1,
  75. HCI_BT_OP_INQUIRE_FINISH = 0x2,
  76. HCI_BT_OP_PAGING_START = 0x3,
  77. HCI_BT_OP_PAGING_SUCCESS = 0x4,
  78. HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
  79. HCI_BT_OP_PAIRING_START = 0x6,
  80. HCI_BT_OP_PAIRING_FINISH = 0x7,
  81. HCI_BT_OP_BT_DEV_ENABLE = 0x8,
  82. HCI_BT_OP_BT_DEV_DISABLE = 0x9,
  83. HCI_BT_OP_MAX,
  84. };
  85. enum bt_spec {
  86. BT_SPEC_1_0_b = 0x00,
  87. BT_SPEC_1_1 = 0x01,
  88. BT_SPEC_1_2 = 0x02,
  89. BT_SPEC_2_0_EDR = 0x03,
  90. BT_SPEC_2_1_EDR = 0x04,
  91. BT_SPEC_3_0_HS = 0x05,
  92. BT_SPEC_4_0 = 0x06
  93. };
  94. struct c2h_evt_hdr {
  95. u8 cmd_id;
  96. u8 cmd_len;
  97. u8 cmd_seq;
  98. };
  99. enum bt_state {
  100. BT_INFO_STATE_DISABLED = 0,
  101. BT_INFO_STATE_NO_CONNECTION = 1,
  102. BT_INFO_STATE_CONNECT_IDLE = 2,
  103. BT_INFO_STATE_INQ_OR_PAG = 3,
  104. BT_INFO_STATE_ACL_ONLY_BUSY = 4,
  105. BT_INFO_STATE_SCO_ONLY_BUSY = 5,
  106. BT_INFO_STATE_ACL_SCO_BUSY = 6,
  107. BT_INFO_STATE_HID_BUSY = 7,
  108. BT_INFO_STATE_HID_SCO_BUSY = 8,
  109. BT_INFO_STATE_MAX = 7
  110. };
  111. enum rtl8723ae_c2h_evt {
  112. C2H_DBG = 0,
  113. C2H_TSF = 1,
  114. C2H_AP_RPT_RSP = 2,
  115. C2H_CCX_TX_RPT = 3, /* The FW notify the report of the specific */
  116. /* tx packet. */
  117. C2H_BT_RSSI = 4,
  118. C2H_BT_OP_MODE = 5,
  119. C2H_HW_INFO_EXCH = 10,
  120. C2H_C2H_H2C_TEST = 11,
  121. BT_INFO = 12,
  122. MAX_C2HEVENT
  123. };
  124. void rtl8723ae_dm_bt_fw_coex_all_off_8723a(struct ieee80211_hw *hw);
  125. void rtl8723ae_dm_bt_sw_coex_all_off_8723a(struct ieee80211_hw *hw);
  126. void rtl8723ae_dm_bt_hw_coex_all_off_8723a(struct ieee80211_hw *hw);
  127. void rtl8723ae_dm_bt_coexist_8723(struct ieee80211_hw *hw);
  128. void rtl8723ae_dm_bt_set_bt_dm(struct ieee80211_hw *hw,
  129. struct btdm_8723 *p_btdm);
  130. void rtl_8723e_c2h_command_handle(struct ieee80211_hw *hw);
  131. void rtl_8723e_bt_wifi_media_status_notify(struct ieee80211_hw *hw,
  132. bool mstatus);
  133. void rtl8723ae_bt_coex_off_before_lps(struct ieee80211_hw *hw);
  134. #endif