Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8422b9ab authored by spuligil's avatar spuligil Committed by Madan Koyyalamudi
Browse files

fw-api: CL 14285008 - update fw common interface files

Change-Id: Id0cf01bbc813b19d69b3a17464fb00cda6675854
WMI: AFC_CMD,_EVENT msg defs
CRs-Fixed: 2262693
parent bb8f1153
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -537,6 +537,7 @@ typedef enum {
    WMI_SERVICE_AMPDU_TX_BUF_SIZE_256_SUPPORT = 292, /* Indicates FW supports MAX 256 MPDUs in A-MPDU instead of 64 */
    WMI_SERVICE_HALPHY_CAL_STATUS = 293, /* Indicates FW supports sending online HALPHY Calibration status to host */
    WMI_SERVICE_HALPHY_CAL_ENABLE_DISABLE_SUPPORT = 294, /* Indicates Calibraton enable/disable support by FW */
    WMI_SERVICE_AFC_SUPPORT = 295, /* Indicates FW supports AFC_CMD,AFC_EVENT */


    WMI_MAX_EXT2_SERVICE
+30 −0
Original line number Diff line number Diff line
@@ -1165,6 +1165,19 @@ typedef enum {
    WMITLV_TAG_STRUC_wmi_pdev_get_halphy_cal_status_evt_fixed_param,
    WMITLV_TAG_STRUC_wmi_pdev_set_halphy_cal_bmap_cmd_fixed_param,
    WMITLV_TAG_STRUC_wmi_pdev_set_halphy_cal_bmap_evt_fixed_param,
    WMITLV_TAG_STRUC_wmi_afc_cmd_fixed_param,
    WMITLV_TAG_STRUC_wmi_afc_event_fixed_param,
    WMITLV_TAG_STRUC_wmi_afc_expiry_event_param,
    WMITLV_TAG_STRUC_wmi_afc_power_event_param,
    WMITLV_TAG_STRUC_wmi_6g_afc_frequency_info,
    WMITLV_TAG_STRUC_wmi_6g_afc_channel_info,
    WMITLV_TAG_STRUC_wmi_afc_chan_eirp_power_info,
    /*
     * The wmi_afc_serv_resp_struct is not used in a WMI message, but is shared
     * directly between host and target.  To support backwards-compatible
     * extensions, the struct uses a TLV header, which uses the below tag,
     */
    WMITLV_TAG_STRUC_wmi_afc_serv_resp_struct,
} WMITLV_TAG_ID;

/*
@@ -1632,6 +1645,7 @@ typedef enum {
    OP(WMI_PDEV_SET_BIOS_GEO_TABLE_CMDID) \
    OP(WMI_PDEV_GET_HALPHY_CAL_STATUS_CMDID) \
    OP(WMI_PDEV_SET_HALPHY_CAL_BMAP_CMDID) \
    OP(WMI_AFC_CMDID) \
    /* add new CMD_LIST elements above this line */


@@ -1901,6 +1915,7 @@ typedef enum {
    OP(WMI_MGMT_RX_FW_CONSUMED_EVENTID) \
    OP(WMI_PDEV_GET_HALPHY_CAL_STATUS_EVENTID) \
    OP(WMI_PDEV_SET_HALPHY_CAL_BMAP_EVENTID) \
    OP(WMI_AFC_EVENTID) \
    /* add new EVT_LIST elements above this line */


@@ -4199,6 +4214,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SET_CURRENT_COUNTRY_CMDID);
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_init_country_cmd_fixed_param, wmi_set_init_country_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_SET_INIT_COUNTRY_CMDID);

/* Host triggers FW to read AFC info */
#define WMITLV_TABLE_WMI_AFC_CMDID(id,op,buf,len) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_afc_cmd_fixed_param, wmi_afc_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_AFC_CMDID);

/* Start 11d scan in FW */
#define WMITLV_TABLE_WMI_11D_SCAN_START_CMDID(id,op,buf,len) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_11d_scan_start_cmd_fixed_param, wmi_11d_scan_start_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -5793,6 +5813,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EVENTID);
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_rule_ext_struct, reg_rule_array, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID);

