diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 603d8dfe61..64e88aab7a 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -610,7 +610,7 @@ typedef enum { WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357, WMI_SERVICE_DETERMINISTIC_SCHEDULER_LEVEL0 = 358, /* FW supports 12.2 level scheduler mode disable commands and stats */ WMI_SERVICE_COORDINATED_AP_TDMA = 359, /* Support for Coordinated-AP TDMA feature */ - + WMI_SERVICE_HPA_SUPPORT = 360, /* Support for Host Platform Authentication */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 1337b4fd6b..e580a96ad2 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2010-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1334,6 +1334,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable, WMITLV_TAG_STRUC_wmi_esl_egid_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_tdma_schedule_request_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_hpa_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_hpa_evt_fixed_param, } WMITLV_TAG_ID; /* @@ -1851,6 +1853,7 @@ typedef enum { OP(WMI_PEER_SCHED_MODE_DISABLE_CMDID) \ OP(WMI_ESL_EGID_CMDID) \ OP(WMI_TDMA_SCHEDULE_REQUEST_CMDID) \ + OP(WMI_HPA_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2149,6 +2152,7 @@ typedef enum { OP(WMI_MLO_LINK_REMOVAL_EVENTID) \ OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID) \ OP(WMI_TAS_POWER_HISTORY_EVENTID) \ + OP(WMI_HPA_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5260,6 +5264,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SCHED_MODE_DISABLE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tdma_schedule_request_cmd_fixed_param, wmi_tdma_schedule_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_TDMA_SCHEDULE_REQUEST_CMDID); +/* HPA cmd */ +#define WMITLV_TABLE_WMI_HPA_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_hpa_cmd_fixed_param, wmi_hpa_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_HPA_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -7132,6 +7142,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID); +/* HPA Event */ +#define WMITLV_TABLE_WMI_HPA_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_hpa_evt_fixed_param, wmi_hpa_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_HPA_EVENTID); + #ifdef __cplusplus diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f61cf6a0ad..f4c3a70e34 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1222,6 +1222,9 @@ typedef enum { /* WMI cmd used to start/stop XGAP (XPAN Green AP) */ WMI_XGAP_ENABLE_CMDID, + /* H2T HPA message */ + WMI_HPA_CMDID, + /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), /* invoke neighbor report from FW */ @@ -2181,6 +2184,9 @@ typedef enum { /* WMI XGAP enable command response event ID */ WMI_XGAP_ENABLE_COMPLETE_EVENTID, + /* T2H HPA message */ + WMI_HPA_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), @@ -33137,6 +33143,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); /* XPAN TWT */ WMI_RETURN_STRING(WMI_ESL_EGID_CMDID); WMI_RETURN_STRING(WMI_TDMA_SCHEDULE_REQUEST_CMDID); + WMI_RETURN_STRING(WMI_HPA_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -39015,6 +39022,38 @@ typedef struct { A_UINT32 en_dis_chain; } wmi_set_ocl_cmd_fixed_param; +typedef enum { + /* HPA Handshake Stages */ + WMI_HPA_SMCK_REQUEST = 0, + WMI_HPA_SMCK_RESPONSE = 1, + WMI_HPA_SIGN_REQUEST = 2, + WMI_HPA_SIGN_RESPONSE = 3, + WMI_HPA_HANDSHAKE_STAGE_MAX, +} WMI_HPA_STAGE_TYPE; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_hpa_cmd_fixed_param */ + /* stage: + * HPA Handshake Stage, filled with a WMI_HPA_STAGE_TYPE enum value + */ + A_UINT32 stage; + + /* the base address and length of data on host memory */ + A_UINT32 base_paddr_low; /* bits 31:0 */ + A_UINT32 base_paddr_high; /* bits 63:32 */ + A_UINT32 len; /* units = bytes */ +} wmi_hpa_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_hpa_evt_fixed_param */ + /* stage: + * HPA Handshake Stage, filled with a WMI_HPA_STAGE_TYPE enum value + */ + A_UINT32 stage; + + A_UINT32 nonce; +} wmi_hpa_evt_fixed_param; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_sync_qtimer */ A_UINT32 vdev_id; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 143224d4c6..23c847aab5 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_ 1259 +#define __WMI_REVISION_ 1260 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work