linux/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/hal_btc.h
<<
>>
Prefs
   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 * The full GNU General Public License is included in this distribution in the
  15 * file called LICENSE.
  16 *
  17 * Contact Information:
  18 * wlanfae <wlanfae@realtek.com>
  19 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
  20 * Hsinchu 300, Taiwan.
  21 * Larry Finger <Larry.Finger@lwfinger.net>
  22 *
  23 *****************************************************************************/
  24
  25#ifndef __RTL8723E_HAL_BTC_H__
  26#define __RTL8723E_HAL_BTC_H__
  27
  28#include "../wifi.h"
  29#include "btc.h"
  30#include "hal_bt_coexist.h"
  31
  32#define BT_TXRX_CNT_THRES_1                     1200
  33#define BT_TXRX_CNT_THRES_2                     1400
  34#define BT_TXRX_CNT_THRES_3                     3000
  35/* < 1200 */
  36#define BT_TXRX_CNT_LEVEL_0                     0
  37/* >= 1200 && < 1400 */
  38#define BT_TXRX_CNT_LEVEL_1                     1
  39/* >= 1400 */
  40#define BT_TXRX_CNT_LEVEL_2                     2
  41#define BT_TXRX_CNT_LEVEL_3                     3
  42
  43#define BT_COEX_DISABLE                 0
  44#define BT_Q_PKT_OFF                    0
  45#define BT_Q_PKT_ON                     1
  46
  47#define BT_TX_PWR_OFF                   0
  48#define BT_TX_PWR_ON                    1
  49
  50/* TDMA mode definition */
  51#define TDMA_2ANT                       0
  52#define TDMA_1ANT                       1
  53#define TDMA_NAV_OFF                    0
  54#define TDMA_NAV_ON                     1
  55#define TDMA_DAC_SWING_OFF              0
  56#define TDMA_DAC_SWING_ON               1
  57
  58/* PTA mode related definition */
  59#define BT_PTA_MODE_OFF         0
  60#define BT_PTA_MODE_ON          1
  61
  62/* Penalty Tx Rate Adaptive */
  63#define BT_TX_RATE_ADAPTIVE_NORMAL      0
  64#define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1
  65
  66/* RF Corner */
  67#define BT_RF_RX_LPF_CORNER_RESUME      0
  68#define BT_RF_RX_LPF_CORNER_SHRINK      1
  69
  70#define C2H_EVT_HOST_CLOSE              0x00
  71#define C2H_EVT_FW_CLOSE                0xFF
  72
  73enum bt_traffic_mode {
  74        BT_MOTOR_EXT_BE = 0x00,
  75        BT_MOTOR_EXT_GUL = 0x01,
  76        BT_MOTOR_EXT_GUB = 0x02,
  77        BT_MOTOR_EXT_GULB = 0x03
  78};
  79
  80enum bt_traffic_mode_profile {
  81        BT_PROFILE_NONE,
  82        BT_PROFILE_A2DP,
  83        BT_PROFILE_PAN,
  84        BT_PROFILE_HID,
  85        BT_PROFILE_SCO
  86};
  87
  88/*
  89enum hci_ext_bt_operation {
  90        HCI_BT_OP_NONE = 0x0,
  91        HCI_BT_OP_INQUIRE_START = 0x1,
  92        HCI_BT_OP_INQUIRE_FINISH = 0x2,
  93        HCI_BT_OP_PAGING_START = 0x3,
  94        HCI_BT_OP_PAGING_SUCCESS = 0x4,
  95        HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
  96        HCI_BT_OP_PAIRING_START = 0x6,
  97        HCI_BT_OP_PAIRING_FINISH = 0x7,
  98        HCI_BT_OP_BT_DEV_ENABLE = 0x8,
  99        HCI_BT_OP_BT_DEV_DISABLE = 0x9,
 100        HCI_BT_OP_MAX,
 101};
 102*/
 103
 104enum bt_spec {
 105        BT_SPEC_1_0_b = 0x00,
 106        BT_SPEC_1_1 = 0x01,
 107        BT_SPEC_1_2 = 0x02,
 108        BT_SPEC_2_0_EDR = 0x03,
 109        BT_SPEC_2_1_EDR = 0x04,
 110        BT_SPEC_3_0_HS = 0x05,
 111        BT_SPEC_4_0 = 0x06
 112};
 113
 114struct c2h_evt_hdr {
 115        u8 cmd_id;
 116        u8 cmd_len;
 117        u8 cmd_seq;
 118};
 119
 120enum bt_state {
 121        BT_INFO_STATE_DISABLED = 0,
 122        BT_INFO_STATE_NO_CONNECTION = 1,
 123        BT_INFO_STATE_CONNECT_IDLE = 2,
 124        BT_INFO_STATE_INQ_OR_PAG = 3,
 125        BT_INFO_STATE_ACL_ONLY_BUSY = 4,
 126        BT_INFO_STATE_SCO_ONLY_BUSY = 5,
 127        BT_INFO_STATE_ACL_SCO_BUSY = 6,
 128        BT_INFO_STATE_HID_BUSY = 7,
 129        BT_INFO_STATE_HID_SCO_BUSY = 8,
 130        BT_INFO_STATE_MAX = 7
 131};
 132
 133enum rtl8723e_c2h_evt {
 134        C2H_DBG = 0,
 135        C2H_TSF = 1,
 136        C2H_AP_RPT_RSP = 2,
 137        /* The FW notify the report of the specific tx packet. */
 138        C2H_CCX_TX_RPT = 3,
 139        C2H_BT_RSSI = 4,
 140        C2H_BT_OP_MODE = 5,
 141        C2H_HW_INFO_EXCH = 10,
 142        C2H_C2H_H2C_TEST = 11,
 143        BT_INFO = 12,
 144        MAX_C2HEVENT
 145};
 146
 147void rtl8723e_dm_bt_fw_coex_all_off_8723a(struct ieee80211_hw *hw);
 148void rtl8723e_dm_bt_sw_coex_all_off_8723a(struct ieee80211_hw *hw);
 149void rtl8723e_dm_bt_hw_coex_all_off_8723a(struct ieee80211_hw *hw);
 150void rtl8723e_dm_bt_coexist_8723(struct ieee80211_hw *hw);
 151void rtl8723e_dm_bt_set_bt_dm(struct ieee80211_hw *hw,
 152                              struct btdm_8723 *p_btdm);
 153void rtl_8723e_c2h_command_handle(struct ieee80211_hw *hw);
 154void rtl_8723e_bt_wifi_media_status_notify(struct ieee80211_hw *hw,
 155                                        bool mstatus);
 156void rtl8723e_dm_bt_turn_off_bt_coexist_before_enter_lps(
 157                                struct ieee80211_hw *hw);
 158
 159#endif
 160