/* WMI AFC info event */
#define WMITLV_TABLE_WMI_AFC_EVENTID(id,op,buf,len) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_afc_event_fixed_param, wmi_afc_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_afc_expiry_event_param, wmi_afc_expiry_event_param, expiry_event_param, WMITLV_SIZE_FIX)\
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_afc_power_event_param, wmi_afc_power_event_param, afc_power_event_param, WMITLV_SIZE_FIX)\
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_6g_afc_frequency_info, freq_info_array, WMITLV_SIZE_VAR)\
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_6g_afc_channel_info, channel_info_array, WMITLV_SIZE_VAR)\
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_afc_chan_eirp_power_info, chan_eirp_power_info_array, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_AFC_EVENTID);

/* FIPS event */
#define WMITLV_TABLE_WMI_PDEV_FIPS_EVENTID(id,op,buf,len) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_fips_event_fixed_param, wmi_pdev_fips_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)   \
+254 −0
Original line number Diff line number Diff line
@@ -1294,6 +1294,7 @@ typedef enum {
    WMI_11D_SCAN_START_CMDID,
    WMI_11D_SCAN_STOP_CMDID,
    WMI_SET_INIT_COUNTRY_CMDID,
    WMI_AFC_CMDID,
    /**
     * Nan Data commands
@@ -2059,6 +2060,7 @@ typedef enum {
    WMI_REG_CHAN_LIST_CC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_REGULATORY),
    WMI_11D_NEW_COUNTRY_EVENTID,
    WMI_REG_CHAN_LIST_CC_EXT_EVENTID,
    WMI_AFC_EVENTID,
    /** Events for TWT(Target Wake Time) of STA and AP  */
    WMI_TWT_ENABLE_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_TWT),
@@ -28823,6 +28825,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
        WMI_RETURN_STRING(WMI_PDEV_SET_BIOS_GEO_TABLE_CMDID);
        WMI_RETURN_STRING(WMI_PDEV_GET_HALPHY_CAL_STATUS_CMDID);
        WMI_RETURN_STRING(WMI_PDEV_SET_HALPHY_CAL_BMAP_CMDID);
        WMI_RETURN_STRING(WMI_AFC_CMDID);
    }
    return "Invalid WMI cmd";
@@ -28860,6 +28863,58 @@ typedef struct {
    } country_code;
} wmi_set_init_country_cmd_fixed_param;
typedef enum {
    /**
     * serv_resp_format_type will indicate the format in which afc_serv data
     * is written into host/target shared memory
     * This type can be expanded in future as per requirements.
     */
    AFC_SERV_RESP_FORMAT_JSON = 0,
} WMI_AFC_SERV_RESP_FORMAT_TYPE;
typedef enum {
    /**
     * wmi_afc_cmd_type will indicate type of AFC command sent to FW.
     * Once AFC server writes data at TZ memory location SERV_RESP_READY
     * type command is sent to FW.
     * This type can be expanded in future as per requirements.
     */
    WMI_AFC_CMD_SERV_RESP_READY = 1,
} WMI_AFC_CMD_TYPE;
/** Host indicating AFC info availability to FW */
typedef struct {
     A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_afc_cmd_fixed_param */
     A_UINT32 pdev_id;
     A_UINT32 cmd_type; /* refer WMI_AFC_CMD_TYPE */
     A_UINT32 serv_resp_format; /* refer WMI_AFC_SERV_RESP_FORMAT_TYPE */
} wmi_afc_cmd_fixed_param;
/** Host indicates AFC info availability to FW using WMI_AFC_CMD
 * This AFC info is written by AFC application/ server in host/target
 * shared memory reserved during bootup.
 * The structure is placeholder, indicating way afc_serv_resp is written in FW.
 * This structure will not be attach as input to WMI command.
 * This structure will be common to both host and FW.
 * The structure of this WMI AFC info is as follows.
 */
