Lines Matching +full:no +full:- +full:eeprom

1 /*-
2 * SPDX-License-Identifier: ISC
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
30 #define IS_VERS(op, v) ((pBase->version & AR5416_EEP_VER_MINOR_MASK) op (v)) in v14EepromGet()
31 HAL_EEPROM_v14 *ee = AH_PRIVATE(ah)->ah_eeprom; in v14EepromGet()
32 const MODAL_EEP_HEADER *pModal = ee->ee_base.modalHeader; in v14EepromGet()
33 const BASE_EEP_HEADER *pBase = &ee->ee_base.baseEepHeader; in v14EepromGet()
49 macaddr[i] = pBase->macAddr[i]; in v14EepromGet()
50 sum += pBase->macAddr[i]; in v14EepromGet()
59 return pBase->regDmn[0]; in v14EepromGet()
61 return pBase->regDmn[1]; in v14EepromGet()
63 return pBase->deviceCap; in v14EepromGet()
65 return pBase->opCapFlags; in v14EepromGet()
67 return pBase->rfSilent; in v14EepromGet()
77 return pBase->txMask; in v14EepromGet()
79 return pBase->rxMask; in v14EepromGet()
82 pBase->rxGainType : AR5416_EEP_RXGAIN_ORIG; in v14EepromGet()
85 pBase->txGainType : AR5416_EEP_TXGAIN_ORIG; in v14EepromGet()
90 return pBase->fastClk5g ? HAL_OK : HAL_EIO; in v14EepromGet()
93 return pBase->openLoopPwrCntl ? HAL_OK : HAL_EIO; in v14EepromGet()
96 *(uint8_t *) val = pBase->dacHiPwrMode_5G; in v14EepromGet()
102 *(uint8_t *) val = pBase->frac_n_5g; in v14EepromGet()
108 return pBase->opCapFlags & AR5416_OPFLAGS_11A ? in v14EepromGet()
113 return pBase->opCapFlags & AR5416_OPFLAGS_11G ? in v14EepromGet()
118 case AR_EEP_WRITEPROTECT: /* NB: no write protect bit */ in v14EepromGet()
132 *(int8_t *) val = ee->ee_antennaGainMax[1]; in v14EepromGet()
135 *(int8_t *) val = ee->ee_antennaGainMax[0]; in v14EepromGet()
139 *(int8_t *) val = pBase->pwr_table_offset; in v14EepromGet()
145 *(uint8_t *) val = pBase->pwdclkind; in v14EepromGet()
162 HAL_EEPROM_v14 *ee = AH_PRIVATE(ah)->ah_eeprom; in v14EepromSet()
166 ee->ee_antennaGainMax[1] = (int8_t) v; in v14EepromSet()
169 ee->ee_antennaGainMax[0] = (int8_t) v; in v14EepromSet()
179 HAL_EEPROM_v14 *ee = AH_PRIVATE(ah)->ah_eeprom; in v14EepromDiag()
190 /* Do structure specific swaps if Eeprom format is non native to host */
199 word = __bswap16(ee->baseEepHeader.length); in eepromSwap()
200 ee->baseEepHeader.length = word; in eepromSwap()
202 word = __bswap16(ee->baseEepHeader.checksum); in eepromSwap()
203 ee->baseEepHeader.checksum = word; in eepromSwap()
205 word = __bswap16(ee->baseEepHeader.version); in eepromSwap()
206 ee->baseEepHeader.version = word; in eepromSwap()
208 word = __bswap16(ee->baseEepHeader.regDmn[0]); in eepromSwap()
209 ee->baseEepHeader.regDmn[0] = word; in eepromSwap()
211 word = __bswap16(ee->baseEepHeader.regDmn[1]); in eepromSwap()
212 ee->baseEepHeader.regDmn[1] = word; in eepromSwap()
214 word = __bswap16(ee->baseEepHeader.rfSilent); in eepromSwap()
215 ee->baseEepHeader.rfSilent = word; in eepromSwap()
217 word = __bswap16(ee->baseEepHeader.blueToothOptions); in eepromSwap()
218 ee->baseEepHeader.blueToothOptions = word; in eepromSwap()
220 word = __bswap16(ee->baseEepHeader.deviceCap); in eepromSwap()
221 ee->baseEepHeader.deviceCap = word; in eepromSwap()
225 pModal = &ee->modalHeader[j]; in eepromSwap()
228 integer = __bswap32(pModal->antCtrlCommon); in eepromSwap()
229 pModal->antCtrlCommon = integer; in eepromSwap()
232 integer = __bswap32(pModal->antCtrlChain[i]); in eepromSwap()
233 pModal->antCtrlChain[i] = integer; in eepromSwap()
236 word = __bswap16(pModal->xpaBiasLvlFreq[i]); in eepromSwap()
237 pModal->xpaBiasLvlFreq[i] = word; in eepromSwap()
240 word = __bswap16(pModal->spurChans[i].spurChan); in eepromSwap()
241 pModal->spurChans[i].spurChan = word; in eepromSwap()
249 HAL_EEPROM_v14 *ee = AH_PRIVATE(ah)->ah_eeprom; in v14EepromGetSpurChan()
252 return ee->ee_base.modalHeader[is2GHz].spurChans[ix].spurChan; in v14EepromGetSpurChan()
258 * Get channel value from binary representation held in eeprom
266 * an fbin and as a frequency - do not convert in fbin2freq()
274 * Copy EEPROM Conformance Testing Limits contents
283 RD_EDGES_POWER *rep = ee->ee_rdEdgesPower; in v14EepromReadCTLInfo()
286 HALASSERT(AR5416_NUM_CTLS <= sizeof(ee->ee_rdEdgesPower)/NUM_EDGES); in v14EepromReadCTLInfo()
288 for (i = 0; ee->ee_base.ctlIndex[i] != 0 && i < AR5416_NUM_CTLS; i++) { in v14EepromReadCTLInfo()
291 if (ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel == AR5416_BCHAN_UNUSED) { in v14EepromReadCTLInfo()
297 ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel, in v14EepromReadCTLInfo()
298 (ee->ee_base.ctlIndex[i] & CTL_MODE_M) != CTL_11A); in v14EepromReadCTLInfo()
299 …rep[j].twice_rdEdgePower = MS(ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].tPowerFlag, CAL_CTL_ED… in v14EepromReadCTLInfo()
300 …rep[j].flag = MS(ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].tPowerFlag, CAL_CTL_EDGES_FLAG) != … in v14EepromReadCTLInfo()
305 ee->ee_numCtls = i; in v14EepromReadCTLInfo()
311 * Reclaim any EEPROM-related storage.
316 HAL_EEPROM_v14 *ee = AH_PRIVATE(ah)->ah_eeprom; in v14EepromDetach()
319 AH_PRIVATE(ah)->ah_eeprom = AH_NULL; in v14EepromDetach()
323 (((_ee)->ee_base.baseEepHeader.version >> 12) & 0xF)
325 (((_ee)->ee_base.baseEepHeader.version) & 0xFFF)
328 * Howl is (hopefully) a special case where the endian-ness of the EEPROM
329 * matches the native endian-ness; and that supplied EEPROMs don't have
336 HAL_EEPROM_v14 *ee = AH_PRIVATE(ah)->ah_eeprom; in ath_hal_v14EepromAttach()
345 * Don't check magic if we're supplied with an EEPROM block, in ath_hal_v14EepromAttach()
349 if (ah->ah_eepromdata == NULL) { in ath_hal_v14EepromAttach()
352 "%s Error reading Eeprom MAGIC\n", __func__); in ath_hal_v14EepromAttach()
355 HALDEBUG(ah, HAL_DEBUG_ATTACH, "%s Eeprom Magic = 0x%x\n", in ath_hal_v14EepromAttach()
369 eep_data = (uint16_t *)&ee->ee_base; in ath_hal_v14EepromAttach()
374 "%s eeprom read error at offset 0x%x\n", in ath_hal_v14EepromAttach()
379 /* Convert to eeprom native eeprom endian format */ in ath_hal_v14EepromAttach()
381 if (ah->ah_eepromdata == NULL && isBigEndian()) { in ath_hal_v14EepromAttach()
387 * At this point, we're in the native eeprom endian format in ath_hal_v14EepromAttach()
388 * Now, determine the eeprom endian by looking at byte 26?? in ath_hal_v14EepromAttach()
390 need_swap = ((ee->ee_base.baseEepHeader.eepMisc & AR5416_EEPMISC_BIG_ENDIAN) != 0) ^ isBigEndian(); in ath_hal_v14EepromAttach()
393 "Byte swap EEPROM contents.\n"); in ath_hal_v14EepromAttach()
394 len = __bswap16(ee->ee_base.baseEepHeader.length); in ath_hal_v14EepromAttach()
396 len = ee->ee_base.baseEepHeader.length; in ath_hal_v14EepromAttach()
400 /* Apply the checksum, done in native eeprom format */ in ath_hal_v14EepromAttach()
401 /* XXX - Need to check to make sure checksum calculation is done in ath_hal_v14EepromAttach()
405 * eeprom format in ath_hal_v14EepromAttach()
410 /* Check CRC - Attach should fail on a bad checksum */ in ath_hal_v14EepromAttach()
413 "Bad EEPROM checksum 0x%x (Len=%u)\n", sum, len); in ath_hal_v14EepromAttach()
418 eepromSwap(&ee->ee_base); /* byte swap multi-byte data */ in ath_hal_v14EepromAttach()
426 "%s Eeprom Version %u.%u\n", __func__, in ath_hal_v14EepromAttach()
432 "Bad EEPROM version 0x%x\n", owl_get_eep_ver(ee)); in ath_hal_v14EepromAttach()
438 AH_PRIVATE(ah)->ah_eeprom = ee; in ath_hal_v14EepromAttach()
439 AH_PRIVATE(ah)->ah_eeversion = ee->ee_base.baseEepHeader.version; in ath_hal_v14EepromAttach()
440 AH_PRIVATE(ah)->ah_eepromDetach = v14EepromDetach; in ath_hal_v14EepromAttach()
441 AH_PRIVATE(ah)->ah_eepromGet = v14EepromGet; in ath_hal_v14EepromAttach()
442 AH_PRIVATE(ah)->ah_eepromSet = v14EepromSet; in ath_hal_v14EepromAttach()
443 AH_PRIVATE(ah)->ah_getSpurChan = v14EepromGetSpurChan; in ath_hal_v14EepromAttach()
444 AH_PRIVATE(ah)->ah_eepromDiag = v14EepromDiag; in ath_hal_v14EepromAttach()