1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2019 - 2020 Realtek Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 6*4882a593Smuzhiyun * under the terms of version 2 of the GNU General Public License as 7*4882a593Smuzhiyun * published by the Free Software Foundation. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but WITHOUT 10*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12*4882a593Smuzhiyun * more details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun *****************************************************************************/ 15*4882a593Smuzhiyun #ifndef __PHL_BTC_DEF_H__ 16*4882a593Smuzhiyun #define __PHL_BTC_DEF_H__ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #define RTW_PHL_BTC_CTRL_BUF 40 19*4882a593Smuzhiyun #define RTW_PHL_BTC_FWINFO_BUF 1280 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /***************************************** 23*4882a593Smuzhiyun * Please contact the member of BTC submodule if you 24*4882a593Smuzhiyun * need to revise this section 25*4882a593Smuzhiyun *****************************************/ 26*4882a593Smuzhiyun #define RTW_BTINFO_MAXLEN 10 27*4882a593Smuzhiyun #define RTW_SCBD_MAXLEN 10 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define BTC_C2H_CAT 2 /* C2H Category for OutSrc */ 30*4882a593Smuzhiyun #define BTC_CLASS_MIN 0x10 31*4882a593Smuzhiyun #define BTC_CLASS_FEV 0x12 32*4882a593Smuzhiyun #define BTC_CLASS_MAX 0x17 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun enum { 35*4882a593Smuzhiyun BTC_FEV_REPORT = 0, 36*4882a593Smuzhiyun BTC_FEV_BT_INFO = 1, 37*4882a593Smuzhiyun BTC_FEV_BT_SCBD = 2, 38*4882a593Smuzhiyun BTC_FEV_BT_REG = 3 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun /*****************************************/ 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun enum { 43*4882a593Smuzhiyun BTC_HMSG_TMR_EN = 0x0, 44*4882a593Smuzhiyun BTC_HMSG_BT_REG_READBACK = 0x1, 45*4882a593Smuzhiyun BTC_HMSG_SET_BT_REQ_SLOT = 0x2, 46*4882a593Smuzhiyun BTC_HMSG_FW_EV = 0x3, 47*4882a593Smuzhiyun BTC_HMSG_BT_LINK_CHG = 0x4, 48*4882a593Smuzhiyun BTC_HMSG_MAX 49*4882a593Smuzhiyun }; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun enum { 52*4882a593Smuzhiyun BTC_CTRL_TYPE_MANUAL, 53*4882a593Smuzhiyun BTC_CTRL_TYPE_EN_REPORT, 54*4882a593Smuzhiyun BTC_CTRL_TYPE_SET_SLOTS, 55*4882a593Smuzhiyun BTC_CTRL_TYPE_SET_MREGS, 56*4882a593Smuzhiyun BTC_CTRL_TYPE_SET_TDMA, 57*4882a593Smuzhiyun BTC_CTRL_TYPE_SET_1SLOT, 58*4882a593Smuzhiyun BTC_CTRL_TYPE_SET_POLICY, 59*4882a593Smuzhiyun BTC_CTRL_TYPE_SET_GPIO_DBG, 60*4882a593Smuzhiyun BTC_CTRL_TYPE_SEND_HUB_MSG, 61*4882a593Smuzhiyun BTC_CTRL_TYPE_TEST, 62*4882a593Smuzhiyun BTC_CTRL_TYPE_MAX 63*4882a593Smuzhiyun }; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun enum { 66*4882a593Smuzhiyun BTC_TIMER_PERIODIC, 67*4882a593Smuzhiyun BTC_TIMER_WL_SPECPKT, 68*4882a593Smuzhiyun BTC_TIMER_WL_RFKTO, 69*4882a593Smuzhiyun BTC_TIMER_BT_A2DPPLAY, 70*4882a593Smuzhiyun BTC_TIMER_MAX 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun enum RTW_PHL_BTC_CTRL_TYPE { 74*4882a593Smuzhiyun PHL_BTC_CTRL_MANUAL, 75*4882a593Smuzhiyun PHL_BTC_CTRL_MAX 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun enum { 79*4882a593Smuzhiyun PHL_BTC_CNTFY_BTINFO, 80*4882a593Smuzhiyun PHL_BTC_CNTFY_MAX 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun enum PHL_BTC_NTFY_REASON { 84*4882a593Smuzhiyun PHL_BTC_NTFY_RSN_PERIOTIC 85*4882a593Smuzhiyun }; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun enum RTW_PHL_BTC_NOTIFY { 88*4882a593Smuzhiyun PHL_BTC_NTFY_SCAN_START, 89*4882a593Smuzhiyun PHL_BTC_NTFY_SCAN_STOP, 90*4882a593Smuzhiyun PHL_BTC_NTFY_COEX_INFO, 91*4882a593Smuzhiyun PHL_BTC_NTFY_ROLE_INFO, 92*4882a593Smuzhiyun PHL_BTC_NTFY_CTRL, 93*4882a593Smuzhiyun PHL_BTC_NTFY_FWINFO, 94*4882a593Smuzhiyun PHL_BTC_NTFY_RADIO_STATE, 95*4882a593Smuzhiyun PHL_BTC_NTFY_WLSTA, 96*4882a593Smuzhiyun PHL_BTC_NTFY_PACKET_EVT, 97*4882a593Smuzhiyun PHL_BTC_NTFY_TIMER, 98*4882a593Smuzhiyun PHL_BTC_NTFY_MAX 99*4882a593Smuzhiyun }; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun enum { 102*4882a593Smuzhiyun BTC_MODE_NORMAL, 103*4882a593Smuzhiyun BTC_MODE_WL, 104*4882a593Smuzhiyun BTC_MODE_BT, 105*4882a593Smuzhiyun BTC_MODE_WLOFF, 106*4882a593Smuzhiyun BTC_MODE_MAX 107*4882a593Smuzhiyun }; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun enum { 110*4882a593Smuzhiyun BTC_RFCTRL_WL_OFF, 111*4882a593Smuzhiyun BTC_RFCTRL_WL_ON, 112*4882a593Smuzhiyun BTC_RFCTRL_LPS_WL_ON, 113*4882a593Smuzhiyun BTC_RFCTRL_FW_CTRL, 114*4882a593Smuzhiyun BTC_RFCTRL_MAX 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun struct rtw_phl_btc_ops { 118*4882a593Smuzhiyun void (*print)(const char *msg); 119*4882a593Smuzhiyun }; 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun struct rtw_phl_btc_coex_info_param { 122*4882a593Smuzhiyun u8 query_type; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun struct rtw_phl_btc_role_info_param { 126*4882a593Smuzhiyun u8 role_id; 127*4882a593Smuzhiyun enum role_state rstate; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun struct rtw_phl_btc_wl_sta_param { 131*4882a593Smuzhiyun u8 role_id; 132*4882a593Smuzhiyun u16 mac_id; 133*4882a593Smuzhiyun u8 reason; 134*4882a593Smuzhiyun }; 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun struct rtw_phl_btc_pkt_param { 137*4882a593Smuzhiyun u8 role_id; 138*4882a593Smuzhiyun u8 pkt_evt_type; 139*4882a593Smuzhiyun }; 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun struct rtw_phl_btc_ctrl_param { 142*4882a593Smuzhiyun u8 type; 143*4882a593Smuzhiyun u16 len; 144*4882a593Smuzhiyun u8 buf[RTW_PHL_BTC_CTRL_BUF]; 145*4882a593Smuzhiyun }; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun struct rtw_phl_btc_fwinfo_param { 148*4882a593Smuzhiyun u8 c2h_class; 149*4882a593Smuzhiyun u8 c2h_func; 150*4882a593Smuzhiyun }; 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun struct rtw_phl_btc_radio_state_param { 153*4882a593Smuzhiyun u8 rf_on; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun struct rtw_phl_btc_tmr_param { 157*4882a593Smuzhiyun void *timer; 158*4882a593Smuzhiyun }; 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun struct rtw_phl_btc_ntfy { 161*4882a593Smuzhiyun enum RTW_PHL_BTC_NOTIFY notify; 162*4882a593Smuzhiyun struct rtw_phl_btc_ops *ops; 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun /* real parameter for different notifications */ 165*4882a593Smuzhiyun union { 166*4882a593Smuzhiyun struct rtw_phl_btc_coex_info_param cinfo; 167*4882a593Smuzhiyun struct rtw_phl_btc_role_info_param rinfo; 168*4882a593Smuzhiyun struct rtw_phl_btc_ctrl_param ctrl; 169*4882a593Smuzhiyun struct rtw_phl_btc_radio_state_param rfst; 170*4882a593Smuzhiyun struct rtw_phl_btc_fwinfo_param finfo; 171*4882a593Smuzhiyun struct rtw_phl_btc_wl_sta_param wsta; 172*4882a593Smuzhiyun struct rtw_phl_btc_pkt_param pkt; 173*4882a593Smuzhiyun struct rtw_phl_btc_tmr_param tmr; 174*4882a593Smuzhiyun } u; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun void *priv; 177*4882a593Smuzhiyun int (*ntfy_cb)(void *priv, enum RTW_PHL_BTC_NOTIFY ntfy, 178*4882a593Smuzhiyun struct rtw_phl_btc_ntfy *info); 179*4882a593Smuzhiyun }; 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun #endif /* __PHL_BTC_DEF_H__ */ 182