Files
2026-08-24 10:03:24 +08:00

785 lines
20 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 202X Original Author (retain original author information)
* Copyright (C) 202X Amlogic, Inc. All rights reserved.
*
* Description:
*/
#ifndef DRI_TEST_CMD
#define DRI_TEST_CMD
#include "fi_sdio.h"
#define TSSI_5G_CAL_NUM 4
typedef struct W2_EFUSE_PARAM
{
unsigned char customer_efuse_en;
unsigned char FT_efuse_en;
unsigned char xosc_ctune_vld;
unsigned char absolute_power_wf0_2g_vld;
unsigned char absolute_power_wf0_5g_vld;
unsigned char absolute_power_wf1_2g_vld;
unsigned char absolute_power_wf1_5g_vld;
unsigned char offset_power_wf0_2g_vld;
unsigned char offset_power_wf0_5g_vld;
unsigned char offset_power_wf1_2g_vld;
unsigned char offset_power_wf1_5g_vld;
unsigned char pwr_delta_wf0_customer_vld;
unsigned char pwr_delta_wf1_customer_vld;
unsigned char xosc_ctune;
unsigned char absolute_power_wf0_2g_l;
unsigned char absolute_power_wf0_2g_m;
unsigned char absolute_power_wf0_2g_h;
unsigned char absolute_power_wf0_5200;
unsigned char absolute_power_wf0_5300;
unsigned char absolute_power_wf0_5530;
unsigned char absolute_power_wf0_5660;
unsigned char absolute_power_wf0_5780;
unsigned char absolute_power_wf1_2g_l;
unsigned char absolute_power_wf1_2g_m;
unsigned char absolute_power_wf1_2g_h;
unsigned char absolute_power_wf1_5200;
unsigned char absolute_power_wf1_5300;
unsigned char absolute_power_wf1_5530;
unsigned char absolute_power_wf1_5660;
unsigned char absolute_power_wf1_5780;
unsigned char offset_power_wf0_2g_l;
unsigned char offset_power_wf0_2g_m;
unsigned char offset_power_wf0_2g_h;
unsigned char offset_power_wf0_5200;
unsigned char offset_power_wf0_5300;
unsigned char offset_power_wf0_5530;
unsigned char offset_power_wf0_5660;
unsigned char offset_power_wf0_5780;
unsigned char offset_power_wf1_2g_l;
unsigned char offset_power_wf1_2g_m;
unsigned char offset_power_wf1_2g_h;
unsigned char offset_power_wf1_5200;
unsigned char offset_power_wf1_5300;
unsigned char offset_power_wf1_5530;
unsigned char offset_power_wf1_5660;
unsigned char offset_power_wf1_5780;
unsigned char second_offset_power_wf0_2g_l;
unsigned char second_offset_power_wf0_2g_m;
unsigned char second_offset_power_wf0_2g_h;
unsigned char second_offset_power_wf0_5200;
unsigned char second_offset_power_wf0_5300;
unsigned char second_offset_power_wf0_5530;
unsigned char second_offset_power_wf0_5660;
unsigned char second_offset_power_wf0_5780;
unsigned char second_offset_power_wf1_2g_l;
unsigned char second_offset_power_wf1_2g_m;
unsigned char second_offset_power_wf1_2g_h;
unsigned char second_offset_power_wf1_5200;
unsigned char second_offset_power_wf1_5300;
unsigned char second_offset_power_wf1_5530;
unsigned char second_offset_power_wf1_5660;
unsigned char second_offset_power_wf1_5780;
unsigned char txt_shift_value_wf0_2g_l;
unsigned char txt_shift_value_wf0_2g_m;
unsigned char txt_shift_value_wf0_2g_h;
unsigned char txt_shift_value_wf0_5200;
unsigned char txt_shift_value_wf0_5300;
unsigned char txt_shift_value_wf0_5530;
unsigned char txt_shift_value_wf0_5660;
unsigned char txt_shift_value_wf0_5780;
unsigned char txt_shift_value_wf1_2g_l;
unsigned char txt_shift_value_wf1_2g_m;
unsigned char txt_shift_value_wf1_2g_h;
unsigned char txt_shift_value_wf1_5200;
unsigned char txt_shift_value_wf1_5300;
unsigned char txt_shift_value_wf1_5530;
unsigned char txt_shift_value_wf1_5660;
unsigned char txt_shift_value_wf1_5780;
unsigned char pmu_efuse_en;
unsigned char rg_pmu_bucka_efuse_trim_i_osc_vld;
unsigned char rg_pmu_bucka_rsv3_vld;
unsigned char rg_pmu_buckd_efuse_trim_i_osc_vld;
unsigned char rg_pmu_buckd_efuse_trim_offset_vref_vld;
unsigned char rg_aoldo_vosel_vld;
unsigned char rg_strup_rsva_vld;
unsigned char rg_ao_hifldo_vosel_vld;
unsigned char rg_aldo_vo_adj_vld;
unsigned char rg_bg_tc_adj_vld;
unsigned char rg_pmu_32k_adj_vld;
unsigned char rg_pmu_bucka_efuse_trim_iref_vlreg_vld;
unsigned char rg_pmu_bucka_efuse_trim_iref_vhreg_vld;
unsigned char rg_pmu_buckd_ton_min_trim_vld;
unsigned char rg_pmu_buckd_cs_gain_ramp_vld;
unsigned char rg_pmu_buckd_vsel_vh_vld;
unsigned char rg_pmu_buckd_capslp_ramp_vld;
unsigned char rg_pmu_bucka_efuse_trim_i_osc;
unsigned char rg_pmu_bucka_rsv3;
unsigned char rg_pmu_buckd_efuse_trim_i_osc;
unsigned char rg_pmu_buckd_efuse_trim_offset_vref;
unsigned char rg_aoldo_vosel;
unsigned char rg_strup_rsva;
unsigned char rg_ao_hifldo_vosel;
unsigned char rg_aldo_vo_adj;
unsigned char rg_bg_tc_adj;
unsigned char rg_pmu_bucka_efuse_trim_slp_csp;
unsigned char rg_pmu_bucka_efuse_trim_iref_vlreg;
unsigned char rg_pmu_bucka_efuse_trim_iref_vhreg;
unsigned char rg_pmu_buckd_ton_min_trim;
unsigned char rg_pmu_buckd_cs_gain_ramp;
unsigned char rg_pmu_buckd_vsel_vh;
unsigned char rg_pmu_buckd_capslp_ramp;
unsigned char rg_pmu_32k_adj;
}W2_EFUSE_PARAM;
typedef struct Cali_Param
{
unsigned char Cmd;
unsigned char version;
unsigned short cali_config;
unsigned char freq_offset;
unsigned char htemp_freq_offset;
unsigned char tssi_2g_offset;
unsigned char tssi_5g_offset[TSSI_5G_CAL_NUM];
unsigned char wf2g_spur_rmen;
unsigned short spur_freq;
unsigned char rf_num;
unsigned char cw2mod[6];
unsigned char wf2g_11b_tpwr[4]; //the number based on rates
unsigned char wf2g_11g_tpwr[8];
unsigned char wf2g_ht20_tpwr[8];
unsigned char wf2g_ht40_tpwr[8];
unsigned char wf2g_vht20_tpwr[9];
unsigned char wf2g_vht40_tpwr[10];
unsigned char wf2g_he20_tpwr[12];
unsigned char wf2g_he40_tpwr[12];
unsigned char wf5g_11a_tpwr_lm[8];
unsigned char wf5g_ht20_tpwr_lm[8];
unsigned char wf5g_ht40_tpwr_lm[8];
unsigned char wf5g_vht20_tpwr_lm[9];
unsigned char wf5g_vht40_tpwr_lm[10];
unsigned char wf5g_vht80_tpwr_lm[10];
unsigned char wf5g_he20_tpwr_lm[12];
unsigned char wf5g_he40_tpwr_lm[12];
unsigned char wf5g_he80_tpwr_lm[12];
unsigned char wf5g_11a_tpwr_h[8];
unsigned char wf5g_ht20_tpwr_h[8];
unsigned char wf5g_ht40_tpwr_h[8];
unsigned char wf5g_vht20_tpwr_h[9];
unsigned char wf5g_vht40_tpwr_h[10];
unsigned char wf5g_vht80_tpwr_h[10];
unsigned char wf5g_he20_tpwr_h[12];
unsigned char wf5g_he40_tpwr_h[12];
unsigned char wf5g_he80_tpwr_h[12];
unsigned char wf5g_lch_he_lowrssi_tpwr[6];
unsigned char wf5g_mch_he_lowrssi_tpwr[6];
unsigned char wf5g_hch_he20_lowrssi_tpwr[6];
unsigned char wf5g_hch_he40_lowrssi_tpwr[6];
unsigned char wf5g_hch_he80_lowrssi_tpwr[6];
unsigned char wf5g_vht_lowrssi_tpwr[6];
W2_EFUSE_PARAM w2_efuse_param;
} Cali_Param;
//================cmd=========================================
#define CMD_GET (0x80)
#define BCNInterval_Cmd 0x1
#define Bcn_Frm_Addr_Cmd (CMD_GET|0x2)
#define Power_Save_Cmd 0x4
#define Send_NullData_Cmd 0x5
#define Keep_Alive_Cmd 0x6
#define Beacon_Miss_Cmd 0x7
#define CAM_Mode_Cmd 0x8
#define ARP_Agent_Cmd 0x9
#define Add_Pattern_Cmd 0xa
#define WoW_Enable_Cmd 0xb
#define AC_BE_Param_Cmd 0xc
#define AC_BK_Param_Cmd 0xd
#define AC_VI_Param_Cmd 0xe
#define AC_VO_Param_Cmd 0xf
#define CWmin_Cwmax_Cmd 0x10
#define LongRetryLimit_Cmd 0x11
#define ShortRetryLimit_Cmd 0x12
#define NDP_Anncmnt_Cmd 0x13
#define BmfmInfo_Cmd 0x15
#define UniCast_Key_Set_Cmd 0x16
#define Multicast_Key_Set_Cmd 0x17
#define Reset_Key_Cmd 0x18
#define Rekey_Data_Set_Cmd 0x19
#define MaxTxLifetime_Cmd 0x20
#define dhcp_start_cmd 0x21
#define vsdb_set_cmd 0x22
#define Beacon_Enable_Cmd 0x24
#define ADDBA_OK_CMD 0x2a
#define RegStaID_CMD 0x30
#define UnRegStaID_CMD 0x31
#define UnRegAllStaID_CMD 0x32
#define Del_BA_CMD 0x34
/*set_page_len_cmd*/
#define SET_PAGE_LEN_CMD 0x33
#define EXTERN_CHANNEL_STATUS_CMD (CMD_GET|0x35)
#define RD_SUPPORT_CMD 0x3a
#define MAC_SCAN_CMD 0x42
#define PHY_DEBUG (CMD_GET|0x44)
#define P2P_OPPPS_CWEND_IRQ_ENABLE_CMD 0x45
#define P2P_NoA_ENABLE_CMD 0x46
#define GET_TSF_CMD (CMD_GET|0x47)
#define GET_PN_CMD (CMD_GET|0x48)
#define GET_SDIO_PTR_CMD (CMD_GET|0x49)
#define Mac_Rtc_Cmd 0x4a
#define COEXIST_CMD 0x4B
#define CHANNEL_SWITCH_CMD 0x25
#define DPD_MEMORY_CMD 0x26
#define FWLOG_MODE_CMD 0x27
#define CALI_PARAM_CMD 0x28
#define PHY_INTERFACE_CMD 0x29
/*coexist cmd1 comand*/
#define COEXIST_EN_CMD BIT(0)
#define COEXIST_MAX_MISS_BCN_CNT BIT(1)
#define COEXIST_REQ_TIMEOUT BIT(2)
#define COEXIST_NOT_GRANT_WEIGHT BIT(3)
#define COEXIST_FW_RETRY_WEIGHT BIT(4)
#define COEXIST_MAX_NOT_GRANT_CNT BIT(5)
#define COEXIST_SCAN_PRIORITY_RANGE BIT(6)
#define COEXIST_BE_BK_NOQOS_PRI_RANGE BIT(7)
#define COEXIST_INFOR_BT_WIFI_WORK_FREQ BIT(8)
//Reset_Key_Cmd
#define ALL_KEY_RST 0xffff
#define MULTI_KEY_RST 0xeeee
//Reset_Key_Cmd
#define ALL_UNIKEY_RST 0xeeee
#define ALL_MULTIKEY_RST 0xdddd
#pragma pack(1)
//Set Page_Len Cmd
typedef struct PagelenCmd
{
unsigned char Cmd;
unsigned char reserve[3];
unsigned int page_len;
} PagelenCmd;
//
///BCNInterval_Cmd
//
typedef struct BCNIntervalCmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned int interval;
} BCNIntervalCmd;
//
///Bcn_Frm_Addr_Cmd
//
typedef struct BcnFrmAddrCmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned int address;
} BcnFrmAddrCmd;
//
///Beacon_Enable_Cmd
//
typedef struct BeaconEnableCmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned char enable;
} BeaconEnableCmd;
typedef struct PowerSaveCmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned char psmode;
} PowerSaveCmd;
typedef struct CAMModeCmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned char cammode;
} CAMModeCmd;
typedef struct DHCPStartCmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned int ip;
} DHCPStartCmd;
//Del_BA_CMD
typedef struct
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char STA_ID;
unsigned char TID;
} Station;
//EXTERN_CHANNEL_STATUS_CMD
typedef struct Extern_Channel_Status
{
unsigned char Cmd;
unsigned char reserve[3];
unsigned int Status;
} Extern_Channel_Status;
typedef struct CommonCmdUC
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned char param[8];
} CommonCmdUC;
typedef struct CommonCmdUS
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned short param[4];
} CommonCmdUS;
typedef struct CommonCmdUL
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned long param[2];
} CommonCmdUL;
typedef struct CommonCmdULL
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned int rsrv2;
unsigned long long param0;
} CommonCmdULL;
typedef struct NoACmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned int duration;
unsigned int interval;
unsigned int starttime;
unsigned char count;
unsigned char flag;
} NoACmd;
typedef struct Bcn_Frm_Addr
{
unsigned int cmd;
unsigned int address;
} Bcn_Frm_Addr;
typedef struct RegStaIdParam
{
unsigned char Cmd;
unsigned char vid;
unsigned short StaId; //statin id
unsigned char StaMac[6]; //station mac address
unsigned char encrypt;
} RegStaIdParam;
typedef struct UnRegStaID
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid; //statin id
unsigned int StaId; //statin id
} UnRegStaID;
///UnRegAllStaID_CMD
typedef struct UnRegAllStaID
{
unsigned char Cmd;
unsigned char reserve[3];
unsigned char vid; //statin id
} UnRegAllStaID;
//AC_BE_Param_Cmd
typedef struct SetEDCACmd
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned int data;
} SetEDCACmd;
///PHY_DEBUG
typedef struct phydebugcmd
{
unsigned char Cmd;
unsigned char len;
unsigned short serve;
unsigned int offset;
unsigned char buf[48];
} phydebugcmd;
#define WIFINET_ADDR_LEN 6
/*send (qos)null data command */
typedef struct NullDataCmd
{
unsigned char Cmd;
unsigned char vid;
/*tid id useless when qos is 0 */
unsigned char qos:1,
/*1 is go to power save state, 0 is awake or keep alive*/
tid:4,
pwr_save:1,
eosp:1,
/* pwr save packet flag */
pwr_flag:1;
unsigned char dest_addr[WIFINET_ADDR_LEN];
unsigned char bw;
unsigned char rate;
unsigned short sn;
unsigned short staid;
/*Indicates the length of the PSDU in octets*/
unsigned short tv_l_length;
} NullDataCmd;
typedef struct KeepAliveCmd
{
unsigned char Cmd;
unsigned char enable;
/* in second, need transform to ms in firmware */
unsigned int period;
struct NullDataCmd null_data_param;
} KeepAliveCmd;
#define IPV6_LEN 16
#define IPV4_LEN 4
#define IPV6_ADDR_BUF_LEN (IPV6_LEN * 3 + 1)
#define WOW_PATTERN_SIZE 52
#define WOW_MAX_PATTERNS 4
#define WOW_PATTERN_MASK_SIZE 8
/* timeout for supend wifi, in jiffies */
#define WOW_TIMEOUT (200)
/* arp agent command */
typedef struct ArpAgentCmd
{
unsigned char Cmd;
unsigned char enable;
unsigned char vid;
unsigned char reserve;
unsigned int ip_addr;
unsigned char ip6_addr[IPV6_ADDR_BUF_LEN];
} ArpAgentCmd;
/* beacon miss monitor */
typedef struct BeaconMissCmd
{
unsigned char Cmd;
unsigned char vid;
/*1 enable , 0 disable */
unsigned char enable;
unsigned char reserved;
unsigned int period;
}BeaconMissCmd;
typedef struct vsdb_cmd
{
unsigned char Cmd;
unsigned char vid;
/*1 enable , 0 disable */
unsigned char enable;
unsigned char reserved[5];
} vsdb_cmd;
/* suspend command */
typedef struct SuspendCmd
{
unsigned char Cmd;
unsigned char enable;
unsigned char vid;
unsigned char wow;
unsigned char deepsleep;
unsigned char reserved[3];
unsigned int filters;
unsigned char PN[16];
} SuspendCmd;
/* add patterns command for suspend*/
typedef struct AddPatternCmd
{
unsigned char Cmd;
unsigned char vid;
/*offset from cfg layer, indicates where pattern
*start to match with packets
*/
unsigned char pattern_offset;
unsigned char pattern_len;
unsigned char pattern_id;
unsigned char mask[WOW_PATTERN_MASK_SIZE];
unsigned char pattern[WOW_PATTERN_SIZE];
} AddPatternCmd;
typedef struct NDPAnncmntCmd
{
unsigned char Cmd;
unsigned char vid;
unsigned char rate;
unsigned char bw;
unsigned char dest_addr[WIFINET_ADDR_LEN];
unsigned char reserved[2];
unsigned short sn;
unsigned short stainfo_num;
unsigned short stainfo[WIFI_MAX_STA];
} NDPAnncmntCmd;
///TxBA_TYPE
#define BA_DELAY 0
#define BA_IMMEDIATE 1
///AuthRole
#define BA_INITIATOR 0
#define BA_RESPONSER 1
typedef struct Add_BA_Struct
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned char TID;
unsigned char BA_TYPE;
unsigned char AuthRole;
unsigned char BA_Size;
unsigned short STA_ID;
unsigned short SeqNumStart;
} Add_BA_Struct;
typedef struct Delete_TxBA_Struct
{
unsigned char Cmd;
unsigned char reserve[2];
unsigned char vid;
unsigned char STA_ID;
unsigned char TID;
unsigned char AuthRole;
unsigned char reserve1;
} Delete_TxBA_Struct;
typedef struct MacRtcCmd
{
unsigned char Cmd;
unsigned char reserve[3];
unsigned int enable;
} MacRtcCmd;
typedef struct Bmfm_Info_Cmd
{
unsigned char Cmd;
unsigned char vid;
unsigned char reserved;
unsigned char feedback_type;
unsigned char group_id[8];
unsigned char user_position[16];
}Bmfm_Info_Cmd;
struct Coexist_Cmd
{
unsigned char Cmd;
unsigned char reserve[3];
unsigned int coexist_id_bitmap;
unsigned int req_timeout_value;
unsigned int scan_priority_range;
unsigned int be_bk_no_qos_priority_range;
unsigned char coexist_enable;
unsigned char max_miss_bcn_cnt;
unsigned char not_grant_weight;
unsigned char fw_retry_weight;
unsigned char max_not_grant_cnt;
unsigned char enable_infor_bt_wifi_work_freq;
unsigned char reserve1[38];
};
/* channel switch flag */
enum {
CHANNEL_RESTORE_FLAG = BIT(0),
CHANNEL_CONNECT_FLAG = BIT(1),
CHANNEL_NO_EVENT_FLAG = BIT(2),
};
typedef struct Channel_Switch
{
unsigned char Cmd;
unsigned char vid;
unsigned char flag;
unsigned char bw;
unsigned int channel;
/* center freq value */
unsigned int pri_chan;
}Channel_Switch;
typedef struct DPD_Memory_Download
{
unsigned char Cmd;
unsigned char vid;
unsigned char reserved[2];
} DPD_Memory_Download;
typedef struct Fwlog_Mode_Control
{
unsigned char Cmd;
unsigned char mode; //0x00:fw 0x01:host
unsigned char reserved[2];
} Fwlog_Mode_Control;
typedef struct Strlog_Mode_Control
{
unsigned char Cmd;
unsigned char mode;
unsigned char reserved[2];
} Strlog_Mode_Control;
// event
typedef struct channel_switch_event
{
struct fw_event_basic_info basic_info;
unsigned int channel;
unsigned int bw;
unsigned int done;
} channel_switch_event;
typedef struct tx_error_event
{
struct fw_event_basic_info basic_info;
unsigned int error_type;
unsigned int frame_type;
} tx_error_event;
typedef struct Phy_Interface_Param
{
unsigned char Cmd;
unsigned char vid;
unsigned char interface_enable;
unsigned char reserve;
} Phy_Interface_Param;
#pragma pack()
typedef union FI_CMDFIFO_PARAM
{
struct RegStaIdParam StaIdParam;
struct MultiCastKeyCmd MultiKeyCmd ;
struct UniCastKeyCmd UniKeyCmd;
struct RekeyDataCmd RekeyCmd;
struct Extern_Channel_Status exchanstatus;
struct UnRegStaID UnRegStaID;
struct SetEDCACmd SetEDCACmd;
struct PowerSaveCmd PowerSaveCmd;
struct CAMModeCmd CAMModeCmd;
#ifdef DHCP_OFFLOAD
struct DHCPStartCmd DHCPStartCmd;
#endif
#ifdef VSDB
struct vsdb_cmd vsdb_enable_cmd;
#endif
struct BCNIntervalCmd BCNIntervalCmd;
struct BcnFrmAddrCmd BcnFrmAddrCmd;
struct BeaconEnableCmd BeaconEnableCmd;
struct UnRegAllStaID UnRegAllStaID;
struct phydebugcmd Phydbgcmd;
struct CommonCmdUC CommonCmdUC;
struct CommonCmdUS CommonCmdUS;
struct CommonCmdUL CommonCmdUL;
struct CommonCmdULL CommonCmdULL;
struct NoACmd NoACmd;
struct MacRtcCmd MacRtcCmd;
struct NullDataCmd null_data_cmd;
struct NDPAnncmntCmd ndp_anncmnt_data;
struct KeepAliveCmd keep_alive_cmd;
struct BeaconMissCmd beacon_miss_cmd;
struct ArpAgentCmd arp_agent_cmd;
struct SuspendCmd suspend_cmd;
struct AddPatternCmd add_pattern_cmd;
struct Bmfm_Info_Cmd bmfm_info_cmd;
struct Coexist_Cmd coexist_cmd;
struct Channel_Switch channel_switch_cmd;
struct DPD_Memory_Download dpd_download_cmd;
struct Fwlog_Mode_Control fwlog_mode_cmd;
struct Cali_Param cali_param_cmd;
struct Phy_Interface_Param phy_interface_cmd;
struct PagelenCmd page_len_cmd;
} FI_CMDFIFO_PARAM;
typedef struct phy_maskfilter_cfg_param
{
uint32_t maskfilter[32];
uint32_t mask_bw_cfg[5];
} phy_maskfilter_cfg_param_t;
typedef struct COUNTRY_PWR_LIMIT_CFG
{
unsigned char version;
unsigned char country_pwr_limit_en;
//2.4G
unsigned char wf2g_ofdm_limit[14][5];
unsigned char wf2g_dsss_limit[14][5];
//5G 20M band0 ch36~ch64
unsigned char wf5g_bw20_band0[8][5];
//5G 20M band1 ch100~ch144
unsigned char wf5g_bw20_band1[12][5];
//5G 20M band2 ch149~ch165
unsigned char wf5g_bw20_band2[8][5];
//5G 40M band0 ch38~ch62
unsigned char wf5g_bw40_band0[4][5];
//5G 40M band1 ch102~ch142
unsigned char wf5g_bw40_band1[6][5];
//5G 40M band2 ch151~ch175
unsigned char wf5g_bw40_band2[4][5];
//5G 80M band0 ch42~ch58
unsigned char wf5g_bw80_band0[2][5];
//5G 80M band1 ch106~ch138
unsigned char wf5g_bw80_band1[3][5];
//5G 80M band3 ch155
unsigned char wf5g_bw80_band2[1][5];
//maskfilters
phy_maskfilter_cfg_param_t phy_maskfilter_cfg[2];
} COUNTRY_PWR_LIMIT_CFG;
#endif