183 lines
3.7 KiB
C
Raw Permalink Normal View History

2025-05-10 21:58:58 +08:00
/******************************************************************************
*
* Copyright(c) 2019 - 2020 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 __PHL_BTC_DEF_H__
#define __PHL_BTC_DEF_H__
#define RTW_PHL_BTC_CTRL_BUF 40
#define RTW_PHL_BTC_FWINFO_BUF 1280
/*****************************************
* Please contact the member of BTC submodule if you
* need to revise this section
*****************************************/
#define RTW_BTINFO_MAXLEN 10
#define RTW_SCBD_MAXLEN 10
#define BTC_C2H_CAT 2 /* C2H Category for OutSrc */
#define BTC_CLASS_MIN 0x10
#define BTC_CLASS_FEV 0x12
#define BTC_CLASS_MAX 0x17
enum {
BTC_FEV_REPORT = 0,
BTC_FEV_BT_INFO = 1,
BTC_FEV_BT_SCBD = 2,
BTC_FEV_BT_REG = 3
};
/*****************************************/
enum {
BTC_HMSG_TMR_EN = 0x0,
BTC_HMSG_BT_REG_READBACK = 0x1,
BTC_HMSG_SET_BT_REQ_SLOT = 0x2,
BTC_HMSG_FW_EV = 0x3,
BTC_HMSG_BT_LINK_CHG = 0x4,
BTC_HMSG_SET_BT_REQ_STBC = 0x5,
BTC_HMSG_MAX
};
enum {
BTC_CTRL_TYPE_MANUAL,
BTC_CTRL_TYPE_EN_REPORT,
BTC_CTRL_TYPE_SET_SLOTS,
BTC_CTRL_TYPE_SET_MREGS,
BTC_CTRL_TYPE_SET_TDMA,
BTC_CTRL_TYPE_SET_1SLOT,
BTC_CTRL_TYPE_SET_POLICY,
BTC_CTRL_TYPE_SET_GPIO_DBG,
BTC_CTRL_TYPE_SEND_HUB_MSG,
BTC_CTRL_TYPE_TEST,
BTC_CTRL_TYPE_MAX
};
enum {
BTC_TIMER_PERIODIC,
BTC_TIMER_WL_SPECPKT,
BTC_TIMER_WL_RFKTO,
BTC_TIMER_BT_A2DPPLAY,
BTC_TIMER_MAX
};
enum RTW_PHL_BTC_CTRL_TYPE {
PHL_BTC_CTRL_MANUAL,
PHL_BTC_CTRL_MAX
};
enum {
PHL_BTC_CNTFY_BTINFO,
PHL_BTC_CNTFY_MAX
};
enum PHL_BTC_NTFY_REASON {
PHL_BTC_NTFY_RSN_PERIOTIC
};
enum RTW_PHL_BTC_NOTIFY {
PHL_BTC_NTFY_SCAN_START,
PHL_BTC_NTFY_SCAN_STOP,
PHL_BTC_NTFY_COEX_INFO,
PHL_BTC_NTFY_ROLE_INFO,
PHL_BTC_NTFY_CTRL,
PHL_BTC_NTFY_FWINFO,
PHL_BTC_NTFY_RADIO_STATE,
PHL_BTC_NTFY_WLSTA,
PHL_BTC_NTFY_PACKET_EVT,
PHL_BTC_NTFY_TIMER,
PHL_BTC_NTFY_MAX
};
enum {
BTC_MODE_NORMAL,
BTC_MODE_WL,
BTC_MODE_BT,
BTC_MODE_WLOFF,
BTC_MODE_MAX
};
enum {
BTC_RFCTRL_WL_OFF,
BTC_RFCTRL_WL_ON,
BTC_RFCTRL_LPS_WL_ON,
BTC_RFCTRL_FW_CTRL,
BTC_RFCTRL_MAX
};
struct rtw_phl_btc_ops {
void (*print)(const char *msg);
};
struct rtw_phl_btc_coex_info_param {
u8 query_type;
};
struct rtw_phl_btc_role_info_param {
u8 role_id;
enum role_state rstate;
};
struct rtw_phl_btc_wl_sta_param {
u8 role_id;
u16 mac_id;
u8 reason;
};
struct rtw_phl_btc_pkt_param {
u8 role_id;
u8 pkt_evt_type;
};
struct rtw_phl_btc_ctrl_param {
u8 type;
u16 len;
u8 buf[RTW_PHL_BTC_CTRL_BUF];
};
struct rtw_phl_btc_fwinfo_param {
u8 c2h_class;
u8 c2h_func;
};
struct rtw_phl_btc_radio_state_param {
u8 rf_on;
};
struct rtw_phl_btc_tmr_param {
void *timer;
};
struct rtw_phl_btc_ntfy {
enum RTW_PHL_BTC_NOTIFY notify;
struct rtw_phl_btc_ops *ops;
/* real parameter for different notifications */
union {
struct rtw_phl_btc_coex_info_param cinfo;
struct rtw_phl_btc_role_info_param rinfo;
struct rtw_phl_btc_ctrl_param ctrl;
struct rtw_phl_btc_radio_state_param rfst;
struct rtw_phl_btc_fwinfo_param finfo;
struct rtw_phl_btc_wl_sta_param wsta;
struct rtw_phl_btc_pkt_param pkt;
struct rtw_phl_btc_tmr_param tmr;
} u;
void *priv;
int (*ntfy_cb)(void *priv, enum RTW_PHL_BTC_NOTIFY ntfy,
struct rtw_phl_btc_ntfy *info);
};
#endif /* __PHL_BTC_DEF_H__ */