diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 3439bbba2c63..576462dccc3f 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -28292,15 +28292,14 @@ typedef struct { * 1 - full bandwidth need put to NOL * Refer to WMI_RADAR_FLAGS_FULL_BW_NOL_GET and _SET macros * - * Bits 1-7: + * Bits 1-16: * RADAR TYPE field (currently reserved for future use) * When implemented, this field will indicate the type of - * radar detected. - * The meaning of the different values of this radar type field - * will be specified in the future. + * radar detected, and also the domain. + * For example, a value of 0x4001 means domain = 4 and radar type = 1. * Refer to WMI_RADAR_FLAGS_RADAR_TYPE_GET and _SET macros. * - * Bits 8-15: + * Bits 17-24: * RADAR RSSI in dBm in the range of -128 to +127. * This 8-bit value is interpreted as a twos-complement signed number * (so for example, 0x80 = -128, 0x0 = 0, and 0x7f = 127). @@ -28308,7 +28307,7 @@ typedef struct { * WMI_SERVICE_RADAR_FLAGS_RSSI_DBM_SUPPORT * wmi service flag is set. * - * [16:31] reserved + * [25:31] reserved */ A_UINT32 flags; } WMI_RADAR_FLAGS; @@ -28317,9 +28316,9 @@ typedef struct { #define WMI_RADAR_FLAGS_FULL_BW_NOL_NUM_BITS 1 #define WMI_RADAR_FLAGS_RADAR_TYPE_BITPOS 1 -#define WMI_RADAR_FLAGS_RADAR_TYPE_NUM_BITS 7 +#define WMI_RADAR_FLAGS_RADAR_TYPE_NUM_BITS 16 -#define WMI_RADAR_FLAGS_RSSI_DBM_BITPOS 8 +#define WMI_RADAR_FLAGS_RSSI_DBM_BITPOS 17 #define WMI_RADAR_FLAGS_RSSI_DBM_NUM_BITS 8 #define WMI_RADAR_FLAGS_FULL_BW_NOL_GET(flag) \ @@ -28349,6 +28348,157 @@ typedef struct { WMI_RADAR_FLAGS_RSSI_DBM_BITPOS, \ WMI_RADAR_FLAGS_RSSI_DBM_NUM_BITS, val) +/* Bitfield layout constants */ +#define WMI_RADAR_DOMAIN_SHIFT 12 +#define WMI_RADAR_DOMAIN_MASK 0xF000 +#define WMI_RADAR_TYPE_MASK 0x0FFF + +/* Helper Macros */ +#define WMI_MAKE_RADAR_TYPE(domain, type) \ + (((domain) << WMI_RADAR_DOMAIN_SHIFT) | ((type) & WMI_RADAR_TYPE_MASK)) + +#define WMI_GET_RADAR_DOMAIN(radar_type) \ + (((radar_type) & WMI_RADAR_DOMAIN_MASK) >> WMI_RADAR_DOMAIN_SHIFT) + +#define WMI_GET_RADAR_TYPE(radar_type) \ + ((radar_type) & WMI_RADAR_TYPE_MASK) + +#define WMI_IS_RADAR_DOMAIN(radar_type, domain) \ + (GET_RADAR_DOMAIN(radar_type) == (domain)) + +/* Regulatory Domain Codes (4 bits = 0-15) */ +#define WMI_RADAR_DOMAIN_FCC 0x0 /* United States */ +#define WMI_RADAR_DOMAIN_ETSI_301 0x1 /* Europe EN 301 893 */ +#define WMI_RADAR_DOMAIN_ETSI_302 0x2 /* Europe EN 302 502 */ +#define WMI_RADAR_DOMAIN_CHINA 0x3 /* China */ +#define WMI_RADAR_DOMAIN_KOREA 0x4 /* Korea */ +#define WMI_RADAR_DOMAIN_JAPAN_W53 0x5 /* Japan W53 band */ +#define WMI_RADAR_DOMAIN_JAPAN_W56 0x6 /* Japan W56 band */ +#define WMI_RADAR_DOMAIN_JAPAN_W564 0x7 /* Japan W56.4 band */ +#define WMI_RADAR_DOMAIN_UNDEFINED 0xF /* Undefined/Unknown */ +/* Reserved for future use: 0x8-0xE */ + +/* Radar Type Codes within each domain (12 bits = 0-4095) */ +/* ===== FCC (United States) Radar Types ===== */ +#define WMI_DFS_RADAR_FCC_TYPE_0 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_FCC, 0x001) +#define WMI_DFS_RADAR_FCC_TYPE_1 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_FCC, 0x002) +#define WMI_DFS_RADAR_FCC_TYPE_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_FCC, 0x004) +#define WMI_DFS_RADAR_FCC_TYPE_3 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_FCC, 0x008) +#define WMI_DFS_RADAR_FCC_TYPE_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_FCC, 0x010) +#define WMI_DFS_RADAR_FCC_TYPE_5 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_FCC, 0x020) +#define WMI_DFS_RADAR_FCC_TYPE_6 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_FCC, 0x040) + +/* ===== ETSI EN 301 893 Radar Types ===== */ +#define WMI_DFS_RADAR_ETSI301_TYPE_1 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x001) +#define WMI_DFS_RADAR_ETSI301_TYPE_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x002) +#define WMI_DFS_RADAR_ETSI301_TYPE_3 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x004) +#define WMI_DFS_RADAR_ETSI301_TYPE_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x008) +#define WMI_DFS_RADAR_ETSI301_TYPE_52 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x010) +#define WMI_DFS_RADAR_ETSI301_TYPE_62 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x020) +#define WMI_DFS_RADAR_ETSI301_TYPE_1_2 \ + /* Combined Type 1+2 */ \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x003) +#define WMI_DFS_RADAR_ETSI301_TYPE_1_2_6 \ + /* Combined Type 1+2+6 */ \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_301, 0x023) + +/* ===== ETSI EN 302 502 Radar Types ===== */ +#define WMI_DFS_RADAR_ETSI302_TYPE_1 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_302, 0x001) +#define WMI_DFS_RADAR_ETSI302_TYPE_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_302, 0x002) +#define WMI_DFS_RADAR_ETSI302_TYPE_3 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_302, 0x004) +#define WMI_DFS_RADAR_ETSI302_TYPE_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_302, 0x008) +#define WMI_DFS_RADAR_ETSI302_TYPE_5 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_302, 0x010) +#define WMI_DFS_RADAR_ETSI302_TYPE_6 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_302, 0x020) +#define WMI_DFS_RADAR_ETSI302_TYPE_1_2 \ + /* Combined Type 1+2 */ \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_ETSI_302, 0x003) + +/* ===== China Radar Types ===== */ +#define WMI_DFS_RADAR_CHN_TYPE_1 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x001) +#define WMI_DFS_RADAR_CHN_TYPE_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x002) +#define WMI_DFS_RADAR_CHN_TYPE_3 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x004) +#define WMI_DFS_RADAR_CHN_TYPE_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x008) +#define WMI_DFS_RADAR_CHN_TYPE_5 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x010) +#define WMI_DFS_RADAR_CHN_TYPE_6 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x020) +#define WMI_DFS_RADAR_CHN_TYPE_1_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x003) /* Combined Type 1+2 */ +#define WMI_DFS_RADAR_CHN_TYPE_1_2_6 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x023) /* Combined Type 1+2+6 */ +#define WMI_DFS_RADAR_CHN_TYPE_3_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_CHINA, 0x00C) /* Combined Type 3+4 */ + +/* ===== Korea Radar Types ===== */ +#define WMI_DFS_RADAR_KOR_TYPE_1 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_KOREA, 0x001) +#define WMI_DFS_RADAR_KOR_TYPE_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_KOREA, 0x002) +#define WMI_DFS_RADAR_KOR_TYPE_3 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_KOREA, 0x004) +#define WMI_DFS_RADAR_KOR_TYPE_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_KOREA, 0x008) + +/* ===== Japan W53 Band Radar Types ===== */ +#define WMI_DFS_RADAR_JAP_W53_FIXED_PULSE_1 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W53, 0x001) +#define WMI_DFS_RADAR_JAP_W53_FIXED_PULSE_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W53, 0x002) +#define WMI_DFS_RADAR_JAP_W53_VAR_PULSE_3 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W53, 0x004) +#define WMI_DFS_RADAR_JAP_W53_VAR_PULSE_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W53, 0x008) + +/* ===== Japan W56 Band Radar Types ===== */ +#define WMI_DFS_RADAR_JAP_W56_FIXED_PULSE_1 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x001) +#define WMI_DFS_RADAR_JAP_W56_FIXED_PULSE_2 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x002) +#define WMI_DFS_RADAR_JAP_W56_FIXED_PULSE_3 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x004) +#define WMI_DFS_RADAR_JAP_W56_VAR_PULSE_4 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x008) +#define WMI_DFS_RADAR_JAP_W56_VAR_PULSE_5 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x010) +#define WMI_DFS_RADAR_JAP_W56_VAR_PULSE_6 \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x020) +#define WMI_DFS_RADAR_JAP_W56_CHIRP \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x040) +#define WMI_DFS_RADAR_JAP_W56_FIXED_PULSE_1_2 \ + /* Combined Type 1+2 */ \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W56, 0x003) + +/* ===== Japan W56.4 Band Radar Types ===== */ +#define WMI_DFS_RADAR_JAP_W564_HOPPING \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_JAPAN_W564, 0x001) + +/* ===== Undefined/Unknown ===== */ +#define WMI_DFS_RADAR_TYPE_UNDEF \ + WMI_MAKE_RADAR_TYPE(WMI_RADAR_DOMAIN_UNDEFINED, 0xFFF) + typedef enum { OCAC_COMPLETE = 0, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7161a8e4f08a..2bd65e41e0d9 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1705 +#define __WMI_REVISION_ 1706 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work