Linux Audio

Check our new training course

Loading...
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/******************************************************************************
  3 *
  4 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
  5 *
  6 ******************************************************************************/
  7/*  The following is for 8723B 2Ant BT Co-exist definition */
  8#define	BT_INFO_8723B_2ANT_B_FTP		BIT7
  9#define	BT_INFO_8723B_2ANT_B_A2DP		BIT6
 10#define	BT_INFO_8723B_2ANT_B_HID		BIT5
 11#define	BT_INFO_8723B_2ANT_B_SCO_BUSY		BIT4
 12#define	BT_INFO_8723B_2ANT_B_ACL_BUSY		BIT3
 13#define	BT_INFO_8723B_2ANT_B_INQ_PAGE		BIT2
 14#define	BT_INFO_8723B_2ANT_B_SCO_ESCO		BIT1
 15#define	BT_INFO_8723B_2ANT_B_CONNECTION		BIT0
 16
 17#define		BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT		2
 18
 19enum {
 20	BT_INFO_SRC_8723B_2ANT_WIFI_FW        = 0x0,
 21	BT_INFO_SRC_8723B_2ANT_BT_RSP         = 0x1,
 22	BT_INFO_SRC_8723B_2ANT_BT_ACTIVE_SEND = 0x2,
 23	BT_INFO_SRC_8723B_2ANT_MAX
 24};
 25
 26enum {
 27	BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0,
 28	BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE     = 0x1,
 29	BT_8723B_2ANT_BT_STATUS_INQ_PAGE           = 0x2,
 30	BT_8723B_2ANT_BT_STATUS_ACL_BUSY           = 0x3,
 31	BT_8723B_2ANT_BT_STATUS_SCO_BUSY           = 0x4,
 32	BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY       = 0x5,
 33	BT_8723B_2ANT_BT_STATUS_MAX
 34};
 35
 36enum {
 37	BT_8723B_2ANT_COEX_ALGO_UNDEFINED       = 0x0,
 38	BT_8723B_2ANT_COEX_ALGO_SCO             = 0x1,
 39	BT_8723B_2ANT_COEX_ALGO_HID             = 0x2,
 40	BT_8723B_2ANT_COEX_ALGO_A2DP            = 0x3,
 41	BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS      = 0x4,
 42	BT_8723B_2ANT_COEX_ALGO_PANEDR          = 0x5,
 43	BT_8723B_2ANT_COEX_ALGO_PANHS           = 0x6,
 44	BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP     = 0x7,
 45	BT_8723B_2ANT_COEX_ALGO_PANEDR_HID      = 0x8,
 46	BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR	= 0x9,
 47	BT_8723B_2ANT_COEX_ALGO_HID_A2DP        = 0xa,
 48	BT_8723B_2ANT_COEX_ALGO_MAX             = 0xb,
 49};
 50
 51struct coex_dm_8723b_2ant {
 52	/*  fw mechanism */
 53	u8 preBtDecPwrLvl;
 54	u8 curBtDecPwrLvl;
 55	u8 preFwDacSwingLvl;
 56	u8 curFwDacSwingLvl;
 57	bool bCurIgnoreWlanAct;
 58	bool bPreIgnoreWlanAct;
 59	u8 prePsTdma;
 60	u8 curPsTdma;
 61	u8 psTdmaPara[5];
 62	u8 psTdmaDuAdjType;
 63	bool bResetTdmaAdjust;
 64	bool bAutoTdmaAdjust;
 65	bool bPrePsTdmaOn;
 66	bool bCurPsTdmaOn;
 67	bool bPreBtAutoReport;
 68	bool bCurBtAutoReport;
 69
 70	/*  sw mechanism */
 71	bool bPreRfRxLpfShrink;
 72	bool bCurRfRxLpfShrink;
 73	u32 btRf0x1eBackup;
 74	bool bPreLowPenaltyRa;
 75	bool bCurLowPenaltyRa;
 76	bool bPreDacSwingOn;
 77	u32  preDacSwingLvl;
 78	bool bCurDacSwingOn;
 79	u32  curDacSwingLvl;
 80	bool bPreAdcBackOff;
 81	bool bCurAdcBackOff;
 82	bool bPreAgcTableEn;
 83	bool bCurAgcTableEn;
 84	u32 preVal0x6c0;
 85	u32 curVal0x6c0;
 86	u32 preVal0x6c4;
 87	u32 curVal0x6c4;
 88	u32 preVal0x6c8;
 89	u32 curVal0x6c8;
 90	u8 preVal0x6cc;
 91	u8 curVal0x6cc;
 92	bool bLimitedDig;
 93
 94	/*  algorithm related */
 95	u8 preAlgorithm;
 96	u8 curAlgorithm;
 97	u8 btStatus;
 98	u8 wifiChnlInfo[3];
 99
100	bool bNeedRecover0x948;
101	u32 backup0x948;
102};
103
104struct coex_sta_8723b_2ant {
105	bool bBtLinkExist;
106	bool bScoExist;
107	bool bA2dpExist;
108	bool bHidExist;
109	bool bPanExist;
110
111	bool bUnderLps;
112	bool bUnderIps;
113	u32 highPriorityTx;
114	u32 highPriorityRx;
115	u32 lowPriorityTx;
116	u32 lowPriorityRx;
117	u8 btRssi;
118	bool bBtTxRxMask;
119	u8 preBtRssiState;
120	u8 preWifiRssiState[4];
121	bool bC2hBtInfoReqSent;
122	u8 btInfoC2h[BT_INFO_SRC_8723B_2ANT_MAX][10];
123	u32 btInfoC2hCnt[BT_INFO_SRC_8723B_2ANT_MAX];
124	bool bC2hBtInquiryPage;
125	u8 btRetryCnt;
126	u8 btInfoExt;
127};
128
129/*  */
130/*  The following is interface which will notify coex module. */
131/*  */
132void EXhalbtc8723b2ant_PowerOnSetting(struct btc_coexist *pBtCoexist);
133void EXhalbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bWifiOnly);
134void EXhalbtc8723b2ant_InitCoexDm(struct btc_coexist *pBtCoexist);
135void EXhalbtc8723b2ant_IpsNotify(struct btc_coexist *pBtCoexist, u8 type);
136void EXhalbtc8723b2ant_LpsNotify(struct btc_coexist *pBtCoexist, u8 type);
137void EXhalbtc8723b2ant_ScanNotify(struct btc_coexist *pBtCoexist, u8 type);
138void EXhalbtc8723b2ant_ConnectNotify(struct btc_coexist *pBtCoexist, u8 type);
139void EXhalbtc8723b2ant_MediaStatusNotify(struct btc_coexist *pBtCoexist, u8 type);
140void EXhalbtc8723b2ant_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 type);
141void EXhalbtc8723b2ant_BtInfoNotify(
142	struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length
143);
144void EXhalbtc8723b2ant_HaltNotify(struct btc_coexist *pBtCoexist);
145void EXhalbtc8723b2ant_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState);
146void EXhalbtc8723b2ant_Periodical(struct btc_coexist *pBtCoexist);