Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
0002 /*
0003  * Copyright (C) 2012-2014, 2018-2022 Intel Corporation
0004  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
0005  * Copyright (C) 2016-2017 Intel Deutschland GmbH
0006  */
0007 #ifndef __iwl_fw_api_nvm_reg_h__
0008 #define __iwl_fw_api_nvm_reg_h__
0009 
0010 /**
0011  * enum iwl_regulatory_and_nvm_subcmd_ids - regulatory/NVM commands
0012  */
0013 enum iwl_regulatory_and_nvm_subcmd_ids {
0014     /**
0015      * @NVM_ACCESS_COMPLETE: &struct iwl_nvm_access_complete_cmd
0016      */
0017     NVM_ACCESS_COMPLETE = 0x0,
0018 
0019     /**
0020      * @LARI_CONFIG_CHANGE: &struct iwl_lari_config_change_cmd
0021      */
0022     LARI_CONFIG_CHANGE = 0x1,
0023 
0024     /**
0025      * @NVM_GET_INFO:
0026      * Command is &struct iwl_nvm_get_info,
0027      * response is &struct iwl_nvm_get_info_rsp
0028      */
0029     NVM_GET_INFO = 0x2,
0030 
0031     /**
0032      * @TAS_CONFIG: &struct iwl_tas_config_cmd
0033      */
0034     TAS_CONFIG = 0x3,
0035 
0036     /**
0037      * @SAR_OFFSET_MAPPING_TABLE_CMD: &iwl_sar_offset_mapping_cmd
0038      */
0039     SAR_OFFSET_MAPPING_TABLE_CMD = 0x4,
0040 
0041     /**
0042      * @PNVM_INIT_COMPLETE_NTFY: &struct iwl_pnvm_init_complete_ntfy
0043      */
0044     PNVM_INIT_COMPLETE_NTFY = 0xFE,
0045 };
0046 
0047 /**
0048  * enum iwl_nvm_access_op - NVM access opcode
0049  * @IWL_NVM_READ: read NVM
0050  * @IWL_NVM_WRITE: write NVM
0051  */
0052 enum iwl_nvm_access_op {
0053     IWL_NVM_READ    = 0,
0054     IWL_NVM_WRITE   = 1,
0055 };
0056 
0057 /**
0058  * enum iwl_nvm_access_target - target of the NVM_ACCESS_CMD
0059  * @NVM_ACCESS_TARGET_CACHE: access the cache
0060  * @NVM_ACCESS_TARGET_OTP: access the OTP
0061  * @NVM_ACCESS_TARGET_EEPROM: access the EEPROM
0062  */
0063 enum iwl_nvm_access_target {
0064     NVM_ACCESS_TARGET_CACHE = 0,
0065     NVM_ACCESS_TARGET_OTP = 1,
0066     NVM_ACCESS_TARGET_EEPROM = 2,
0067 };
0068 
0069 /**
0070  * enum iwl_nvm_section_type - section types for NVM_ACCESS_CMD
0071  * @NVM_SECTION_TYPE_SW: software section
0072  * @NVM_SECTION_TYPE_REGULATORY: regulatory section
0073  * @NVM_SECTION_TYPE_CALIBRATION: calibration section
0074  * @NVM_SECTION_TYPE_PRODUCTION: production section
0075  * @NVM_SECTION_TYPE_REGULATORY_SDP: regulatory section used by 3168 series
0076  * @NVM_SECTION_TYPE_MAC_OVERRIDE: MAC override section
0077  * @NVM_SECTION_TYPE_PHY_SKU: PHY SKU section
0078  * @NVM_MAX_NUM_SECTIONS: number of sections
0079  */
0080 enum iwl_nvm_section_type {
0081     NVM_SECTION_TYPE_SW = 1,
0082     NVM_SECTION_TYPE_REGULATORY = 3,
0083     NVM_SECTION_TYPE_CALIBRATION = 4,
0084     NVM_SECTION_TYPE_PRODUCTION = 5,
0085     NVM_SECTION_TYPE_REGULATORY_SDP = 8,
0086     NVM_SECTION_TYPE_MAC_OVERRIDE = 11,
0087     NVM_SECTION_TYPE_PHY_SKU = 12,
0088     NVM_MAX_NUM_SECTIONS = 13,
0089 };
0090 
0091 /**
0092  * struct iwl_nvm_access_cmd - Request the device to send an NVM section
0093  * @op_code: &enum iwl_nvm_access_op
0094  * @target: &enum iwl_nvm_access_target
0095  * @type: &enum iwl_nvm_section_type
0096  * @offset: offset in bytes into the section
0097  * @length: in bytes, to read/write
0098  * @data: if write operation, the data to write. On read its empty
0099  */
0100 struct iwl_nvm_access_cmd {
0101     u8 op_code;
0102     u8 target;
0103     __le16 type;
0104     __le16 offset;
0105     __le16 length;
0106     u8 data[];
0107 } __packed; /* NVM_ACCESS_CMD_API_S_VER_2 */
0108 
0109 /**
0110  * struct iwl_nvm_access_resp_ver2 - response to NVM_ACCESS_CMD
0111  * @offset: offset in bytes into the section
0112  * @length: in bytes, either how much was written or read
0113  * @type: NVM_SECTION_TYPE_*
0114  * @status: 0 for success, fail otherwise
0115  * @data: if read operation, the data returned. Empty on write.
0116  */
0117 struct iwl_nvm_access_resp {
0118     __le16 offset;
0119     __le16 length;
0120     __le16 type;
0121     __le16 status;
0122     u8 data[];
0123 } __packed; /* NVM_ACCESS_CMD_RESP_API_S_VER_2 */
0124 
0125 /*
0126  * struct iwl_nvm_get_info - request to get NVM data
0127  */
0128 struct iwl_nvm_get_info {
0129     __le32 reserved;
0130 } __packed; /* REGULATORY_NVM_GET_INFO_CMD_API_S_VER_1 */
0131 
0132 /**
0133  * enum iwl_nvm_info_general_flags - flags in NVM_GET_INFO resp
0134  * @NVM_GENERAL_FLAGS_EMPTY_OTP: 1 if OTP is empty
0135  */
0136 enum iwl_nvm_info_general_flags {
0137     NVM_GENERAL_FLAGS_EMPTY_OTP = BIT(0),
0138 };
0139 
0140 /**
0141  * struct iwl_nvm_get_info_general - general NVM data
0142  * @flags: bit 0: 1 - empty, 0 - non-empty
0143  * @nvm_version: nvm version
0144  * @board_type: board type
0145  * @n_hw_addrs: number of reserved MAC addresses
0146  */
0147 struct iwl_nvm_get_info_general {
0148     __le32 flags;
0149     __le16 nvm_version;
0150     u8 board_type;
0151     u8 n_hw_addrs;
0152 } __packed; /* REGULATORY_NVM_GET_INFO_GENERAL_S_VER_2 */
0153 
0154 /**
0155  * enum iwl_nvm_mac_sku_flags - flags in &iwl_nvm_get_info_sku
0156  * @NVM_MAC_SKU_FLAGS_BAND_2_4_ENABLED: true if 2.4 band enabled
0157  * @NVM_MAC_SKU_FLAGS_BAND_5_2_ENABLED: true if 5.2 band enabled
0158  * @NVM_MAC_SKU_FLAGS_802_11N_ENABLED: true if 11n enabled
0159  * @NVM_MAC_SKU_FLAGS_802_11AC_ENABLED: true if 11ac enabled
0160  * @NVM_MAC_SKU_FLAGS_MIMO_DISABLED: true if MIMO disabled
0161  * @NVM_MAC_SKU_FLAGS_WAPI_ENABLED: true if WAPI enabled
0162  * @NVM_MAC_SKU_FLAGS_REG_CHECK_ENABLED: true if regulatory checker enabled
0163  * @NVM_MAC_SKU_FLAGS_API_LOCK_ENABLED: true if API lock enabled
0164  */
0165 enum iwl_nvm_mac_sku_flags {
0166     NVM_MAC_SKU_FLAGS_BAND_2_4_ENABLED  = BIT(0),
0167     NVM_MAC_SKU_FLAGS_BAND_5_2_ENABLED  = BIT(1),
0168     NVM_MAC_SKU_FLAGS_802_11N_ENABLED   = BIT(2),
0169     NVM_MAC_SKU_FLAGS_802_11AC_ENABLED  = BIT(3),
0170     /**
0171      * @NVM_MAC_SKU_FLAGS_802_11AX_ENABLED: true if 11ax enabled
0172      */
0173     NVM_MAC_SKU_FLAGS_802_11AX_ENABLED  = BIT(4),
0174     NVM_MAC_SKU_FLAGS_MIMO_DISABLED     = BIT(5),
0175     NVM_MAC_SKU_FLAGS_WAPI_ENABLED      = BIT(8),
0176     NVM_MAC_SKU_FLAGS_REG_CHECK_ENABLED = BIT(14),
0177     NVM_MAC_SKU_FLAGS_API_LOCK_ENABLED  = BIT(15),
0178 };
0179 
0180 /**
0181  * struct iwl_nvm_get_info_sku - mac information
0182  * @mac_sku_flags: flags for SKU, see &enum iwl_nvm_mac_sku_flags
0183  */
0184 struct iwl_nvm_get_info_sku {
0185     __le32 mac_sku_flags;
0186 } __packed; /* REGULATORY_NVM_GET_INFO_MAC_SKU_SECTION_S_VER_2 */
0187 
0188 /**
0189  * struct iwl_nvm_get_info_phy - phy information
0190  * @tx_chains: BIT 0 chain A, BIT 1 chain B
0191  * @rx_chains: BIT 0 chain A, BIT 1 chain B
0192  */
0193 struct iwl_nvm_get_info_phy {
0194     __le32 tx_chains;
0195     __le32 rx_chains;
0196 } __packed; /* REGULATORY_NVM_GET_INFO_PHY_SKU_SECTION_S_VER_1 */
0197 
0198 #define IWL_NUM_CHANNELS_V1 51
0199 #define IWL_NUM_CHANNELS    110
0200 
0201 /**
0202  * struct iwl_nvm_get_info_regulatory - regulatory information
0203  * @lar_enabled: is LAR enabled
0204  * @channel_profile: regulatory data of this channel
0205  * @reserved: reserved
0206  */
0207 struct iwl_nvm_get_info_regulatory_v1 {
0208     __le32 lar_enabled;
0209     __le16 channel_profile[IWL_NUM_CHANNELS_V1];
0210     __le16 reserved;
0211 } __packed; /* REGULATORY_NVM_GET_INFO_REGULATORY_S_VER_1 */
0212 
0213 /**
0214  * struct iwl_nvm_get_info_regulatory - regulatory information
0215  * @lar_enabled: is LAR enabled
0216  * @n_channels: number of valid channels in the array
0217  * @channel_profile: regulatory data of this channel
0218  */
0219 struct iwl_nvm_get_info_regulatory {
0220     __le32 lar_enabled;
0221     __le32 n_channels;
0222     __le32 channel_profile[IWL_NUM_CHANNELS];
0223 } __packed; /* REGULATORY_NVM_GET_INFO_REGULATORY_S_VER_2 */
0224 
0225 /**
0226  * struct iwl_nvm_get_info_rsp_v3 - response to get NVM data
0227  * @general: general NVM data
0228  * @mac_sku: data relating to MAC sku
0229  * @phy_sku: data relating to PHY sku
0230  * @regulatory: regulatory data
0231  */
0232 struct iwl_nvm_get_info_rsp_v3 {
0233     struct iwl_nvm_get_info_general general;
0234     struct iwl_nvm_get_info_sku mac_sku;
0235     struct iwl_nvm_get_info_phy phy_sku;
0236     struct iwl_nvm_get_info_regulatory_v1 regulatory;
0237 } __packed; /* REGULATORY_NVM_GET_INFO_RSP_API_S_VER_3 */
0238 
0239 /**
0240  * struct iwl_nvm_get_info_rsp - response to get NVM data
0241  * @general: general NVM data
0242  * @mac_sku: data relating to MAC sku
0243  * @phy_sku: data relating to PHY sku
0244  * @regulatory: regulatory data
0245  */
0246 struct iwl_nvm_get_info_rsp {
0247     struct iwl_nvm_get_info_general general;
0248     struct iwl_nvm_get_info_sku mac_sku;
0249     struct iwl_nvm_get_info_phy phy_sku;
0250     struct iwl_nvm_get_info_regulatory regulatory;
0251 } __packed; /* REGULATORY_NVM_GET_INFO_RSP_API_S_VER_4 */
0252 
0253 /**
0254  * struct iwl_nvm_access_complete_cmd - NVM_ACCESS commands are completed
0255  * @reserved: reserved
0256  */
0257 struct iwl_nvm_access_complete_cmd {
0258     __le32 reserved;
0259 } __packed; /* NVM_ACCESS_COMPLETE_CMD_API_S_VER_1 */
0260 
0261 /**
0262  * struct iwl_mcc_update_cmd - Request the device to update geographic
0263  * regulatory profile according to the given MCC (Mobile Country Code).
0264  * The MCC is two letter-code, ascii upper case[A-Z] or '00' for world domain.
0265  * 'ZZ' MCC will be used to switch to NVM default profile; in this case, the
0266  * MCC in the cmd response will be the relevant MCC in the NVM.
0267  * @mcc: given mobile country code
0268  * @source_id: the source from where we got the MCC, see iwl_mcc_source
0269  * @reserved: reserved for alignment
0270  * @key: integrity key for MCC API OEM testing
0271  * @reserved2: reserved
0272  */
0273 struct iwl_mcc_update_cmd {
0274     __le16 mcc;
0275     u8 source_id;
0276     u8 reserved;
0277     __le32 key;
0278     u8 reserved2[20];
0279 } __packed; /* LAR_UPDATE_MCC_CMD_API_S_VER_2 */
0280 
0281 /**
0282  * enum iwl_geo_information - geographic information.
0283  * @GEO_NO_INFO: no special info for this geo profile.
0284  * @GEO_WMM_ETSI_5GHZ_INFO: this geo profile limits the WMM params
0285  *  for the 5 GHz band.
0286  */
0287 enum iwl_geo_information {
0288     GEO_NO_INFO =           0,
0289     GEO_WMM_ETSI_5GHZ_INFO =    BIT(0),
0290 };
0291 
0292 /**
0293  * struct iwl_mcc_update_resp_v3 - response to MCC_UPDATE_CMD.
0294  * Contains the new channel control profile map, if changed, and the new MCC
0295  * (mobile country code).
0296  * The new MCC may be different than what was requested in MCC_UPDATE_CMD.
0297  * @status: see &enum iwl_mcc_update_status
0298  * @mcc: the new applied MCC
0299  * @cap: capabilities for all channels which matches the MCC
0300  * @source_id: the MCC source, see iwl_mcc_source
0301  * @time: time elapsed from the MCC test start (in units of 30 seconds)
0302  * @geo_info: geographic specific profile information
0303  *  see &enum iwl_geo_information.
0304  * @n_channels: number of channels in @channels_data.
0305  * @channels: channel control data map, DWORD for each channel. Only the first
0306  *  16bits are used.
0307  */
0308 struct iwl_mcc_update_resp_v3 {
0309     __le32 status;
0310     __le16 mcc;
0311     u8 cap;
0312     u8 source_id;
0313     __le16 time;
0314     __le16 geo_info;
0315     __le32 n_channels;
0316     __le32 channels[];
0317 } __packed; /* LAR_UPDATE_MCC_CMD_RESP_S_VER_3 */
0318 
0319 /**
0320  * struct iwl_mcc_update_resp - response to MCC_UPDATE_CMD.
0321  * Contains the new channel control profile map, if changed, and the new MCC
0322  * (mobile country code).
0323  * The new MCC may be different than what was requested in MCC_UPDATE_CMD.
0324  * @status: see &enum iwl_mcc_update_status
0325  * @mcc: the new applied MCC
0326  * @cap: capabilities for all channels which matches the MCC
0327  * @time: time elapsed from the MCC test start (in units of 30 seconds)
0328  * @geo_info: geographic specific profile information
0329  *  see &enum iwl_geo_information.
0330  * @source_id: the MCC source, see iwl_mcc_source
0331  * @reserved: for four bytes alignment.
0332  * @n_channels: number of channels in @channels_data.
0333  * @channels: channel control data map, DWORD for each channel. Only the first
0334  *  16bits are used.
0335  */
0336 struct iwl_mcc_update_resp {
0337     __le32 status;
0338     __le16 mcc;
0339     __le16 cap;
0340     __le16 time;
0341     __le16 geo_info;
0342     u8 source_id;
0343     u8 reserved[3];
0344     __le32 n_channels;
0345     __le32 channels[];
0346 } __packed; /* LAR_UPDATE_MCC_CMD_RESP_S_VER_4 */
0347 
0348 /**
0349  * struct iwl_mcc_chub_notif - chub notifies of mcc change
0350  * (MCC_CHUB_UPDATE_CMD = 0xc9)
0351  * The Chub (Communication Hub, CommsHUB) is a HW component that connects to
0352  * the cellular and connectivity cores that gets updates of the mcc, and
0353  * notifies the ucode directly of any mcc change.
0354  * The ucode requests the driver to request the device to update geographic
0355  * regulatory  profile according to the given MCC (Mobile Country Code).
0356  * The MCC is two letter-code, ascii upper case[A-Z] or '00' for world domain.
0357  * 'ZZ' MCC will be used to switch to NVM default profile; in this case, the
0358  * MCC in the cmd response will be the relevant MCC in the NVM.
0359  * @mcc: given mobile country code
0360  * @source_id: identity of the change originator, see iwl_mcc_source
0361  * @reserved1: reserved for alignment
0362  */
0363 struct iwl_mcc_chub_notif {
0364     __le16 mcc;
0365     u8 source_id;
0366     u8 reserved1;
0367 } __packed; /* LAR_MCC_NOTIFY_S */
0368 
0369 enum iwl_mcc_update_status {
0370     MCC_RESP_NEW_CHAN_PROFILE,
0371     MCC_RESP_SAME_CHAN_PROFILE,
0372     MCC_RESP_INVALID,
0373     MCC_RESP_NVM_DISABLED,
0374     MCC_RESP_ILLEGAL,
0375     MCC_RESP_LOW_PRIORITY,
0376     MCC_RESP_TEST_MODE_ACTIVE,
0377     MCC_RESP_TEST_MODE_NOT_ACTIVE,
0378     MCC_RESP_TEST_MODE_DENIAL_OF_SERVICE,
0379 };
0380 
0381 enum iwl_mcc_source {
0382     MCC_SOURCE_OLD_FW = 0,
0383     MCC_SOURCE_ME = 1,
0384     MCC_SOURCE_BIOS = 2,
0385     MCC_SOURCE_3G_LTE_HOST = 3,
0386     MCC_SOURCE_3G_LTE_DEVICE = 4,
0387     MCC_SOURCE_WIFI = 5,
0388     MCC_SOURCE_RESERVED = 6,
0389     MCC_SOURCE_DEFAULT = 7,
0390     MCC_SOURCE_UNINITIALIZED = 8,
0391     MCC_SOURCE_MCC_API = 9,
0392     MCC_SOURCE_GET_CURRENT = 0x10,
0393     MCC_SOURCE_GETTING_MCC_TEST_MODE = 0x11,
0394 };
0395 
0396 #define IWL_TAS_BLOCK_LIST_MAX 16
0397 /**
0398  * struct iwl_tas_config_cmd_v2 - configures the TAS
0399  * @block_list_size: size of relevant field in block_list_array
0400  * @block_list_array: list of countries where TAS must be disabled
0401  */
0402 struct iwl_tas_config_cmd_v2 {
0403     __le32 block_list_size;
0404     __le32 block_list_array[IWL_TAS_BLOCK_LIST_MAX];
0405 } __packed; /* TAS_CONFIG_CMD_API_S_VER_2 */
0406 
0407 /**
0408  * struct iwl_tas_config_cmd_v3 - configures the TAS
0409  * @block_list_size: size of relevant field in block_list_array
0410  * @block_list_array: list of countries where TAS must be disabled
0411  * @override_tas_iec: indicates whether to override default value of IEC regulatory
0412  * @enable_tas_iec: in case override_tas_iec is set -
0413  *  indicates whether IEC regulatory is enabled or disabled
0414  */
0415 struct iwl_tas_config_cmd_v3 {
0416     __le32 block_list_size;
0417     __le32 block_list_array[IWL_TAS_BLOCK_LIST_MAX];
0418     __le16 override_tas_iec;
0419     __le16 enable_tas_iec;
0420 } __packed; /* TAS_CONFIG_CMD_API_S_VER_3 */
0421 
0422 /**
0423  * struct iwl_tas_config_cmd_v3 - configures the TAS
0424  * @block_list_size: size of relevant field in block_list_array
0425  * @block_list_array: list of countries where TAS must be disabled
0426  * @override_tas_iec: indicates whether to override default value of IEC regulatory
0427  * @enable_tas_iec: in case override_tas_iec is set -
0428  *  indicates whether IEC regulatory is enabled or disabled
0429  * @usa_tas_uhb_allowed: if set, allow TAS UHB in the USA
0430  * @reserved: reserved
0431 */
0432 struct iwl_tas_config_cmd_v4 {
0433     __le32 block_list_size;
0434     __le32 block_list_array[IWL_TAS_BLOCK_LIST_MAX];
0435     u8 override_tas_iec;
0436     u8 enable_tas_iec;
0437     u8 usa_tas_uhb_allowed;
0438     u8 reserved;
0439 } __packed; /* TAS_CONFIG_CMD_API_S_VER_4 */
0440 
0441 union iwl_tas_config_cmd {
0442     struct iwl_tas_config_cmd_v2 v2;
0443     struct iwl_tas_config_cmd_v3 v3;
0444     struct iwl_tas_config_cmd_v4 v4;
0445 };
0446 /**
0447  * enum iwl_lari_configs - bit masks for the various LARI config operations
0448  * @LARI_CONFIG_DISABLE_11AC_UKRAINE_MSK: disable 11ac in ukraine
0449  * @LARI_CONFIG_CHANGE_ETSI_TO_PASSIVE_MSK: ETSI 5.8GHz SRD passive scan
0450  * @LARI_CONFIG_CHANGE_ETSI_TO_DISABLED_MSK: ETSI 5.8GHz SRD disabled
0451  * @LARI_CONFIG_ENABLE_5G2_IN_INDONESIA_MSK: enable 5.15/5.35GHz bands in
0452  *  Indonesia
0453  */
0454 enum iwl_lari_config_masks {
0455     LARI_CONFIG_DISABLE_11AC_UKRAINE_MSK        = BIT(0),
0456     LARI_CONFIG_CHANGE_ETSI_TO_PASSIVE_MSK      = BIT(1),
0457     LARI_CONFIG_CHANGE_ETSI_TO_DISABLED_MSK     = BIT(2),
0458     LARI_CONFIG_ENABLE_5G2_IN_INDONESIA_MSK     = BIT(3),
0459 };
0460 
0461 #define IWL_11AX_UKRAINE_MASK 3
0462 #define IWL_11AX_UKRAINE_SHIFT 8
0463 
0464 /**
0465  * struct iwl_lari_config_change_cmd_v1 - change LARI configuration
0466  * @config_bitmap: bit map of the config commands. each bit will trigger a
0467  * different predefined FW config operation
0468  */
0469 struct iwl_lari_config_change_cmd_v1 {
0470     __le32 config_bitmap;
0471 } __packed; /* LARI_CHANGE_CONF_CMD_S_VER_1 */
0472 
0473 /**
0474  * struct iwl_lari_config_change_cmd_v2 - change LARI configuration
0475  * @config_bitmap: bit map of the config commands. each bit will trigger a
0476  * different predefined FW config operation
0477  * @oem_uhb_allow_bitmap: bitmap of UHB enabled MCC sets
0478  */
0479 struct iwl_lari_config_change_cmd_v2 {
0480     __le32 config_bitmap;
0481     __le32 oem_uhb_allow_bitmap;
0482 } __packed; /* LARI_CHANGE_CONF_CMD_S_VER_2 */
0483 
0484 /**
0485  * struct iwl_lari_config_change_cmd_v3 - change LARI configuration
0486  * @config_bitmap: bit map of the config commands. each bit will trigger a
0487  * different predefined FW config operation
0488  * @oem_uhb_allow_bitmap: bitmap of UHB enabled MCC sets
0489  * @oem_11ax_allow_bitmap: bitmap of 11ax allowed MCCs.
0490  * For each supported country, a pair of regulatory override bit and 11ax mode exist
0491  * in the bit field.
0492  */
0493 struct iwl_lari_config_change_cmd_v3 {
0494     __le32 config_bitmap;
0495     __le32 oem_uhb_allow_bitmap;
0496     __le32 oem_11ax_allow_bitmap;
0497 } __packed; /* LARI_CHANGE_CONF_CMD_S_VER_3 */
0498 
0499 /**
0500  * struct iwl_lari_config_change_cmd_v4 - change LARI configuration
0501  * @config_bitmap: Bitmap of the config commands. Each bit will trigger a
0502  *     different predefined FW config operation.
0503  * @oem_uhb_allow_bitmap: Bitmap of UHB enabled MCC sets.
0504  * @oem_11ax_allow_bitmap: Bitmap of 11ax allowed MCCs. There are two bits
0505  *     per country, one to indicate whether to override and the other to
0506  *     indicate the value to use.
0507  * @oem_unii4_allow_bitmap: Bitmap of unii4 allowed MCCs.There are two bits
0508  *     per country, one to indicate whether to override and the other to
0509  *     indicate allow/disallow unii4 channels.
0510  */
0511 struct iwl_lari_config_change_cmd_v4 {
0512     __le32 config_bitmap;
0513     __le32 oem_uhb_allow_bitmap;
0514     __le32 oem_11ax_allow_bitmap;
0515     __le32 oem_unii4_allow_bitmap;
0516 } __packed; /* LARI_CHANGE_CONF_CMD_S_VER_4 */
0517 
0518 /**
0519  * struct iwl_lari_config_change_cmd_v5 - change LARI configuration
0520  * @config_bitmap: Bitmap of the config commands. Each bit will trigger a
0521  *     different predefined FW config operation.
0522  * @oem_uhb_allow_bitmap: Bitmap of UHB enabled MCC sets.
0523  * @oem_11ax_allow_bitmap: Bitmap of 11ax allowed MCCs. There are two bits
0524  *     per country, one to indicate whether to override and the other to
0525  *     indicate the value to use.
0526  * @oem_unii4_allow_bitmap: Bitmap of unii4 allowed MCCs.There are two bits
0527  *     per country, one to indicate whether to override and the other to
0528  *     indicate allow/disallow unii4 channels.
0529  * @chan_state_active_bitmap: Bitmap for overriding channel state to active.
0530  *     Each bit represents a country or region to activate, according to the BIOS
0531  *     definitions.
0532  */
0533 struct iwl_lari_config_change_cmd_v5 {
0534     __le32 config_bitmap;
0535     __le32 oem_uhb_allow_bitmap;
0536     __le32 oem_11ax_allow_bitmap;
0537     __le32 oem_unii4_allow_bitmap;
0538     __le32 chan_state_active_bitmap;
0539 } __packed; /* LARI_CHANGE_CONF_CMD_S_VER_5 */
0540 
0541 /**
0542  * struct iwl_lari_config_change_cmd_v6 - change LARI configuration
0543  * @config_bitmap: Bitmap of the config commands. Each bit will trigger a
0544  *     different predefined FW config operation.
0545  * @oem_uhb_allow_bitmap: Bitmap of UHB enabled MCC sets.
0546  * @oem_11ax_allow_bitmap: Bitmap of 11ax allowed MCCs. There are two bits
0547  *     per country, one to indicate whether to override and the other to
0548  *     indicate the value to use.
0549  * @oem_unii4_allow_bitmap: Bitmap of unii4 allowed MCCs.There are two bits
0550  *     per country, one to indicate whether to override and the other to
0551  *     indicate allow/disallow unii4 channels.
0552  * @chan_state_active_bitmap: Bitmap for overriding channel state to active.
0553  *     Each bit represents a country or region to activate, according to the BIOS
0554  *     definitions.
0555  * @force_disable_channels_bitmap: Bitmap of disabled bands/channels.
0556  *     Each bit represents a set of channels in a specific band that should be disabled
0557  */
0558 struct iwl_lari_config_change_cmd_v6 {
0559     __le32 config_bitmap;
0560     __le32 oem_uhb_allow_bitmap;
0561     __le32 oem_11ax_allow_bitmap;
0562     __le32 oem_unii4_allow_bitmap;
0563     __le32 chan_state_active_bitmap;
0564     __le32 force_disable_channels_bitmap;
0565 } __packed; /* LARI_CHANGE_CONF_CMD_S_VER_6 */
0566 
0567 /**
0568  * struct iwl_pnvm_init_complete_ntfy - PNVM initialization complete
0569  * @status: PNVM image loading status
0570  */
0571 struct iwl_pnvm_init_complete_ntfy {
0572     __le32 status;
0573 } __packed; /* PNVM_INIT_COMPLETE_NTFY_S_VER_1 */
0574 
0575 #endif /* __iwl_fw_api_nvm_reg_h__ */