1*48fa0b4dSLarry Finger /* SPDX-License-Identifier: GPL-2.0 */ 2*48fa0b4dSLarry Finger /* Copyright(c) 2009-2012 Realtek Corporation.*/ 3f1d2b4d3SLarry Finger 4f1d2b4d3SLarry Finger #ifndef __RTL8723E_HAL_BTC_H__ 5f1d2b4d3SLarry Finger #define __RTL8723E_HAL_BTC_H__ 6f1d2b4d3SLarry Finger 7f1d2b4d3SLarry Finger #include "../wifi.h" 8f1d2b4d3SLarry Finger #include "btc.h" 9f1d2b4d3SLarry Finger #include "hal_bt_coexist.h" 10f1d2b4d3SLarry Finger 11f1d2b4d3SLarry Finger #define BT_TXRX_CNT_THRES_1 1200 12f1d2b4d3SLarry Finger #define BT_TXRX_CNT_THRES_2 1400 13f1d2b4d3SLarry Finger #define BT_TXRX_CNT_THRES_3 3000 14f1d2b4d3SLarry Finger /* < 1200 */ 15f1d2b4d3SLarry Finger #define BT_TXRX_CNT_LEVEL_0 0 16f1d2b4d3SLarry Finger /* >= 1200 && < 1400 */ 17f1d2b4d3SLarry Finger #define BT_TXRX_CNT_LEVEL_1 1 18f1d2b4d3SLarry Finger /* >= 1400 */ 19f1d2b4d3SLarry Finger #define BT_TXRX_CNT_LEVEL_2 2 20f1d2b4d3SLarry Finger #define BT_TXRX_CNT_LEVEL_3 3 21f1d2b4d3SLarry Finger 22f1d2b4d3SLarry Finger #define BT_COEX_DISABLE 0 23f1d2b4d3SLarry Finger #define BT_Q_PKT_OFF 0 24f1d2b4d3SLarry Finger #define BT_Q_PKT_ON 1 25f1d2b4d3SLarry Finger 26f1d2b4d3SLarry Finger #define BT_TX_PWR_OFF 0 27f1d2b4d3SLarry Finger #define BT_TX_PWR_ON 1 28f1d2b4d3SLarry Finger 29f1d2b4d3SLarry Finger /* TDMA mode definition */ 30f1d2b4d3SLarry Finger #define TDMA_2ANT 0 31f1d2b4d3SLarry Finger #define TDMA_1ANT 1 32f1d2b4d3SLarry Finger #define TDMA_NAV_OFF 0 33f1d2b4d3SLarry Finger #define TDMA_NAV_ON 1 34f1d2b4d3SLarry Finger #define TDMA_DAC_SWING_OFF 0 35f1d2b4d3SLarry Finger #define TDMA_DAC_SWING_ON 1 36f1d2b4d3SLarry Finger 37f1d2b4d3SLarry Finger /* PTA mode related definition */ 38f1d2b4d3SLarry Finger #define BT_PTA_MODE_OFF 0 39f1d2b4d3SLarry Finger #define BT_PTA_MODE_ON 1 40f1d2b4d3SLarry Finger 41f1d2b4d3SLarry Finger /* Penalty Tx Rate Adaptive */ 42f1d2b4d3SLarry Finger #define BT_TX_RATE_ADAPTIVE_NORMAL 0 43f1d2b4d3SLarry Finger #define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1 44f1d2b4d3SLarry Finger 45f1d2b4d3SLarry Finger /* RF Corner */ 46f1d2b4d3SLarry Finger #define BT_RF_RX_LPF_CORNER_RESUME 0 47f1d2b4d3SLarry Finger #define BT_RF_RX_LPF_CORNER_SHRINK 1 48f1d2b4d3SLarry Finger 49f1d2b4d3SLarry Finger #define C2H_EVT_HOST_CLOSE 0x00 50f1d2b4d3SLarry Finger #define C2H_EVT_FW_CLOSE 0xFF 51f1d2b4d3SLarry Finger 52f1d2b4d3SLarry Finger enum bt_traffic_mode { 53f1d2b4d3SLarry Finger BT_MOTOR_EXT_BE = 0x00, 54f1d2b4d3SLarry Finger BT_MOTOR_EXT_GUL = 0x01, 55f1d2b4d3SLarry Finger BT_MOTOR_EXT_GUB = 0x02, 56f1d2b4d3SLarry Finger BT_MOTOR_EXT_GULB = 0x03 57f1d2b4d3SLarry Finger }; 58f1d2b4d3SLarry Finger 59f1d2b4d3SLarry Finger enum bt_traffic_mode_profile { 60f1d2b4d3SLarry Finger BT_PROFILE_NONE, 61f1d2b4d3SLarry Finger BT_PROFILE_A2DP, 62f1d2b4d3SLarry Finger BT_PROFILE_PAN, 63f1d2b4d3SLarry Finger BT_PROFILE_HID, 64f1d2b4d3SLarry Finger BT_PROFILE_SCO 65f1d2b4d3SLarry Finger }; 66f1d2b4d3SLarry Finger 67f1d2b4d3SLarry Finger /* 68f1d2b4d3SLarry Finger enum hci_ext_bt_operation { 69f1d2b4d3SLarry Finger HCI_BT_OP_NONE = 0x0, 70f1d2b4d3SLarry Finger HCI_BT_OP_INQUIRE_START = 0x1, 71f1d2b4d3SLarry Finger HCI_BT_OP_INQUIRE_FINISH = 0x2, 72f1d2b4d3SLarry Finger HCI_BT_OP_PAGING_START = 0x3, 73f1d2b4d3SLarry Finger HCI_BT_OP_PAGING_SUCCESS = 0x4, 74f1d2b4d3SLarry Finger HCI_BT_OP_PAGING_UNSUCCESS = 0x5, 75f1d2b4d3SLarry Finger HCI_BT_OP_PAIRING_START = 0x6, 76f1d2b4d3SLarry Finger HCI_BT_OP_PAIRING_FINISH = 0x7, 77f1d2b4d3SLarry Finger HCI_BT_OP_BT_DEV_ENABLE = 0x8, 78f1d2b4d3SLarry Finger HCI_BT_OP_BT_DEV_DISABLE = 0x9, 79f1d2b4d3SLarry Finger HCI_BT_OP_MAX, 80f1d2b4d3SLarry Finger }; 81f1d2b4d3SLarry Finger */ 82f1d2b4d3SLarry Finger 83f1d2b4d3SLarry Finger enum bt_spec { 84f1d2b4d3SLarry Finger BT_SPEC_1_0_b = 0x00, 85f1d2b4d3SLarry Finger BT_SPEC_1_1 = 0x01, 86f1d2b4d3SLarry Finger BT_SPEC_1_2 = 0x02, 87f1d2b4d3SLarry Finger BT_SPEC_2_0_EDR = 0x03, 88f1d2b4d3SLarry Finger BT_SPEC_2_1_EDR = 0x04, 89f1d2b4d3SLarry Finger BT_SPEC_3_0_HS = 0x05, 90f1d2b4d3SLarry Finger BT_SPEC_4_0 = 0x06 91f1d2b4d3SLarry Finger }; 92f1d2b4d3SLarry Finger 93f1d2b4d3SLarry Finger struct c2h_evt_hdr { 94f1d2b4d3SLarry Finger u8 cmd_id; 95f1d2b4d3SLarry Finger u8 cmd_len; 96f1d2b4d3SLarry Finger u8 cmd_seq; 97f1d2b4d3SLarry Finger }; 98f1d2b4d3SLarry Finger 99f1d2b4d3SLarry Finger enum bt_state { 100f1d2b4d3SLarry Finger BT_INFO_STATE_DISABLED = 0, 101f1d2b4d3SLarry Finger BT_INFO_STATE_NO_CONNECTION = 1, 102f1d2b4d3SLarry Finger BT_INFO_STATE_CONNECT_IDLE = 2, 103f1d2b4d3SLarry Finger BT_INFO_STATE_INQ_OR_PAG = 3, 104f1d2b4d3SLarry Finger BT_INFO_STATE_ACL_ONLY_BUSY = 4, 105f1d2b4d3SLarry Finger BT_INFO_STATE_SCO_ONLY_BUSY = 5, 106f1d2b4d3SLarry Finger BT_INFO_STATE_ACL_SCO_BUSY = 6, 107f1d2b4d3SLarry Finger BT_INFO_STATE_HID_BUSY = 7, 108f1d2b4d3SLarry Finger BT_INFO_STATE_HID_SCO_BUSY = 8, 109f1d2b4d3SLarry Finger BT_INFO_STATE_MAX = 7 110f1d2b4d3SLarry Finger }; 111f1d2b4d3SLarry Finger 11224915597SPing-Ke Shih enum rtl8723e_c2h_evt_v0 { 11324915597SPing-Ke Shih C2H_V0_DBG = 0, 11424915597SPing-Ke Shih C2H_V0_TSF = 1, 11524915597SPing-Ke Shih C2H_V0_AP_RPT_RSP = 2, 116f1d2b4d3SLarry Finger /* The FW notify the report of the specific tx packet. */ 11724915597SPing-Ke Shih C2H_V0_CCX_TX_RPT = 3, 11824915597SPing-Ke Shih C2H_V0_BT_RSSI = 4, 11924915597SPing-Ke Shih C2H_V0_BT_OP_MODE = 5, 12024915597SPing-Ke Shih C2H_V0_HW_INFO_EXCH = 10, 12124915597SPing-Ke Shih C2H_V0_C2H_H2C_TEST = 11, 12224915597SPing-Ke Shih C2H_V0_BT_INFO = 12, 123f1d2b4d3SLarry Finger MAX_C2HEVENT 124f1d2b4d3SLarry Finger }; 125f1d2b4d3SLarry Finger 126f1d2b4d3SLarry Finger void rtl8723e_dm_bt_fw_coex_all_off_8723a(struct ieee80211_hw *hw); 127f1d2b4d3SLarry Finger void rtl8723e_dm_bt_sw_coex_all_off_8723a(struct ieee80211_hw *hw); 128f1d2b4d3SLarry Finger void rtl8723e_dm_bt_hw_coex_all_off_8723a(struct ieee80211_hw *hw); 129f1d2b4d3SLarry Finger void rtl8723e_dm_bt_coexist_8723(struct ieee80211_hw *hw); 130f1d2b4d3SLarry Finger void rtl8723e_dm_bt_set_bt_dm(struct ieee80211_hw *hw, 131f1d2b4d3SLarry Finger struct btdm_8723 *p_btdm); 132f1d2b4d3SLarry Finger void rtl_8723e_c2h_command_handle(struct ieee80211_hw *hw); 133f1d2b4d3SLarry Finger void rtl_8723e_bt_wifi_media_status_notify(struct ieee80211_hw *hw, 134f1d2b4d3SLarry Finger bool mstatus); 135f1d2b4d3SLarry Finger void rtl8723e_dm_bt_turn_off_bt_coexist_before_enter_lps( 136f1d2b4d3SLarry Finger struct ieee80211_hw *hw); 137f1d2b4d3SLarry Finger 138f1d2b4d3SLarry Finger #endif 139