1*a4128aadSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2*a4128aadSBjoern A. Zeeb /* 3*a4128aadSBjoern A. Zeeb * Copyright (C) 2005-2014, 2018, 2020-2023 Intel Corporation 4*a4128aadSBjoern A. Zeeb * Copyright (C) 2015 Intel Mobile Communications GmbH 5*a4128aadSBjoern A. Zeeb */ 6*a4128aadSBjoern A. Zeeb #ifndef __iwl_eeprom_parse_h__ 7*a4128aadSBjoern A. Zeeb #define __iwl_eeprom_parse_h__ 8*a4128aadSBjoern A. Zeeb 9*a4128aadSBjoern A. Zeeb #include <linux/types.h> 10*a4128aadSBjoern A. Zeeb #include <linux/if_ether.h> 11*a4128aadSBjoern A. Zeeb #include <net/cfg80211.h> 12*a4128aadSBjoern A. Zeeb #include "iwl-trans.h" 13*a4128aadSBjoern A. Zeeb 14*a4128aadSBjoern A. Zeeb struct iwl_nvm_data { 15*a4128aadSBjoern A. Zeeb int n_hw_addrs; 16*a4128aadSBjoern A. Zeeb u8 hw_addr[ETH_ALEN]; 17*a4128aadSBjoern A. Zeeb 18*a4128aadSBjoern A. Zeeb u8 calib_version; 19*a4128aadSBjoern A. Zeeb __le16 calib_voltage; 20*a4128aadSBjoern A. Zeeb 21*a4128aadSBjoern A. Zeeb __le16 raw_temperature; 22*a4128aadSBjoern A. Zeeb __le16 kelvin_temperature; 23*a4128aadSBjoern A. Zeeb __le16 kelvin_voltage; 24*a4128aadSBjoern A. Zeeb __le16 xtal_calib[2]; 25*a4128aadSBjoern A. Zeeb 26*a4128aadSBjoern A. Zeeb bool sku_cap_band_24ghz_enable; 27*a4128aadSBjoern A. Zeeb bool sku_cap_band_52ghz_enable; 28*a4128aadSBjoern A. Zeeb bool sku_cap_11n_enable; 29*a4128aadSBjoern A. Zeeb bool sku_cap_11ac_enable; 30*a4128aadSBjoern A. Zeeb bool sku_cap_11ax_enable; 31*a4128aadSBjoern A. Zeeb bool sku_cap_amt_enable; 32*a4128aadSBjoern A. Zeeb bool sku_cap_ipan_enable; 33*a4128aadSBjoern A. Zeeb bool sku_cap_mimo_disabled; 34*a4128aadSBjoern A. Zeeb bool sku_cap_11be_enable; 35*a4128aadSBjoern A. Zeeb 36*a4128aadSBjoern A. Zeeb u16 radio_cfg_type; 37*a4128aadSBjoern A. Zeeb u8 radio_cfg_step; 38*a4128aadSBjoern A. Zeeb u8 radio_cfg_dash; 39*a4128aadSBjoern A. Zeeb u8 radio_cfg_pnum; 40*a4128aadSBjoern A. Zeeb u8 valid_tx_ant, valid_rx_ant; 41*a4128aadSBjoern A. Zeeb 42*a4128aadSBjoern A. Zeeb u32 nvm_version; 43*a4128aadSBjoern A. Zeeb s8 max_tx_pwr_half_dbm; 44*a4128aadSBjoern A. Zeeb 45*a4128aadSBjoern A. Zeeb bool lar_enabled; 46*a4128aadSBjoern A. Zeeb bool vht160_supported; 47*a4128aadSBjoern A. Zeeb struct ieee80211_supported_band bands[NUM_NL80211_BANDS]; 48*a4128aadSBjoern A. Zeeb 49*a4128aadSBjoern A. Zeeb /* 50*a4128aadSBjoern A. Zeeb * iftype data for low (2.4 GHz) high (5 GHz) and uhb (6 GHz) bands 51*a4128aadSBjoern A. Zeeb */ 52*a4128aadSBjoern A. Zeeb struct { 53*a4128aadSBjoern A. Zeeb struct ieee80211_sband_iftype_data low[2]; 54*a4128aadSBjoern A. Zeeb struct ieee80211_sband_iftype_data high[2]; 55*a4128aadSBjoern A. Zeeb struct ieee80211_sband_iftype_data uhb[2]; 56*a4128aadSBjoern A. Zeeb } iftd; 57*a4128aadSBjoern A. Zeeb 58*a4128aadSBjoern A. Zeeb struct ieee80211_channel channels[]; 59*a4128aadSBjoern A. Zeeb }; 60*a4128aadSBjoern A. Zeeb 61*a4128aadSBjoern A. Zeeb int iwl_init_sband_channels(struct iwl_nvm_data *data, 62*a4128aadSBjoern A. Zeeb struct ieee80211_supported_band *sband, 63*a4128aadSBjoern A. Zeeb int n_channels, enum nl80211_band band); 64*a4128aadSBjoern A. Zeeb 65*a4128aadSBjoern A. Zeeb void iwl_init_ht_hw_capab(struct iwl_trans *trans, 66*a4128aadSBjoern A. Zeeb struct iwl_nvm_data *data, 67*a4128aadSBjoern A. Zeeb struct ieee80211_sta_ht_cap *ht_info, 68*a4128aadSBjoern A. Zeeb enum nl80211_band band, 69*a4128aadSBjoern A. Zeeb u8 tx_chains, u8 rx_chains); 70*a4128aadSBjoern A. Zeeb 71*a4128aadSBjoern A. Zeeb #endif /* __iwl_eeprom_parse_h__ */ 72