xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/phl/phl_mcc.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2019 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_MCC_H_
16*4882a593Smuzhiyun #define _PHL_MCC_H_
17*4882a593Smuzhiyun /* MCC definition for private usage */
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #define phl_to_com_mcc_info(_phl) ((struct phl_com_mcc_info *)(phl_to_mr_ctrl(_phl)->com_mcc))
20*4882a593Smuzhiyun #define get_mcc_info(_phl, _band) ((struct phl_mcc_info *)((get_band_ctrl(_phl, _band)->mcc_info)))
21*4882a593Smuzhiyun #define set_mcc_init_state(_phl, _state) (((struct mr_ctl_t *)phl_to_mr_ctrl(_phl))->init_mcc = _state)
22*4882a593Smuzhiyun #define is_mcc_init(_phl) (((struct mr_ctl_t *)phl_to_mr_ctrl(_phl))->init_mcc == true)
23*4882a593Smuzhiyun #define get_ref_role(_en_info) ((struct rtw_phl_mcc_role *)&(_en_info->mcc_role[_en_info->ref_role_idx]))
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define EARLY_TX_BCN_T 10
26*4882a593Smuzhiyun #define MIN_TX_BCN_T 10
27*4882a593Smuzhiyun #define EARLY_RX_BCN_T 5
28*4882a593Smuzhiyun #define MIN_RX_BCN_T 10
29*4882a593Smuzhiyun #define MIN_GO_STA_OFFSET_T 15
30*4882a593Smuzhiyun #define MIN_CLIENT_DUR (EARLY_RX_BCN_T + MIN_RX_BCN_T)
31*4882a593Smuzhiyun #define MIN_AP_DUR (EARLY_TX_BCN_T + MIN_GO_STA_OFFSET_T - EARLY_RX_BCN_T)
32*4882a593Smuzhiyun #define MIN_BCNS_OFFSET (EARLY_RX_BCN_T + MIN_RX_BCN_T)
33*4882a593Smuzhiyun #define MAX_MCC_GROUP_ROLE 2
34*4882a593Smuzhiyun #define DEFAULT_AP_DUR 60
35*4882a593Smuzhiyun #define DEFAULT_CLIENT_DUR 40
36*4882a593Smuzhiyun #define MCC_DUR_NONSPECIFIC 0xff
37*4882a593Smuzhiyun #define CLIENTS_WORSECASE_REF_TOA 30
38*4882a593Smuzhiyun #define CLIENTS_WORSECASE_SMALL_DUR 60
39*4882a593Smuzhiyun #define CLIENTS_WORSECASE_LARGE_DUR 90
40*4882a593Smuzhiyun #define WORSECASE_INTVL 150
41*4882a593Smuzhiyun #define MIN_TRIGGER_MCC_TIME 300/*TU*/
42*4882a593Smuzhiyun #define CLIENTS_TRACKING_TH 3
43*4882a593Smuzhiyun #define CLIENTS_TRACKING_WORSECASE_TH 3
44*4882a593Smuzhiyun #define CLIENTS_TRACKING_COURTESY_TH 3
45*4882a593Smuzhiyun #define CLIENTS_TRACKING_CRITICAL_POINT_TH 2
46*4882a593Smuzhiyun #define HANDLE_BCN_INTVL 100
47*4882a593Smuzhiyun #define BT_DUR_SEG_TH 20
48*4882a593Smuzhiyun #define AP_CLIENT_OFFSET 40
49*4882a593Smuzhiyun #define REF_ROLE_IDX 0
50*4882a593Smuzhiyun #define BT_DUR_MAX_2WS 33 /*The max bt slot for 2wifi slot and 1 bt slot*/
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun enum _mcc_minfo_reset_type {
53*4882a593Smuzhiyun 	MINFO_RESET_EN_INFO = BIT(0),
54*4882a593Smuzhiyun 	MINFO_RESET_MODE = BIT(1),
55*4882a593Smuzhiyun 	MINFO_RESET_ROLE_MAP = BIT(2),
56*4882a593Smuzhiyun 	MINFO_RESET_STATE = BIT(3),
57*4882a593Smuzhiyun 	MINFO_RESET_COEX_MODE = BIT(4),
58*4882a593Smuzhiyun 	MINFO_RESET_BT_INFO = BIT(5),
59*4882a593Smuzhiyun 	MINFO_RESET_PATTERN_INFO = BIT(6),
60*4882a593Smuzhiyun 	MINFO_RESET_ALL = 0xFF
61*4882a593Smuzhiyun };
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun enum _mcc_role_cat {
64*4882a593Smuzhiyun 	MCC_ROLE_NONE = 0,
65*4882a593Smuzhiyun 	MCC_ROLE_AP_CAT,
66*4882a593Smuzhiyun 	MCC_ROLE_CLIENT_CAT
67*4882a593Smuzhiyun };
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun struct phl_mcc_fw_log_info {
70*4882a593Smuzhiyun 	bool en_fw_mcc_log;
71*4882a593Smuzhiyun 	u8 fw_mcc_log_lv;/* fw mcc log level */
72*4882a593Smuzhiyun 	bool update; /*if update = true, we need to update setting to fw.*/
73*4882a593Smuzhiyun };
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun struct phl_mcc_info {
76*4882a593Smuzhiyun 	struct rtw_phl_mcc_en_info en_info;
77*4882a593Smuzhiyun 	enum rtw_phl_tdmra_wmode mcc_mode;
78*4882a593Smuzhiyun 	u8 role_map; /*the wifi role map in operating mcc */
79*4882a593Smuzhiyun 	enum rtw_phl_mcc_state state;
80*4882a593Smuzhiyun 	enum rtw_phl_mcc_coex_mode coex_mode;
81*4882a593Smuzhiyun 	struct rtw_phl_mcc_bt_info bt_info;
82*4882a593Smuzhiyun 	struct phl_mcc_fw_log_info fw_log_i;
83*4882a593Smuzhiyun };
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun #endif /*_PHL_MCC_H_*/
88