/******************************************************************************
|
*
|
* Copyright(c) 2019 Realtek Corporation.
|
*
|
* This program is free software; you can redistribute it and/or modify it
|
* under the terms of version 2 of the GNU General Public License as
|
* published by the Free Software Foundation.
|
*
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
* more details.
|
*
|
*****************************************************************************/
|
#ifndef __INC_BTC_ACTION_H__
|
#define __INC_BTC_ACTION_H__
|
|
enum {
|
BTC_PHY_0 = BIT(0),
|
BTC_PHY_1 = BIT(1),
|
BTC_PHY_ALL = BIT(0) | BIT(1),
|
};
|
|
enum btc_cx_state_map {
|
BTC_WIDLE = 0,
|
BTC_WBUSY_BNOSCAN,
|
BTC_WBUSY_BSCAN,
|
BTC_WSCAN_BNOSCAN,
|
BTC_WSCAN_BSCAN,
|
BTC_WLINKING
|
};
|
|
enum btc_ant_phase {
|
BTC_ANT_WPOWERON = 0,
|
BTC_ANT_WINIT,
|
BTC_ANT_WONLY,
|
BTC_ANT_WOFF,
|
BTC_ANT_W2G,
|
BTC_ANT_W5G,
|
BTC_ANT_W25G,
|
BTC_ANT_FREERUN,
|
BTC_ANT_WRFK,
|
BTC_ANT_BRFK,
|
BTC_ANT_MAX
|
};
|
|
enum {
|
BTC_PLT_NONE = 0,
|
BTC_PLT_LTE_RX = BIT(0),
|
BTC_PLT_GNT_BT_TX = BIT(1),
|
BTC_PLT_GNT_BT_RX = BIT(2),
|
BTC_PLT_GNT_WL = BIT(3),
|
BTC_PLT_BT = BIT(1) | BIT(2),
|
BTC_PLT_ALL = 0xf
|
};
|
|
enum btc_cx_poicy_main_type {
|
BTC_CXP_OFF = 0,
|
BTC_CXP_OFFB,
|
BTC_CXP_OFFE,
|
BTC_CXP_FIX,
|
BTC_CXP_PFIX,
|
BTC_CXP_AUTO,
|
BTC_CXP_PAUTO,
|
BTC_CXP_AUTO2,
|
BTC_CXP_PAUTO2,
|
BTC_CXP_MANUAL,
|
BTC_CXP_USERDEF0,
|
BTC_CXP_MAIN_MAX
|
};
|
|
enum {
|
BTC_BSLOT_A2DP_HID = 60,
|
BTC_BSLOT_A2DP = 50,
|
BTC_BSLOT_INQ = 30,
|
BTC_BSLOT_IDLE = 20,
|
};
|
|
enum btc_cx_poicy_type {
|
/* TDMA off + pri: BT > WL */
|
BTC_CXP_OFF_BT = (BTC_CXP_OFF << 8) | 0,
|
|
/* TDMA off + pri: WL > BT */
|
BTC_CXP_OFF_WL = (BTC_CXP_OFF << 8) | 1,
|
|
/* TDMA off + pri: BT = WL */
|
BTC_CXP_OFF_EQ0 = (BTC_CXP_OFF << 8) | 2,
|
|
/* TDMA off + pri: BT = WL > BT_Lo */
|
BTC_CXP_OFF_EQ1 = (BTC_CXP_OFF << 8) | 3,
|
|
/* TDMA off + pri: WL = BT, BT_Rx > WL_Lo_Tx */
|
BTC_CXP_OFF_EQ2 = (BTC_CXP_OFF << 8) | 4,
|
|
/* TDMA off + pri: WL_Rx = BT, BT_HI > WL_Tx > BT_Lo */
|
BTC_CXP_OFF_EQ3 = (BTC_CXP_OFF << 8) | 5,
|
|
/* TDMA off + pri: BT_Hi > WL > BT_Lo */
|
BTC_CXP_OFF_BWB0 = (BTC_CXP_OFF << 8) | 6,
|
|
/* TDMA off + pri: BT_Hi_Tx = WL_Hi-Tx > BT_Hi_Rx, BT_Hi > WL > BT_Lo */
|
BTC_CXP_OFF_BWB1 = (BTC_CXP_OFF << 8) | 7,
|
|
/* TDMA off + pri: WL_Hi-Tx > BT, BT_Hi > other-WL > BT_Lo */
|
BTC_CXP_OFF_BWB2 = (BTC_CXP_OFF << 8) | 8,
|
|
/* TDMA off+Bcn-Protect + pri: WL_Hi-Tx > BT_Hi_Rx, BT_Hi > WL > BT_Lo*/
|
BTC_CXP_OFFB_BWB0 = (BTC_CXP_OFFB << 8) | 0,
|
|
/* TDMA off + Ext-Ctrl + pri: default */
|
BTC_CXP_OFFE_2GBWISOB = (BTC_CXP_OFFE << 8) | 0,
|
|
/* TDMA off + Ext-Ctrl + pri: E2G-slot block all BT */
|
BTC_CXP_OFFE_2GISOB = (BTC_CXP_OFFE << 8) | 1,
|
|
/* TDMA off + Ext-Ctrl + pri: E2G-slot WL > BT */
|
BTC_CXP_OFFE_2GBWMIXB = (BTC_CXP_OFFE << 8) | 2,
|
|
/* TDMA off + Ext-Ctrl + pri: E2G/EBT-slot WL > BT */
|
BTC_CXP_OFFE_WL = (BTC_CXP_OFFE << 8) | 3,
|
|
/* TDMA off + Ext-Ctrl + pri: default */
|
BTC_CXP_OFFE_2GBWMIXB2 = (BTC_CXP_OFFE << 8) | 4,
|
|
/* TDMA Fix slot-0: W1:B1 = 30:30 */
|
BTC_CXP_FIX_TD3030 = (BTC_CXP_FIX << 8) | 0,
|
|
/* TDMA Fix slot-1: W1:B1 = 50:50 */
|
BTC_CXP_FIX_TD5050 = (BTC_CXP_FIX << 8) | 1,
|
|
/* TDMA Fix slot-2: W1:B1 = 20:30 */
|
BTC_CXP_FIX_TD2030 = (BTC_CXP_FIX << 8) | 2,
|
|
/* TDMA Fix slot-3: W1:B1 = 40:10 */
|
BTC_CXP_FIX_TD4010 = (BTC_CXP_FIX << 8) | 3,
|
|
/* TDMA Fix slot-4: W1:B1 = 70:10 */
|
BTC_CXP_FIX_TD7010 = (BTC_CXP_FIX << 8) | 4,
|
|
/* TDMA Fix slot-5: W1:B1 = 20:60 */
|
BTC_CXP_FIX_TD2060 = (BTC_CXP_FIX << 8) | 5,
|
|
/* TDMA Fix slot-6: W1:B1 = 30:60 */
|
BTC_CXP_FIX_TD3060 = (BTC_CXP_FIX << 8) | 6,
|
|
/* TDMA Fix slot-7: W1:B1 = 20:80 */
|
BTC_CXP_FIX_TD2080 = (BTC_CXP_FIX << 8) | 7,
|
|
/* TDMA Fix slot-8: W1:B1 = user-define */
|
BTC_CXP_FIX_TDW1B1 = (BTC_CXP_FIX << 8) | 8,
|
|
/* TDMA Fix slot-9: W1:B1 = 40:10 */
|
BTC_CXP_FIX_TD4010ISO = (BTC_CXP_FIX << 8) | 9,
|
|
/* PS-TDMA Fix slot-0: W1:B1 = 30:30 */
|
BTC_CXP_PFIX_TD3030 = (BTC_CXP_PFIX << 8) | 0,
|
|
/* PS-TDMA Fix slot-1: W1:B1 = 50:50 */
|
BTC_CXP_PFIX_TD5050 = (BTC_CXP_PFIX << 8) | 1,
|
|
/* PS-TDMA Fix slot-2: W1:B1 = 20:30 */
|
BTC_CXP_PFIX_TD2030 = (BTC_CXP_PFIX << 8) | 2,
|
|
/* PS-TDMA Fix slot-3: W1:B1 = 20:60 */
|
BTC_CXP_PFIX_TD2060 = (BTC_CXP_PFIX << 8) | 3,
|
|
/* PS-TDMA Fix slot-4: W1:B1 = 30:70 */
|
BTC_CXP_PFIX_TD3070 = (BTC_CXP_PFIX << 8) | 4,
|
|
/* PS-TDMA Fix slot-5: W1:B1 = 20:80 */
|
BTC_CXP_PFIX_TD2080 = (BTC_CXP_PFIX << 8) | 5,
|
|
/* PS-TDMA Fix slot-6: W1:B1 = user-define */
|
BTC_CXP_PFIX_TDW1B1 = (BTC_CXP_PFIX << 8) | 6,
|
|
/* TDMA Auto slot-0: W1:B1 = 50:BTC_B1_MAX */
|
BTC_CXP_AUTO_TD50B1 = (BTC_CXP_AUTO << 8) | 0,
|
|
/* TDMA Auto slot-1: W1:B1 = 60:BTC_B1_MAX */
|
BTC_CXP_AUTO_TD60B1 = (BTC_CXP_AUTO << 8) | 1,
|
|
/* TDMA Auto slot-2: W1:B1 = 20:BTC_B1_MAX */
|
BTC_CXP_AUTO_TD20B1 = (BTC_CXP_AUTO << 8) | 2,
|
|
/* TDMA Auto slot-3: W1:B1 = user-define */
|
BTC_CXP_AUTO_TDW1B1 = (BTC_CXP_AUTO << 8) | 3,
|
|
/* PS-TDMA Auto slot-0: W1:B1 = 50:BTC_B1_MAX */
|
BTC_CXP_PAUTO_TD50B1 = (BTC_CXP_PAUTO << 8) | 0,
|
|
/* PS-TDMA Auto slot-1: W1:B1 = 60:BTC_B1_MAX */
|
BTC_CXP_PAUTO_TD60B1 = (BTC_CXP_PAUTO << 8) | 1,
|
|
/* PS-TDMA Auto slot-2: W1:B1 = 20:BTC_B1_MAX */
|
BTC_CXP_PAUTO_TD20B1 = (BTC_CXP_PAUTO << 8) | 2,
|
|
/* PS-TDMA Auto slot-3: W1:B1 = user-define */
|
BTC_CXP_PAUTO_TDW1B1 = (BTC_CXP_PAUTO << 8) | 3,
|
|
/* TDMA Auto slot2-0: W1:B4 = 30:50 */
|
BTC_CXP_AUTO2_TD3050 = (BTC_CXP_AUTO2 << 8) | 0,
|
|
/* TDMA Auto slot2-1: W1:B4 = 30:70 */
|
BTC_CXP_AUTO2_TD3070 = (BTC_CXP_AUTO2 << 8) | 1,
|
|
/* TDMA Auto slot2-2: W1:B4 = 50:50 */
|
BTC_CXP_AUTO2_TD5050 = (BTC_CXP_AUTO2 << 8) | 2,
|
|
/* TDMA Auto slot2-3: W1:B4 = 60:60 */
|
BTC_CXP_AUTO2_TD6060 = (BTC_CXP_AUTO2 << 8) | 3,
|
|
/* TDMA Auto slot2-4: W1:B4 = 20:80 */
|
BTC_CXP_AUTO2_TD2080 = (BTC_CXP_AUTO2 << 8) | 4,
|
|
/* TDMA Auto slot2-5: W1:B4 = user-define */
|
BTC_CXP_AUTO2_TDW1B4 = (BTC_CXP_AUTO2 << 8) | 5,
|
|
/* PS-TDMA Auto slot2-0: W1:B4 = 30:50 */
|
BTC_CXP_PAUTO2_TD3050 = (BTC_CXP_PAUTO2 << 8) | 0,
|
|
/* PS-TDMA Auto slot2-1: W1:B4 = 30:70 */
|
BTC_CXP_PAUTO2_TD3070 = (BTC_CXP_PAUTO2 << 8) | 1,
|
|
/* PS-TDMA Auto slot2-2: W1:B4 = 50:50 */
|
BTC_CXP_PAUTO2_TD5050 = (BTC_CXP_PAUTO2 << 8) | 2,
|
|
/* PS-TDMA Auto slot2-3: W1:B4 = 60:60 */
|
BTC_CXP_PAUTO2_TD6060 = (BTC_CXP_PAUTO2 << 8) | 3,
|
|
/* PS-TDMA Auto slot2-4: W1:B4 = 20:80 */
|
BTC_CXP_PAUTO2_TD2080 = (BTC_CXP_PAUTO2 << 8) | 4,
|
|
/* PS-TDMA Auto slot2-5: W1:B4 = user-define */
|
BTC_CXP_PAUTO2_TDW1B4 = (BTC_CXP_PAUTO2 << 8) | 5,
|
|
BTC_CXP_MAX = 0xffff
|
};
|
|
void _action_wl_25g_mcc(struct btc_t *btc);
|
void _action_wl_2g_ap(struct btc_t *btc);
|
void _action_wl_2g_go(struct btc_t *btc);
|
void _action_wl_2g_gc(struct btc_t *btc);
|
void _action_wl_2g_nan(struct btc_t *btc);
|
void _action_wl_2g_scc(struct btc_t *btc);
|
void _action_wl_2g_sta(struct btc_t *btc);
|
void _action_wl_scan(struct btc_t *btc);
|
void _action_wl_2g_mcc(struct btc_t *btc);
|
void _action_wl_5g(struct btc_t *btc);
|
void _action_wl_other(struct btc_t *btc);
|
void _action_wl_idle(struct btc_t *btc);
|
void _action_wl_nc(struct btc_t *btc);
|
void _action_wl_rfk(struct btc_t *btc);
|
void _action_wl_init(struct btc_t *btc);
|
void _action_wl_off(struct btc_t *btc);
|
void _action_freerun(struct btc_t *btc);
|
void _action_wl_only(struct btc_t *btc);
|
void _action_bt_off(struct btc_t *btc);
|
void _action_bt_rfk(struct btc_t *btc);
|
void _action_bt_whql(struct btc_t *btc);
|
void _action_common(struct btc_t *btc);
|
//extern const u32 cxtbl[];
|
|
void _update_btc_state_map(struct btc_t *btc);
|
void _set_bt_ignore_wlan_act(struct btc_t *btc, u8 enable);
|
void _set_wl_tx_power(struct btc_t *btc, u32 level);
|
void _set_wl_rx_gain(struct btc_t *btc, u32 level);
|
void _set_bt_tx_power(struct btc_t *btc, u32 level);
|
void _set_bt_rx_gain(struct btc_t *btc, u32 level);
|
void _set_gnt_wl(struct btc_t *btc, u8 phy_map, u8 state);
|
void _set_gnt_bt(struct btc_t *btc, u8 phy_map, u8 state);
|
|
extern struct fbtc_tdma t_def[];
|
extern struct fbtc_slot s_def[];
|
|
#endif
|