The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/dev/iwlwifi/iwl-nvm-parse.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
    2 /*
    3  * Copyright (C) 2005-2015, 2018-2021 Intel Corporation
    4  * Copyright (C) 2016-2017 Intel Deutschland GmbH
    5  */
    6 #ifndef __iwl_nvm_parse_h__
    7 #define __iwl_nvm_parse_h__
    8 
    9 #include <net/cfg80211.h>
   10 #include "iwl-eeprom-parse.h"
   11 #include "mei/iwl-mei.h"
   12 
   13 /**
   14  * enum iwl_nvm_sbands_flags - modification flags for the channel profiles
   15  *
   16  * @IWL_NVM_SBANDS_FLAGS_LAR: LAR is enabled
   17  * @IWL_NVM_SBANDS_FLAGS_NO_WIDE_IN_5GHZ: disallow 40, 80 and 160MHz on 5GHz
   18  */
   19 enum iwl_nvm_sbands_flags {
   20         IWL_NVM_SBANDS_FLAGS_LAR                = BIT(0),
   21         IWL_NVM_SBANDS_FLAGS_NO_WIDE_IN_5GHZ    = BIT(1),
   22 };
   23 
   24 /**
   25  * iwl_parse_nvm_data - parse NVM data and return values
   26  *
   27  * This function parses all NVM values we need and then
   28  * returns a (newly allocated) struct containing all the
   29  * relevant values for driver use. The struct must be freed
   30  * later with iwl_free_nvm_data().
   31  */
   32 struct iwl_nvm_data *
   33 iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
   34                    const struct iwl_fw *fw,
   35                    const __be16 *nvm_hw, const __le16 *nvm_sw,
   36                    const __le16 *nvm_calib, const __le16 *regulatory,
   37                    const __le16 *mac_override, const __le16 *phy_sku,
   38                    u8 tx_chains, u8 rx_chains);
   39 
   40 /**
   41  * iwl_parse_mcc_info - parse MCC (mobile country code) info coming from FW
   42  *
   43  * This function parses the regulatory channel data received as a
   44  * MCC_UPDATE_CMD command. It returns a newly allocation regulatory domain,
   45  * to be fed into the regulatory core. In case the geo_info is set handle
   46  * accordingly. An ERR_PTR is returned on error.
   47  * If not given to the regulatory core, the user is responsible for freeing
   48  * the regdomain returned here with kfree.
   49  */
   50 struct ieee80211_regdomain *
   51 iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
   52                        int num_of_ch, __le32 *channels, u16 fw_mcc,
   53                        u16 geo_info, u16 cap, u8 resp_ver);
   54 
   55 /**
   56  * struct iwl_nvm_section - describes an NVM section in memory.
   57  *
   58  * This struct holds an NVM section read from the NIC using NVM_ACCESS_CMD,
   59  * and saved for later use by the driver. Not all NVM sections are saved
   60  * this way, only the needed ones.
   61  */
   62 struct iwl_nvm_section {
   63         u16 length;
   64         const u8 *data;
   65 };
   66 
   67 /**
   68  * iwl_read_external_nvm - Reads external NVM from a file into nvm_sections
   69  */
   70 int iwl_read_external_nvm(struct iwl_trans *trans,
   71                           const char *nvm_file_name,
   72                           struct iwl_nvm_section *nvm_sections);
   73 void iwl_nvm_fixups(u32 hw_id, unsigned int section, u8 *data,
   74                     unsigned int len);
   75 
   76 /**
   77  * iwl_get_nvm - retrieve NVM data from firmware
   78  *
   79  * Allocates a new iwl_nvm_data structure, fills it with
   80  * NVM data, and returns it to caller.
   81  */
   82 struct iwl_nvm_data *iwl_get_nvm(struct iwl_trans *trans,
   83                                  const struct iwl_fw *fw);
   84 
   85 /**
   86  * iwl_parse_mei_nvm_data - parse the mei_nvm_data and get an iwl_nvm_data
   87  */
   88 struct iwl_nvm_data *
   89 iwl_parse_mei_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
   90                        const struct iwl_mei_nvm *mei_nvm,
   91                        const struct iwl_fw *fw);
   92 
   93 #endif /* __iwl_nvm_parse_h__ */

Cache object: 2c6404fcff6a46e31ab91506f81618f4


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.