Lines Matching +full:no +full:- +full:eeprom
1 /*-
2 * SPDX-License-Identifier: ISC
14 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
32 #define IS_VERS(op, v) ((pBase->version & AR5416_EEP_VER_MINOR_MASK) op (v)) in v4kEepromGet()
33 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; in v4kEepromGet()
34 const MODAL_EEP4K_HEADER *pModal = &ee->ee_base.modalHeader; in v4kEepromGet()
35 const BASE_EEP4K_HEADER *pBase = &ee->ee_base.baseEepHeader; in v4kEepromGet()
42 *(int16_t *)val = pModal->noiseFloorThreshCh[0]; in v4kEepromGet()
48 macaddr[i] = pBase->macAddr[i]; in v4kEepromGet()
49 sum += pBase->macAddr[i]; in v4kEepromGet()
58 return pBase->regDmn[0]; in v4kEepromGet()
60 return pBase->regDmn[1]; in v4kEepromGet()
62 return pBase->deviceCap; in v4kEepromGet()
64 return pBase->opCapFlags; in v4kEepromGet()
66 return pBase->rfSilent; in v4kEepromGet()
68 return pModal->ob_0; in v4kEepromGet()
70 return pModal->db1_1; in v4kEepromGet()
72 return pBase->txMask; in v4kEepromGet()
74 return pBase->rxMask; in v4kEepromGet()
78 return pBase->txGainType; in v4kEepromGet()
84 return pBase->opCapFlags & AR5416_OPFLAGS_11A ? in v4kEepromGet()
89 return pBase->opCapFlags & AR5416_OPFLAGS_11G ? in v4kEepromGet()
94 case AR_EEP_WRITEPROTECT: /* NB: no write protect bit */ in v4kEepromGet()
107 *(int8_t *) val = ee->ee_antennaGainMax; in v4kEepromGet()
121 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; in v4kEepromSet()
125 ee->ee_antennaGainMax = (int8_t) v; in v4kEepromSet()
135 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; in v4kEepromDiag()
146 /* Do structure specific swaps if Eeprom format is non native to host */
155 word = __bswap16(ee->baseEepHeader.length); in eepromSwap()
156 ee->baseEepHeader.length = word; in eepromSwap()
158 word = __bswap16(ee->baseEepHeader.checksum); in eepromSwap()
159 ee->baseEepHeader.checksum = word; in eepromSwap()
161 word = __bswap16(ee->baseEepHeader.version); in eepromSwap()
162 ee->baseEepHeader.version = word; in eepromSwap()
164 word = __bswap16(ee->baseEepHeader.regDmn[0]); in eepromSwap()
165 ee->baseEepHeader.regDmn[0] = word; in eepromSwap()
167 word = __bswap16(ee->baseEepHeader.regDmn[1]); in eepromSwap()
168 ee->baseEepHeader.regDmn[1] = word; in eepromSwap()
170 word = __bswap16(ee->baseEepHeader.rfSilent); in eepromSwap()
171 ee->baseEepHeader.rfSilent = word; in eepromSwap()
173 word = __bswap16(ee->baseEepHeader.blueToothOptions); in eepromSwap()
174 ee->baseEepHeader.blueToothOptions = word; in eepromSwap()
176 word = __bswap16(ee->baseEepHeader.deviceCap); in eepromSwap()
177 ee->baseEepHeader.deviceCap = word; in eepromSwap()
180 pModal = &ee->modalHeader; in eepromSwap()
183 integer = __bswap32(pModal->antCtrlCommon); in eepromSwap()
184 pModal->antCtrlCommon = integer; in eepromSwap()
187 integer = __bswap32(pModal->antCtrlChain[i]); in eepromSwap()
188 pModal->antCtrlChain[i] = integer; in eepromSwap()
192 word = __bswap16(pModal->spurChans[i].spurChan); in eepromSwap()
193 pModal->spurChans[i].spurChan = word; in eepromSwap()
200 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; in v4kEepromGetSpurChan()
204 return ee->ee_base.modalHeader.spurChans[ix].spurChan; in v4kEepromGetSpurChan()
210 * Get channel value from binary representation held in eeprom
218 * an fbin and as a frequency - do not convert in fbin2freq()
226 * Copy EEPROM Conformance Testing Limits contents
235 RD_EDGES_POWER *rep = ee->ee_rdEdgesPower; in v4kEepromReadCTLInfo()
238 HALASSERT(AR5416_4K_NUM_CTLS <= sizeof(ee->ee_rdEdgesPower)/NUM_EDGES); in v4kEepromReadCTLInfo()
240 for (i = 0; ee->ee_base.ctlIndex[i] != 0 && i < AR5416_4K_NUM_CTLS; i++) { in v4kEepromReadCTLInfo()
243 if (ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel == AR5416_BCHAN_UNUSED) { in v4kEepromReadCTLInfo()
249 ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel, in v4kEepromReadCTLInfo()
250 (ee->ee_base.ctlIndex[i] & CTL_MODE_M) != CTL_11A); in v4kEepromReadCTLInfo()
251 …rep[j].twice_rdEdgePower = MS(ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].tPowerFlag, CAL_CTL_ED… in v4kEepromReadCTLInfo()
252 …rep[j].flag = MS(ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].tPowerFlag, CAL_CTL_EDGES_FLAG) != … in v4kEepromReadCTLInfo()
257 ee->ee_numCtls = i; in v4kEepromReadCTLInfo()
263 * Reclaim any EEPROM-related storage.
268 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; in v4kEepromDetach()
271 AH_PRIVATE(ah)->ah_eeprom = AH_NULL; in v4kEepromDetach()
275 (((_ee)->ee_base.baseEepHeader.version >> 12) & 0xF)
277 (((_ee)->ee_base.baseEepHeader.version) & 0xFFF)
283 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; in ath_hal_v4kEepromAttach()
291 * Don't check magic if we're supplied with an EEPROM block, in ath_hal_v4kEepromAttach()
295 if (ah->ah_eepromdata == NULL) { in ath_hal_v4kEepromAttach()
298 "%s Error reading Eeprom MAGIC\n", __func__); in ath_hal_v4kEepromAttach()
301 HALDEBUG(ah, HAL_DEBUG_ATTACH, "%s Eeprom Magic = 0x%x\n", in ath_hal_v4kEepromAttach()
315 eep_data = (uint16_t *)&ee->ee_base; in ath_hal_v4kEepromAttach()
320 "%s eeprom read error at offset 0x%x\n", in ath_hal_v4kEepromAttach()
325 /* Convert to eeprom native eeprom endian format */ in ath_hal_v4kEepromAttach()
330 if (ah->ah_eepromdata == NULL && isBigEndian()) { in ath_hal_v4kEepromAttach()
336 * At this point, we're in the native eeprom endian format in ath_hal_v4kEepromAttach()
337 * Now, determine the eeprom endian by looking at byte 26?? in ath_hal_v4kEepromAttach()
339 need_swap = ((ee->ee_base.baseEepHeader.eepMisc & AR5416_EEPMISC_BIG_ENDIAN) != 0) ^ isBigEndian(); in ath_hal_v4kEepromAttach()
342 "Byte swap EEPROM contents.\n"); in ath_hal_v4kEepromAttach()
343 len = __bswap16(ee->ee_base.baseEepHeader.length); in ath_hal_v4kEepromAttach()
345 len = ee->ee_base.baseEepHeader.length; in ath_hal_v4kEepromAttach()
349 /* Apply the checksum, done in native eeprom format */ in ath_hal_v4kEepromAttach()
350 /* XXX - Need to check to make sure checksum calculation is done in ath_hal_v4kEepromAttach()
354 * eeprom format in ath_hal_v4kEepromAttach()
360 /* Check CRC - Attach should fail on a bad checksum */ in ath_hal_v4kEepromAttach()
363 "Bad EEPROM checksum 0x%x (Len=%u)\n", sum, len); in ath_hal_v4kEepromAttach()
368 eepromSwap(&ee->ee_base); /* byte swap multi-byte data */ in ath_hal_v4kEepromAttach()
376 "%s Eeprom Version %u.%u\n", __func__, in ath_hal_v4kEepromAttach()
382 "Bad EEPROM version 0x%x\n", owl_get_eep_ver(ee)); in ath_hal_v4kEepromAttach()
388 AH_PRIVATE(ah)->ah_eeprom = ee; in ath_hal_v4kEepromAttach()
389 AH_PRIVATE(ah)->ah_eeversion = ee->ee_base.baseEepHeader.version; in ath_hal_v4kEepromAttach()
390 AH_PRIVATE(ah)->ah_eepromDetach = v4kEepromDetach; in ath_hal_v4kEepromAttach()
391 AH_PRIVATE(ah)->ah_eepromGet = v4kEepromGet; in ath_hal_v4kEepromAttach()
392 AH_PRIVATE(ah)->ah_eepromSet = v4kEepromSet; in ath_hal_v4kEepromAttach()
393 AH_PRIVATE(ah)->ah_getSpurChan = v4kEepromGetSpurChan; in ath_hal_v4kEepromAttach()
394 AH_PRIVATE(ah)->ah_eepromDiag = v4kEepromDiag; in ath_hal_v4kEepromAttach()