176 lines
4.4 KiB
C
176 lines
4.4 KiB
C
/******************************************************************************
|
|
*
|
|
* Copyright(c) 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_REGULATION_DEF_H_
|
|
#define _PHL_REGULATION_DEF_H_
|
|
|
|
#define RSVD_DOMAIN 0x1a
|
|
|
|
#define MAX_CH_NUM_2GHZ 14
|
|
|
|
#define MAX_CH_NUM_BAND1 4 /* 36, 40, 44, 48 */
|
|
#define MAX_CH_NUM_BAND2 4 /* 52, 56, 60, 64 */
|
|
#define MAX_CH_NUM_BAND3 12 /* 100, 104, 108, 112,
|
|
116, 120, 124, 128,
|
|
132, 136, 140, 144 */
|
|
#define MAX_CH_NUM_BAND4 8 /* 149, 153, 157, 161, 165, 169, 173, 177 */
|
|
#define MAX_CH_NUM_5GHZ (MAX_CH_NUM_BAND1 + MAX_CH_NUM_BAND2 +\
|
|
MAX_CH_NUM_BAND3 + MAX_CH_NUM_BAND4)
|
|
|
|
#define MAX_CH_NUM_UNII5 24 /* 1 ~ 93 */
|
|
#define MAX_CH_NUM_UNII6 6 /* 97 ~ 117 */
|
|
#define MAX_CH_NUM_UNII7 18 /* 121 ~ 189 */
|
|
#define MAX_CH_NUM_UNII8 12 /* 193 ~ 237 */
|
|
#define MAX_CH_NUM_6GHZ (MAX_CH_NUM_UNII5 + MAX_CH_NUM_UNII6 +\
|
|
MAX_CH_NUM_UNII7 + MAX_CH_NUM_UNII8)
|
|
|
|
|
|
#define BAND_2GHZ(_band_) ((_band_ == BAND_ON_24G) ? true : false)
|
|
#define BAND_5GHZ(_band_) ((_band_ == BAND_ON_5G) ? true : false)
|
|
#define BAND_6GHZ(_band_) ((_band_ == BAND_ON_6G) ? true : false)
|
|
#define CH_5GHZ_BAND1(_ch_) (((_ch_ >= 36) && (_ch_ <= 48)) ? true : false)
|
|
#define CH_5GHZ_BAND2(_ch_) (((_ch_ >= 52) && (_ch_ <= 64)) ? true : false)
|
|
#define CH_5GHZ_BAND3(_ch_) (((_ch_ >= 100) && (_ch_ <= 144)) ? true : false)
|
|
#define CH_5GHZ_BAND4(_ch_) (((_ch_ >= 149) && (_ch_ <= 177)) ? true : false)
|
|
|
|
#define SUPPORT_11A BIT(0)
|
|
#define SUPPORT_11B BIT(1)
|
|
#define SUPPORT_11G BIT(2)
|
|
#define SUPPORT_11N BIT(3)
|
|
#define SUPPORT_11AC BIT(4)
|
|
#define SUPPORT_11AX BIT(5)
|
|
|
|
enum regulation_rsn {
|
|
REGU_RSN_DEFAULT = 0x0,
|
|
REGU_RSN_SMBIOS,
|
|
REGU_RSN_EFUSE,
|
|
REGU_RSN_11D,
|
|
REGU_RSN_REGISTRY,
|
|
REGU_RSN_LOCATION,
|
|
REGU_RSN_MANUAL,
|
|
REGU_RSN_MAX
|
|
};
|
|
|
|
enum rtw_regulation_capability {
|
|
CAPABILITY_2GHZ = BIT(0),
|
|
CAPABILITY_5GHZ = BIT(1),
|
|
CAPABILITY_DFS = BIT(2),
|
|
CAPABILITY_6GHZ = BIT(3)
|
|
};
|
|
|
|
enum rtw_regulation_query {
|
|
REGULQ_CHPLAN_FULL = 0x0,
|
|
REGULQ_CHPLAN_2GHZ,
|
|
REGULQ_CHPLAN_5GHZ_ALL,
|
|
REGULQ_CHPLAN_5GHZ_BAND1,
|
|
REGULQ_CHPLAN_5GHZ_BAND2,
|
|
REGULQ_CHPLAN_5GHZ_BAND3,
|
|
REGULQ_CHPLAN_5GHZ_BAND4,
|
|
REGULQ_CHPLAN_6GHZ_UNII5,
|
|
REGULQ_CHPLAN_6GHZ_UNII6,
|
|
REGULQ_CHPLAN_6GHZ_UNII7,
|
|
REGULQ_CHPLAN_6GHZ_UNII8,
|
|
REGULQ_CHPLAN_6GHZ,
|
|
REGULQ_CHPLAN_6GHZ_PSC,
|
|
REGULQ_CHPLAN_2GHZ_5GHZ,
|
|
};
|
|
|
|
enum ch_property {
|
|
CH_PASSIVE = BIT(0), /* regulatory passive channel */
|
|
CH_DFS = BIT(1), /* 5 ghz DFS channel */
|
|
CH_PSC = BIT(2) /* 6 ghz preferred scanning channel */
|
|
};
|
|
|
|
struct rtw_regulation_channel {
|
|
enum band_type band;
|
|
u8 channel;
|
|
u8 property;
|
|
};
|
|
|
|
struct rtw_regulation_chplan {
|
|
u32 cnt;
|
|
struct rtw_regulation_channel ch[MAX_CH_NUM_2GHZ +
|
|
MAX_CH_NUM_5GHZ +
|
|
MAX_CH_NUM_6GHZ];
|
|
};
|
|
|
|
struct rtw_ch {
|
|
enum band_type band;
|
|
u8 ch;
|
|
};
|
|
|
|
struct rtw_chlist {
|
|
u32 cnt;
|
|
struct rtw_ch ch[MAX_CH_NUM_2GHZ +
|
|
MAX_CH_NUM_5GHZ +
|
|
MAX_CH_NUM_6GHZ];
|
|
};
|
|
|
|
struct rtw_regulation_info {
|
|
u8 domain_code;
|
|
u8 domain_reason;
|
|
u8 domain_code_6g;
|
|
u8 domain_reason_6g;
|
|
char country[2];
|
|
u8 support_mode;
|
|
u8 regulation_2g;
|
|
u8 regulation_5g;
|
|
u8 regulation_6g;
|
|
u8 tpo;
|
|
u8 chplan_ver;
|
|
u8 country_ver;
|
|
u16 capability;
|
|
};
|
|
|
|
struct rtw_regulation_country_chplan {
|
|
u8 domain_code;
|
|
u8 support_mode;
|
|
/*
|
|
* bit0: accept 11a
|
|
* bit1: accept 11b
|
|
* bit2: accept 11g
|
|
* bit3: accept 11n
|
|
* bit4: accept 11ac
|
|
* bit5: accept 11ax
|
|
*/
|
|
u8 tpo; /* tx power overwrite */
|
|
};
|
|
|
|
struct rtw_user_def_chplan {
|
|
u16 ch2g; /* bit0 ~ bit13 : ch1~ch14 */
|
|
u16 passive2g; /* bit0 ~ bit13 : ch1~ch14, if value = 1, means passive for that channel */
|
|
|
|
/* 5g channels.
|
|
* bit0~7 : ch 36/40/44/48/52/56/60/64
|
|
* bit8~15 : ch 100/104/108/112/116/120/124/128
|
|
* bit16~23 : ch 132/136/140/144/149/153/157/161
|
|
* bit24~27 : ch 165/169/173/177
|
|
*/
|
|
u32 ch5g;
|
|
u32 passive5g;
|
|
u32 dfs5g;
|
|
|
|
u32 regulatory_idx;
|
|
u8 tpo;
|
|
};
|
|
|
|
/*
|
|
* NOTE:
|
|
* This api prototype will be removed after hal related API/header is added
|
|
* for halrf.
|
|
*/
|
|
bool rtw_phl_query_regulation_info(void *phl, struct rtw_regulation_info *info);
|
|
|
|
#endif /* _PHL_REGULATION_DEF_H_ */
|