Lines Matching +full:eeprom +full:- +full:data

1 // SPDX-License-Identifier: ISC
8 #include "eeprom.h"
12 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_check_eeprom() local
13 u16 val = get_unaligned_le16(eeprom); in mt7996_check_eeprom()
19 return -EINVAL; in mt7996_check_eeprom()
32 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_eeprom_load_default() local
36 ret = request_firmware(&fw, mt7996_eeprom_name(dev), dev->mt76.dev); in mt7996_eeprom_load_default()
40 if (!fw || !fw->data) { in mt7996_eeprom_load_default()
41 dev_err(dev->mt76.dev, "Invalid default bin\n"); in mt7996_eeprom_load_default()
42 ret = -EINVAL; in mt7996_eeprom_load_default()
46 memcpy(eeprom, fw->data, MT7996_EEPROM_SIZE); in mt7996_eeprom_load_default()
47 dev->flash_mode = true; in mt7996_eeprom_load_default()
59 ret = mt76_eeprom_init(&dev->mt76, MT7996_EEPROM_SIZE); in mt7996_eeprom_load()
64 dev->flash_mode = true; in mt7996_eeprom_load()
76 return -EINVAL; in mt7996_eeprom_load()
78 /* read eeprom data from efuse */ in mt7996_eeprom_load()
102 dev->has_eht = !(cap & MODE_HE_ONLY); in mt7996_eeprom_parse_efuse_hw_cap()
103 dev->wtbl_size_group = u32_get_bits(cap, WTBL_SIZE_GROUP); in mt7996_eeprom_parse_efuse_hw_cap()
106 if (dev->wtbl_size_group < 2 || dev->wtbl_size_group > 4) in mt7996_eeprom_parse_efuse_hw_cap()
107 dev->wtbl_size_group = 2; /* set default */ in mt7996_eeprom_parse_efuse_hw_cap()
114 u8 *eeprom = phy->dev->mt76.eeprom.data; in mt7996_eeprom_parse_band_config() local
115 u32 val = eeprom[MT_EE_WIFI_CONF]; in mt7996_eeprom_parse_band_config()
118 switch (phy->mt76->band_idx) { in mt7996_eeprom_parse_band_config()
123 val = eeprom[MT_EE_WIFI_CONF + 1]; in mt7996_eeprom_parse_band_config()
133 phy->mt76->cap.has_2ghz = true; in mt7996_eeprom_parse_band_config()
136 phy->mt76->cap.has_5ghz = true; in mt7996_eeprom_parse_band_config()
139 phy->mt76->cap.has_6ghz = true; in mt7996_eeprom_parse_band_config()
142 ret = -EINVAL; in mt7996_eeprom_parse_band_config()
151 u8 path, nss, band_idx = phy->mt76->band_idx; in mt7996_eeprom_parse_hw_cap()
152 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_eeprom_parse_hw_cap() local
153 struct mt76_phy *mphy = phy->mt76; in mt7996_eeprom_parse_hw_cap()
159 eeprom[MT_EE_WIFI_CONF + 2]); in mt7996_eeprom_parse_hw_cap()
161 eeprom[MT_EE_WIFI_CONF + 5]); in mt7996_eeprom_parse_hw_cap()
165 eeprom[MT_EE_WIFI_CONF + 2]); in mt7996_eeprom_parse_hw_cap()
167 eeprom[MT_EE_WIFI_CONF + 5]); in mt7996_eeprom_parse_hw_cap()
171 eeprom[MT_EE_WIFI_CONF + 1]); in mt7996_eeprom_parse_hw_cap()
173 eeprom[MT_EE_WIFI_CONF + 4]); in mt7996_eeprom_parse_hw_cap()
182 mphy->antenna_mask = BIT(nss) - 1; in mt7996_eeprom_parse_hw_cap()
183 mphy->chainmask = (BIT(path) - 1) << dev->chainshift[band_idx]; in mt7996_eeprom_parse_hw_cap()
184 dev->chainmask |= mphy->chainmask; in mt7996_eeprom_parse_hw_cap()
186 dev->chainshift[band_idx + 1] = dev->chainshift[band_idx] + in mt7996_eeprom_parse_hw_cap()
187 hweight16(mphy->chainmask); in mt7996_eeprom_parse_hw_cap()
202 if (ret != -EINVAL) in mt7996_eeprom_init()
205 dev_warn(dev->mt76.dev, "eeprom load fail, use default bin\n"); in mt7996_eeprom_init()
211 ret = mt7996_eeprom_parse_hw_cap(dev, &dev->phy); in mt7996_eeprom_init()
216 memcpy(dev->mphy.macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR, ETH_ALEN); in mt7996_eeprom_init()
218 memcpy(dev->mphy.macaddr, (u8 *)dev->mt76.eeprom.data + MT_EE_MAC_ADDR, ETH_ALEN); in mt7996_eeprom_init()
220 mt76_eeprom_override(&dev->mphy); in mt7996_eeprom_init()
228 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_eeprom_get_target_power() local
231 if (chan->band == NL80211_BAND_5GHZ) in mt7996_eeprom_get_target_power()
232 target_power = eeprom[MT_EE_TX0_POWER_5G + in mt7996_eeprom_get_target_power()
233 mt7996_get_channel_group_5g(chan->hw_value)]; in mt7996_eeprom_get_target_power()
234 else if (chan->band == NL80211_BAND_6GHZ) in mt7996_eeprom_get_target_power()
235 target_power = eeprom[MT_EE_TX0_POWER_6G + in mt7996_eeprom_get_target_power()
236 mt7996_get_channel_group_6g(chan->hw_value)]; in mt7996_eeprom_get_target_power()
238 target_power = eeprom[MT_EE_TX0_POWER_2G]; in mt7996_eeprom_get_target_power()
245 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_eeprom_get_power_delta() local
250 val = eeprom[MT_EE_RATE_DELTA_5G]; in mt7996_eeprom_get_power_delta()
252 val = eeprom[MT_EE_RATE_DELTA_6G]; in mt7996_eeprom_get_power_delta()
254 val = eeprom[MT_EE_RATE_DELTA_2G]; in mt7996_eeprom_get_power_delta()
261 return val & MT_EE_RATE_DELTA_SIGN ? delta : -delta; in mt7996_eeprom_get_power_delta()