qcacmn: Convert wireless modes to host internal values
Convert the wireless_modes HALPHY capability from FW defined REGDMN_MODE values to host internal WMI_HOST_REGDMN_MODE values. This will help make host code independent of target specific definitions. Change-Id: I6d325f76959b35a3f854ade680f4d058c9d4bfcb CRs-Fixed: 1061096
This commit is contained in:

committed by
qcabuildsw

parent
db59c09b51
commit
7af44280a7
@@ -315,6 +315,75 @@ typedef struct {
|
||||
uint32_t reg_info_2;
|
||||
} wmi_host_channel;
|
||||
|
||||
/**
|
||||
* enum WMI_HOST_REGDMN_MODE:
|
||||
* @WMI_HOST_REGDMN_MODE_11A: 11a channels
|
||||
* @WMI_HOST_REGDMN_MODE_TURBO: 11a turbo-only channels
|
||||
* @WMI_HOST_REGDMN_MODE_11B: 11b channels
|
||||
* @WMI_HOST_REGDMN_MODE_PUREG: 11g channels (OFDM only)
|
||||
* @WMI_HOST_REGDMN_MODE_11G: historical
|
||||
* @WMI_HOST_REGDMN_MODE_108G: 11g+Turbo channels
|
||||
* @WMI_HOST_REGDMN_MODE_108A: 11a+Turbo channels
|
||||
* @WMI_HOST_REGDMN_MODE_XR: XR channels
|
||||
* @WMI_HOST_REGDMN_MODE_11A_HALF_RATE: 11a half rate channels
|
||||
* @WMI_HOST_REGDMN_MODE_11A_QUARTER_RATE: 11a quarter rate channels
|
||||
* @WMI_HOST_REGDMN_MODE_11NG_HT20: 11ng HT20 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11NA_HT20: 11na HT20 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11NG_HT40PLUS: 11ng HT40+ channels
|
||||
* @WMI_HOST_REGDMN_MODE_11NG_HT40MINUS: 11ng HT40- channels
|
||||
* @WMI_HOST_REGDMN_MODE_11NA_HT40PLUS: 11na HT40+ channels
|
||||
* @WMI_HOST_REGDMN_MODE_11NA_HT40MINUS: 11na HT40- channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AC_VHT20: 5GHz, VHT20
|
||||
* @WMI_HOST_REGDMN_MODE_11AC_VHT40PLUS: 5GHz, VHT40+ channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AC_VHT40MINUS: 5GHz, VHT40- channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AC_VHT80: 5GHz, VHT80 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AC_VHT160: 5GHz, VHT160 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AC_VHT80_80: 5GHz, VHT80+80 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXG_HE20: 11ax 2.4GHz, HE20 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXA_HE20: 11ax 5GHz, HE20 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXG_HE40PLUS: 11ax 2.4GHz, HE40+ channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXG_HE40MINUS: 11ax 2.4GHz, HE40- channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXA_HE40PLUS: 11ax 5GHz, HE40+ channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXA_HE40MINUS: 11ax 5GHz, HE40- channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXA_HE80: 11ax 5GHz, HE80 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXA_HE160: 11ax 5GHz, HE160 channels
|
||||
* @WMI_HOST_REGDMN_MODE_11AXA_HE80_80: 11ax 5GHz, HE80+80 channels
|
||||
*/
|
||||
typedef enum {
|
||||
WMI_HOST_REGDMN_MODE_11A = 0x00000001,
|
||||
WMI_HOST_REGDMN_MODE_TURBO = 0x00000002,
|
||||
WMI_HOST_REGDMN_MODE_11B = 0x00000004,
|
||||
WMI_HOST_REGDMN_MODE_PUREG = 0x00000008,
|
||||
WMI_HOST_REGDMN_MODE_11G = 0x00000008,
|
||||
WMI_HOST_REGDMN_MODE_108G = 0x00000020,
|
||||
WMI_HOST_REGDMN_MODE_108A = 0x00000040,
|
||||
WMI_HOST_REGDMN_MODE_XR = 0x00000100,
|
||||
WMI_HOST_REGDMN_MODE_11A_HALF_RATE = 0x00000200,
|
||||
WMI_HOST_REGDMN_MODE_11A_QUARTER_RATE = 0x00000400,
|
||||
WMI_HOST_REGDMN_MODE_11NG_HT20 = 0x00000800,
|
||||
WMI_HOST_REGDMN_MODE_11NA_HT20 = 0x00001000,
|
||||
WMI_HOST_REGDMN_MODE_11NG_HT40PLUS = 0x00002000,
|
||||
WMI_HOST_REGDMN_MODE_11NG_HT40MINUS = 0x00004000,
|
||||
WMI_HOST_REGDMN_MODE_11NA_HT40PLUS = 0x00008000,
|
||||
WMI_HOST_REGDMN_MODE_11NA_HT40MINUS = 0x00010000,
|
||||
WMI_HOST_REGDMN_MODE_11AC_VHT20 = 0x00020000,
|
||||
WMI_HOST_REGDMN_MODE_11AC_VHT40PLUS = 0x00040000,
|
||||
WMI_HOST_REGDMN_MODE_11AC_VHT40MINUS = 0x00080000,
|
||||
WMI_HOST_REGDMN_MODE_11AC_VHT80 = 0x00100000,
|
||||
WMI_HOST_REGDMN_MODE_11AC_VHT160 = 0x00200000,
|
||||
WMI_HOST_REGDMN_MODE_11AC_VHT80_80 = 0x00400000,
|
||||
WMI_HOST_REGDMN_MODE_11AXG_HE20 = 0x00800000,
|
||||
WMI_HOST_REGDMN_MODE_11AXA_HE20 = 0x01000000,
|
||||
WMI_HOST_REGDMN_MODE_11AXG_HE40PLUS = 0x02000000,
|
||||
WMI_HOST_REGDMN_MODE_11AXG_HE40MINUS = 0x04000000,
|
||||
WMI_HOST_REGDMN_MODE_11AXA_HE40PLUS = 0x08000000,
|
||||
WMI_HOST_REGDMN_MODE_11AXA_HE40MINUS = 0x10000000,
|
||||
WMI_HOST_REGDMN_MODE_11AXA_HE80 = 0x20000000,
|
||||
WMI_HOST_REGDMN_MODE_11AXA_HE160 = 0x40000000,
|
||||
WMI_HOST_REGDMN_MODE_11AXA_HE80_80 = 0x80000000,
|
||||
WMI_HOST_REGDMN_MODE_ALL = 0xffffffff
|
||||
} WMI_HOST_REGDMN_MODE;
|
||||
|
||||
/**
|
||||
* enum wmi_dwelltime_adaptive_mode: dwelltime_mode
|
||||
* @WMI_DWELL_MODE_DEFAULT: Use firmware default mode
|
||||
|
@@ -5545,12 +5545,89 @@ static QDF_STATUS extract_hal_reg_cap_non_tlv(wmi_unified_t wmi_handle,
|
||||
TARGET_HAL_REG_CAPABILITIES *cap)
|
||||
{
|
||||
wmi_service_ready_event *ev;
|
||||
u_int32_t wireless_modes_orig = 0;
|
||||
|
||||
ev = (wmi_service_ready_event *) evt_buf;
|
||||
|
||||
qdf_mem_copy(cap, &ev->hal_reg_capabilities,
|
||||
sizeof(TARGET_HAL_REG_CAPABILITIES));
|
||||
|
||||
/* Convert REGDMN_MODE values sent by target to host internal
|
||||
* WMI_HOST_REGDMN_MODE values.
|
||||
*
|
||||
* REGULATORY TODO :
|
||||
* REGDMN_MODE_11AC_VHT*_2G values are not used by the
|
||||
* host currently. Add this in the future if required.
|
||||
*/
|
||||
wireless_modes_orig = ev->hal_reg_capabilities.wireless_modes;
|
||||
cap->wireless_modes = 0;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11A)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_TURBO)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_TURBO;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11B)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11B;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_PUREG)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_PUREG;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11G)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11G;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_108G)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_108G;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_108A)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_108A;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_XR)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_XR;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11A_HALF_RATE)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A_HALF_RATE;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11A_QUARTER_RATE)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A_QUARTER_RATE;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NG_HT20)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT20;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NA_HT20)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT20;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NG_HT40PLUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT40PLUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NG_HT40MINUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT40MINUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NA_HT40PLUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT40PLUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NA_HT40MINUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT40MINUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT20)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT20;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT40PLUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT40PLUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT40MINUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT40MINUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT80)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT80;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT160)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT160;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT80_80)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT80_80;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@@ -11825,6 +11825,7 @@ static QDF_STATUS extract_hal_reg_cap_tlv(wmi_unified_t wmi_handle,
|
||||
void *evt_buf, TARGET_HAL_REG_CAPABILITIES *cap)
|
||||
{
|
||||
WMI_SERVICE_READY_EVENTID_param_tlvs *param_buf;
|
||||
u_int32_t wireless_modes_orig = 0;
|
||||
|
||||
param_buf = (WMI_SERVICE_READY_EVENTID_param_tlvs *) evt_buf;
|
||||
|
||||
@@ -11832,6 +11833,86 @@ static QDF_STATUS extract_hal_reg_cap_tlv(wmi_unified_t wmi_handle,
|
||||
sizeof(uint32_t)),
|
||||
sizeof(TARGET_HAL_REG_CAPABILITIES));
|
||||
|
||||
/* Convert REGDMN_MODE values sent by target to host internal
|
||||
* WMI_HOST_REGDMN_MODE values.
|
||||
*
|
||||
* REGULATORY TODO : REGDMN_MODE_11AC_VHT*_2G values are not used by the
|
||||
* host currently. Add this in the future if required.
|
||||
*
|
||||
* 11AX TODO (Phase II) : 11ax related values are not currently
|
||||
* advertised separately by FW. As part of phase II regulatory bring-up,
|
||||
* finalize the advertisement mechanism.
|
||||
*/
|
||||
|
||||
wireless_modes_orig = param_buf->hal_reg_capabilities->wireless_modes;
|
||||
cap->wireless_modes = 0;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11A)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_TURBO)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_TURBO;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11B)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11B;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_PUREG)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_PUREG;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11G)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11G;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_108G)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_108G;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_108A)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_108A;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_XR)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_XR;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11A_HALF_RATE)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A_HALF_RATE;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11A_QUARTER_RATE)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A_QUARTER_RATE;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NG_HT20)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT20;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NA_HT20)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT20;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NG_HT40PLUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT40PLUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NG_HT40MINUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT40MINUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NA_HT40PLUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT40PLUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11NA_HT40MINUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT40MINUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT20)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT20;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT40PLUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT40PLUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT40MINUS)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT40MINUS;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT80)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT80;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT160)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT160;
|
||||
|
||||
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT80_80)
|
||||
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT80_80;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user