typedef struct {
    A_UINT32 tlv_header;   /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_afc_serv_resp_struct */
    A_UINT32 status;       /* validity flag to be updated by TZ/ PF stub layer,
                            * to indicate if payload is valid or not.
                            * status = 1 will indicate payload is valid. */
    A_UINT32 time_to_live; /* Total time for which this AFC info is valid in seconds */
    A_UINT32 length;       /* length of the payload, in bytes */
    /* The structure above is followed by array of char which will have JSON string
     * A_CHAR bufp[];    AFC payload (JSON string)
     */
    /*
     * In future if we need to add new variable, or new format of information,
     * this structure should be optionally followed by new TLV,
     * which will be written in same contiguous memory location.
     */
} wmi_afc_serv_resp_struct;
/* Freq units in MHz */
#define WMI_REG_RULE_START_FREQ_GET(freq_info)                     WMI_GET_BITS(freq_info, 0, 16)
#define WMI_REG_RULE_START_FREQ_SET(freq_info, value)              WMI_SET_BITS(freq_info, 0, 16, value)
@@ -29039,6 +29094,205 @@ typedef struct {
 */
} wmi_reg_chan_list_cc_event_ext_fixed_param;
/* WFA AFC Version */
#define WMI_AFC_WFA_MINOR_VERSION_GET(afc_wfa_version)             WMI_GET_BITS(afc_wfa_version, 0, 16)
#define WMI_AFC_WFA_MINOR_VERSION_SET(afc_wfa_version, value)      WMI_SET_BITS(afc_wfa_version, 0, 16, value)
#define WMI_AFC_WFA_MAJOR_VERSION_GET(afc_wfa_version)             WMI_GET_BITS(afc_wfa_version, 16, 16)
#define WMI_AFC_WFA_MAJOR_VERSION_SET(afc_wfa_version, value)      WMI_SET_BITS(afc_wfa_version, 16, 16, value)
/* avail_exp_time_d time is expected as YYYY-MM-DD */
#define WMI_AVAIL_EXPIRY_TIME_DAY_GET(avail_exp_time_d)             WMI_GET_BITS(avail_exp_time_d, 0, 8)
#define WMI_AVAIL_EXPIRY_TIME_DAY_SET(avail_exp_time_d, value)      WMI_SET_BITS(avail_exp_time_d, 0, 8, value)
#define WMI_AVAIL_EXPIRY_TIME_MONTH_GET(avail_exp_time_d)           WMI_GET_BITS(avail_exp_time_d, 8, 8)
#define WMI_AVAIL_EXPIRY_TIME_MONTH_SET(avail_exp_time_d, value)    WMI_SET_BITS(avail_exp_time_d, 8, 8, value)
#define WMI_AVAIL_EXPIRY_TIME_YEAR_GET(avail_exp_time_d)            WMI_GET_BITS(avail_exp_time_d, 16, 16)
#define WMI_AVAIL_EXPIRY_TIME_YEAR_SET(avail_exp_time_d, value)     WMI_SET_BITS(avail_exp_time_d, 16, 16, value)
/* avail_exp_time_t time is expected as HH-MM-SS */
#define WMI_AVAIL_EXPIRY_TIME_SEC_GET(avail_exp_time_t)             WMI_GET_BITS(avail_exp_time_t, 0, 8)
#define WMI_AVAIL_EXPIRY_TIME_SEC_SET(avail_exp_time_t, value)      WMI_SET_BITS(avail_exp_time_t, 0, 8, value)
#define WMI_AVAIL_EXPIRY_TIME_MINUTE_GET(avail_exp_time_t)          WMI_GET_BITS(avail_exp_time_t, 8, 8)
#define WMI_AVAIL_EXPIRY_TIME_MINUTE_SET(avail_exp_time_t, value)   WMI_SET_BITS(avail_exp_time_t, 8, 8, value)
#define WMI_AVAIL_EXPIRY_TIME_HOUR_GET(avail_exp_time_t)            WMI_GET_BITS(avail_exp_time_t, 16, 8)
#define WMI_AVAIL_EXPIRY_TIME_HOUR_SET(avail_exp_time_t, value)     WMI_SET_BITS(avail_exp_time_t, 16, 8, value)
typedef enum {
    /**
     * The following event type is mutually exclusive.
     * afc_event_type will indicate type of AFC event sent from FW to host.
     * 1. For sending Power Info WMI_AFC_EVENT_POWER_INFO event is used.
     * 2. For sending AFC expiry use WMI_AFC_EVENT_TIMER_EXPIRY
     * This type can be expanded in future as per requirements.
     */
    WMI_AFC_EVENT_POWER_INFO   = 1,
    WMI_AFC_EVENT_TIMER_EXPIRY = 2,
} WMI_AFC_EVENT_TYPE;
typedef enum {
    /**
     * The following afc_expiry_event_subtype is mutually exclusive
     * and is a part of expiry event.
     * 1. At boot up AFC expiry will contain AFC start.
     * 2. If AFC timer expires AFC_RENEW status code will be sent to host
     *    with expiry event.
     * 3. If AFC server is not responding to FW in specified time, FW will
     *    indicate host to switch to LPI.
     */
    WMI_AFC_EXPIRY_EVENT_START         = 1,
    WMI_AFC_EXPIRY_EVENT_RENEW         = 2,
    WMI_AFC_EXPIRY_EVENT_SWITCH_TO_LPI = 3,
} WMI_AFC_EXPIRY_EVENT_SUBTYPE;
typedef enum {
    /**
     * The following fw_status_code is mutually exclusive
     * and is used in power event.
     * 0. AFC power event is success.
     * 1. If Host does not indicate AFC indication cmd within certain time
     *    of AFC expiry FW_AFC_POWER_EVENT_RESP_NOT_RECEIVED will be used.
     * 2. If FW is not able to parse afc_info, parsing_failure will be
     *    indicated using WMI_FW_AFC_POWER_EVENT_RESP_NOT_RECEIVED.
     * 3. If due to some local reason AFC event is failed, AFC event failure
     *    is indicated using WMI_FW_AFC_POWER_EVENT_FAILURE.
     */
    WMI_FW_AFC_POWER_EVENT_SUCCESS              = 0,
    WMI_FW_AFC_POWER_EVENT_RESP_NOT_RECEIVED    = 1,
    WMI_FW_AFC_POWER_EVENT_RESP_PARSING_FAILURE = 2,
    WMI_FW_AFC_POWER_EVENT_FAILURE              = 3,
} WMI_FW_AFC_POWER_EVENT_STATUS_CODE;
typedef enum {
    /**
     * The following afc_server_resp_code is mutually exclusive.
     * This response code will be indicated to AFC server.
     * These codes are defined in WIFI spec doc for AFC as follows
     * -1: General Failure
     * 0:  Success
     * 100 - 199: General errors related to the protocol
     * 300 - 399: Error events specific to message exchange for the
     *            Available Spectrum Inquiry
     */
    WMI_AFC_SERV_RESP_GENERAL_FAILURE        = -1,
    WMI_AFC_SERV_RESP_SUCCESS                = 0,
    WMI_AFC_SERV_RESP_VERSION_NOT_SUPPORTED  = 100,
    WMI_AFC_SERV_RESP_DEVICE_UNALLOWED       = 101,
    WMI_AFC_SERV_RESP_MISSING_PARAM          = 102,
    WMI_AFC_SERV_RESP_INVALID_VALUE          = 103,
    WMI_AFC_SERV_RESP_UNEXPECTED_PARAM       = 106,
    WMI_AFC_SERV_RESP_UNSUPPORTED_SPECTRUM   = 300,
} WMI_AFC_SERV_RESP_CODE;
typedef struct {
    /** TLV tag and len;
     *  tag equals WMITLV_TAG_STRUC_wmi_afc_event_fixed_param */
    A_UINT32 tlv_header;
    A_UINT32 phy_id;
    A_UINT32 event_type; /* refer to WMI_AFC_EVENT_TYPE */
    /** This TLV is (optionally) followed by TLV and TLV arrays containing
     *  different afc_event:
     *  1.  wmi_afc_expiry_event_param expiry_evt;
     *      This TLV contains afc_expiry_event_param of fixed size.
     *  2.  wmi_reg_afc_power_event_param afc_power_event;
     *      This TLV contains afc_power_info_param of fixed size.
     *  3.  wmi_6g_afc_frequency_info freq_info[]
     *      This TLV array contains zero or more TLVs of freq_info,
     *      which contain freq range and PSD.
     *  4.  wmi_6g_afc_channel_info channel_info[]
     *      This TLV array contains zero or more TLVs of global_operating
     *      class and number of channel
     *      in each global operating class
     *  5.  wmi_afc_chan_eirp_power_info chan_eirp_power_info[]
     *      This TLV array contains zero or more TLVs of channel CFI and
     *      EIRP power values for each of the total number of channels
     *      per global operating class.
     */
} wmi_afc_event_fixed_param;
typedef struct {
    /** TLV tag and len;
     *  tag equals WMITLV_TAG_STRUC_wmi_afc_expiry_event_param.
     */
    A_UINT32 tlv_header;
    A_UINT32 request_id; /* AFC unique Request ID for AFC expiry event, This is Nonce generated by FW for freshness */
    A_UINT32 event_subtype; /* refer to WMI_AFC_EXPIRY_EVENT_SUBTYPE */
} wmi_afc_expiry_event_param;
typedef struct {
    /** TLV tag and len;
      *tag equals WMITLV_TAG_STRUC_wmi_afc_power_event_param */
    A_UINT32 tlv_header;
    A_UINT32 fw_status_code;     /* refer WMI_FW_AFC_POWER_EVENT_STATUS_CODE */
    A_UINT32 resp_id;            /* AFC unique response ID, in case of fw_status_code as WMI_FW_AFC_POWER_EVENT_RESP_PARSING_FAILURE resp id may be invalid. */
    A_INT32  afc_serv_resp_code; /* refer WMI_AFC_SERV_RESP_CODE, This field and following all fields are valid if fw_status_code is a success. */
    A_UINT32 afc_wfa_version;    /* bits 15:0  -- minor version
                                  * bits 31:16 -- major version
                                  * WMI_AFC_WFA_MINOR_VERSION_GET &
                                  * WMI_AFC_WFA_MAJOR_VERSION_GET
                                  */
    A_UINT32 avail_exp_time_d;   /* avail_exp_time_d and avail_exp_time_t are
                                  * in UTC
                                  * Availability expiry time date format:
                                  * YYYY-MM-DD,
                                  * bits 7:0 -DD - Day (expected values 1-31)
                                  * bits 15:8 -MM - Month (expected values 1-12)
                                  * bits 31:16 -YYYY - Year
                                  */
    A_UINT32 avail_exp_time_t;   /* Availability expiry time format HH-MM-SS
                                  * bits 7:0 -SS - Time in Sec (expected values 0-59)
                                  * bits 15:8 -MM - Minute (expected values 0-59)
                                  * bits 23:16 -HH - Hour (expected values 0-23)
                                  * bits 31:24 -reserved
                                  */
} wmi_afc_power_event_param;
typedef struct {
    /** TLV tag and len;
     * tag equals WMITLV_TAG_STRUC_wmi_6g_afc_frequency_info */
    A_UINT32  tlv_header;
    A_UINT32  freq_info;     /* bits 15:0  = u16 start_freq,
                              * bits 31:16 = u16 end_freq
                              * (both in MHz units)
                              * use MACRO as WMI_REG_RULE_START_FREQ_GET &
                              * WMI_REG_RULE_START_FREQ_SET
                              */
    A_INT32   psd_power_info; /* Maximum PSD in dBm/MHz */
} wmi_6g_afc_frequency_info;
typedef struct {
    /** TLV tag and len;
     * tag equals WMITLV_TAG_STRUC_wmi_6g_afc_channel_info  */
    A_UINT32  tlv_header;
    A_UINT32  global_operating_class;
    A_UINT32  num_channels; /* num of valid channels for above global operating class */
    /* This TLV will be followed by array of
     * num_channels times wmi_afc_chan_eirp_power_info
     * wmi_afc_chan_eirp_power_info power_info[]
     * EIRP power array has chunks of elements corresponding to each channel
     * in the channel array.
     * i.e. the EIRP power array will contain
     * (suppose N1 and N2 are number of valid channels from channel_info[0]
     * and channel_info[1] respectively)
     * eirp_power[0] power for channel 0 from channel_info[0]
     * eirp_power[1] power for channel 1 from channel_info[0]
     * ...
     * eirp_power[N1-1] power for channel N1-1 from channel_info[0]
     * eirp_power[N1] power for channel 0 from channel_info[1]
     * eirp_power[N1+1] power for channel 1 from channel_info[1]
     * ...
     * eirp_power[N1+N2-1] power for channel N2-1 channel_info[1]
     * ...
     */
} wmi_6g_afc_channel_info;
typedef struct {
    /** TLV tag and len;
     * tag equals WMITLV_TAG_STRUC_wmi_afc_chan_eirp_power_info */
    A_UINT32 tlv_header ;
    A_UINT32 channel_cfi; /* channel center frequency indices */
    A_UINT32 eirp_pwr;    /* maximum permissible EIRP available for above CFI in dBm */
} wmi_afc_chan_eirp_power_info;
typedef struct {
    A_UINT32  tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_11d_scan_start_cmd_fixed_param */
    A_UINT32  vdev_id;
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,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_ 1008
#define __WMI_REVISION_ 1009

/** The Version Namespace should not be normally changed. Only
 *  host and firmware of the same WMI namespace will work