Browse Source

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

Change-Id: Ib69bb4b77d736fdad55c3bcdd9ab76b4e2fb7f3b
WMI: define structs used for interpreting AFC binary data
CRs-Fixed: 2262693
spuligil 3 years ago
parent
commit
829112c41c
2 changed files with 80 additions and 3 deletions
  1. 79 2
      fw/wmi_unified.h
  2. 1 1
      fw/wmi_version.h

+ 79 - 2
fw/wmi_unified.h

@@ -29012,6 +29012,78 @@ typedef struct {
      */
 } wmi_afc_serv_resp_struct;
 
+/*
+ * The following structures define the format used for AFC binary data objects
+ * shared by the host SW and target FW.
+ * FW expects these structures to be written in shared memory in little-endian
+ * format. If the host/AFC app uses big endian format, Host/APP needs to
+ * byteswap the data, so FW will get data in the expected little-endian format.
+ */
+typedef struct {
+    A_UINT32 freq_info; /* bits 15:0  = u16 start_freq,
+                         * bits 31:16 = u16 end_freq
+                         * both in MHz units
+                         */
+    A_INT32 max_psd;     /* Maximum PSD in dBm/MHz, value is stored in 0.01 dBm/MHz steps */
+} afc_freq_info;
+
+typedef struct {
+    A_UINT32 channel_cfi;  /* channel center frequency index */
+    A_UINT32 max_eirp_pwr; /* maximum permissible EIRP available for above CFI in dBm, value is stored in 0.01 dBm steps  */
+} afc_eirp_info;
+
+typedef struct {
+    A_UINT32 global_operating_class;
+    A_UINT32 num_channels; /* num of valid channels for above global operating class */
+    /* This structure is followed by (num_channels*sizeof(afc_eirp_info))
+     * bytes array:
+     *     afc_eirp_info eirp_info[num_channels];
+     *     List of channel cfi and eirp power values,
+     *     Total size will be num_channels * sizeof(afc_eirp_info)
+     */
+} afc_channel_info;
+
+/*
+ * For case of afc_server_resp containing binary payload, the buf pointer
+ * in wmi_afc_serv_resp_struct will be poiniting to binary format payload
+ * which is in the format defined below.
+ */
+typedef struct {
+    A_UINT32 local_error_code;   /* Internal error code between AFC app and target success = 0, General failure = 1 */
+    A_UINT32 version;            /* Internal version between AFC app and Target for structure pattern */
+    A_UINT32 afc_wfa_version;    /* Version defined in AFC spec document. bits 15:0 -- minor version & bits 31:16 -- major version */
+    A_UINT32 request_id;         /* AFC unique request ID */
+    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
+                                  */
+    A_INT32 afc_serv_resp_code;   /* response code defined in afc wfa document, refer WMI_AFC_SERV_RESP_CODE */
+    A_UINT32 num_frequency_obj;   /* Total number of frequency objects */
+    A_UINT32 num_channel_obj;     /* Total number of frequency objects */
+    char shortdesc[64];           /* This field represents a short description related to the result indicated by the response_code
+                                   * field. End of description will be indicated by 0 */
+    A_UINT32 reserved[2];         /* reserve space for future fields - needs to be set to 0x0 */
+
+    /*
+     * This structure is followed by an array of frequency info and
+     * channel info array:
+     *   - afc_freq_info freq_info[num_frequency_obj];
+     *     List of frequency power values, total size will be
+     *     num_frequency_obj * sizeof(afc_freq_info)
+     *   - afc_channel_info chan_info[num_channel_obj];
+     *     List of channel power values, total size will be
+     *     num_channel_obj * sizeof(afc_channel_info)
+     */
+} afc_spectrum_inquiry_resp_bin_type;
+
 /* 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)
@@ -29313,6 +29385,11 @@ typedef struct {
     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 */
+    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
+                                  */
 } wmi_afc_expiry_event_param;
 
 typedef struct {
@@ -29353,7 +29430,7 @@ typedef struct {
                               * 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 */
+    A_INT32   psd_power_info; /* Maximum PSD in dBm/MHz, value is stored in 0.01 dBm/MHz steps */
 } wmi_6g_afc_frequency_info;
 
 typedef struct {
@@ -29387,7 +29464,7 @@ typedef struct {
      * 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 */
+    A_UINT32 eirp_pwr;    /* maximum permissible EIRP available for above CFI in dBm, value is stored in 0.01 dBm steps */
 } wmi_afc_chan_eirp_power_info;
 
 typedef struct {

+ 1 - 1
fw/wmi_version.h

@@ -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_ 1022
+#define __WMI_REVISION_ 1023
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work