Lines Matching +full:- +full:i
2 * Copyright (c) 2008-2011 Atheros Communications Inc.
24 if (ah->config.analog_shiftreg) in ath9k_hw_analog_shift_regwrite()
33 if (ah->config.analog_shiftreg) in ath9k_hw_analog_shift_rmw()
45 rv = (int16_t) (((target - srcLeft) * targetRight + in ath9k_hw_interpolate()
46 (srcRight - target) * targetLeft) / in ath9k_hw_interpolate()
47 (srcRight - srcLeft)); in ath9k_hw_interpolate()
55 u16 i; in ath9k_hw_get_lower_upper_index() local
61 if (target >= pList[listSize - 1]) { in ath9k_hw_get_lower_upper_index()
62 *indexL = *indexR = (u16) (listSize - 1); in ath9k_hw_get_lower_upper_index()
66 for (i = 0; i < listSize - 1; i++) { in ath9k_hw_get_lower_upper_index()
67 if (pList[i] == target) { in ath9k_hw_get_lower_upper_index()
68 *indexL = *indexR = i; in ath9k_hw_get_lower_upper_index()
71 if (target < pList[i + 1]) { in ath9k_hw_get_lower_upper_index()
72 *indexL = i; in ath9k_hw_get_lower_upper_index()
73 *indexR = (u16) (i + 1); in ath9k_hw_get_lower_upper_index()
83 int i = 0, j, addr; in ath9k_hw_usb_gen_fill_eeprom() local
88 addrdata[i] = AR5416_EEPROM_OFFSET + in ath9k_hw_usb_gen_fill_eeprom()
90 i++; in ath9k_hw_usb_gen_fill_eeprom()
91 if (i == 8) { in ath9k_hw_usb_gen_fill_eeprom()
92 REG_READ_MULTI(ah, addrdata, data, i); in ath9k_hw_usb_gen_fill_eeprom()
94 for (j = 0; j < i; j++) { in ath9k_hw_usb_gen_fill_eeprom()
98 i = 0; in ath9k_hw_usb_gen_fill_eeprom()
102 if (i != 0) { in ath9k_hw_usb_gen_fill_eeprom()
103 REG_READ_MULTI(ah, addrdata, data, i); in ath9k_hw_usb_gen_fill_eeprom()
105 for (j = 0; j < i; j++) { in ath9k_hw_usb_gen_fill_eeprom()
125 return ath9k_hw_nvram_read_array(pdata->eeprom_data, in ath9k_hw_nvram_read_pdata()
126 ARRAY_SIZE(pdata->eeprom_data), in ath9k_hw_nvram_read_pdata()
133 return ath9k_hw_nvram_read_array((u16 *) eeprom_blob->data, in ath9k_hw_nvram_read_firmware()
134 eeprom_blob->size / sizeof(u16), in ath9k_hw_nvram_read_firmware()
141 return ath9k_hw_nvram_read_array(ah->nvmem_blob, in ath9k_hw_nvram_read_nvmem()
142 ah->nvmem_blob_len / sizeof(u16), in ath9k_hw_nvram_read_nvmem()
149 struct ath9k_platform_data *pdata = ah->dev->platform_data; in ath9k_hw_nvram_read()
152 if (ah->nvmem_blob) in ath9k_hw_nvram_read()
154 else if (ah->eeprom_blob) in ath9k_hw_nvram_read()
155 ret = ath9k_hw_nvram_read_firmware(ah->eeprom_blob, off, data); in ath9k_hw_nvram_read()
156 else if (pdata && !pdata->use_eeprom) in ath9k_hw_nvram_read()
159 ret = common->bus_ops->eeprom_read(common, off, data); in ath9k_hw_nvram_read()
172 int i; in ath9k_hw_nvram_swap_data() local
178 return -EIO; in ath9k_hw_nvram_swap_data()
184 "EEPROM needs byte-swapping to correct endianness.\n"); in ath9k_hw_nvram_swap_data()
193 return -EINVAL; in ath9k_hw_nvram_swap_data()
198 if (ah->ah_flags & AH_NO_EEP_SWAP) { in ath9k_hw_nvram_swap_data()
202 eepdata = (u16 *)(&ah->eeprom); in ath9k_hw_nvram_swap_data()
204 for (i = 0; i < size; i++) in ath9k_hw_nvram_swap_data()
205 eepdata[i] = swab16(eepdata[i]); in ath9k_hw_nvram_swap_data()
209 if (ah->eep_ops->get_eepmisc(ah) & AR5416_EEPMISC_BIG_ENDIAN) { in ath9k_hw_nvram_swap_data()
222 u32 i, sum = 0; in ath9k_hw_nvram_validate_checksum() local
223 u16 *eepdata = (u16 *)(&ah->eeprom); in ath9k_hw_nvram_validate_checksum()
226 for (i = 0; i < size; i++) in ath9k_hw_nvram_validate_checksum()
227 sum ^= eepdata[i]; in ath9k_hw_nvram_validate_checksum()
241 if (ah->eep_ops->get_eeprom_ver(ah) != version || in ath9k_hw_nvram_check_version()
242 ah->eep_ops->get_eeprom_rev(ah) < minrev) { in ath9k_hw_nvram_check_version()
244 ah->eep_ops->get_eeprom_ver(ah), in ath9k_hw_nvram_check_version()
245 ah->eep_ops->get_eeprom_rev(ah)); in ath9k_hw_nvram_check_version()
256 u16 i, k; in ath9k_hw_fill_vpd_table() local
260 for (i = 0; i <= (pwrMax - pwrMin) / 2; i++) { in ath9k_hw_fill_vpd_table()
266 if (idxL == numIntercepts - 1) in ath9k_hw_fill_vpd_table()
267 idxL = (u16) (numIntercepts - 2); in ath9k_hw_fill_vpd_table()
271 k = (u16)(((currPwr - pPwrList[idxL]) * pVpdList[idxR] + in ath9k_hw_fill_vpd_table()
272 (pPwrList[idxR] - currPwr) * pVpdList[idxL]) / in ath9k_hw_fill_vpd_table()
273 (pPwrList[idxR] - pPwrList[idxL])); in ath9k_hw_fill_vpd_table()
274 pRetVpdList[i] = (u8) k; in ath9k_hw_fill_vpd_table()
288 int i; in ath9k_hw_get_legacy_target_powers() local
289 int matchIndex = -1, lowIndex = -1; in ath9k_hw_get_legacy_target_powers()
299 for (i = 0; (i < numChannels) && in ath9k_hw_get_legacy_target_powers()
300 (powInfo[i].bChannel != AR5416_BCHAN_UNUSED); i++) { in ath9k_hw_get_legacy_target_powers()
301 if (freq == ath9k_hw_fbin2freq(powInfo[i].bChannel, in ath9k_hw_get_legacy_target_powers()
303 matchIndex = i; in ath9k_hw_get_legacy_target_powers()
305 } else if (freq < ath9k_hw_fbin2freq(powInfo[i].bChannel, in ath9k_hw_get_legacy_target_powers()
306 IS_CHAN_2GHZ(chan)) && i > 0 && in ath9k_hw_get_legacy_target_powers()
307 freq > ath9k_hw_fbin2freq(powInfo[i - 1].bChannel, in ath9k_hw_get_legacy_target_powers()
309 lowIndex = i - 1; in ath9k_hw_get_legacy_target_powers()
313 if ((matchIndex == -1) && (lowIndex == -1)) in ath9k_hw_get_legacy_target_powers()
314 matchIndex = i - 1; in ath9k_hw_get_legacy_target_powers()
317 if (matchIndex != -1) { in ath9k_hw_get_legacy_target_powers()
325 for (i = 0; i < numRates; i++) { in ath9k_hw_get_legacy_target_powers()
326 pNewPower->tPow2x[i] = in ath9k_hw_get_legacy_target_powers()
328 powInfo[lowIndex].tPow2x[i], in ath9k_hw_get_legacy_target_powers()
329 powInfo[lowIndex + 1].tPow2x[i]); in ath9k_hw_get_legacy_target_powers()
343 int i; in ath9k_hw_get_target_powers() local
344 int matchIndex = -1, lowIndex = -1; in ath9k_hw_get_target_powers()
353 for (i = 0; (i < numChannels) && in ath9k_hw_get_target_powers()
354 (powInfo[i].bChannel != AR5416_BCHAN_UNUSED); i++) { in ath9k_hw_get_target_powers()
355 if (freq == ath9k_hw_fbin2freq(powInfo[i].bChannel, in ath9k_hw_get_target_powers()
357 matchIndex = i; in ath9k_hw_get_target_powers()
360 if (freq < ath9k_hw_fbin2freq(powInfo[i].bChannel, in ath9k_hw_get_target_powers()
361 IS_CHAN_2GHZ(chan)) && i > 0 && in ath9k_hw_get_target_powers()
362 freq > ath9k_hw_fbin2freq(powInfo[i - 1].bChannel, in ath9k_hw_get_target_powers()
364 lowIndex = i - 1; in ath9k_hw_get_target_powers()
368 if ((matchIndex == -1) && (lowIndex == -1)) in ath9k_hw_get_target_powers()
369 matchIndex = i - 1; in ath9k_hw_get_target_powers()
372 if (matchIndex != -1) { in ath9k_hw_get_target_powers()
380 for (i = 0; i < numRates; i++) { in ath9k_hw_get_target_powers()
381 pNewPower->tPow2x[i] = (u8)ath9k_hw_interpolate(freq, in ath9k_hw_get_target_powers()
383 powInfo[lowIndex].tPow2x[i], in ath9k_hw_get_target_powers()
384 powInfo[lowIndex + 1].tPow2x[i]); in ath9k_hw_get_target_powers()
393 int i; in ath9k_hw_get_max_edge_power() local
395 for (i = 0; (i < num_band_edges) && in ath9k_hw_get_max_edge_power()
396 (pRdEdgesPower[i].bChannel != AR5416_BCHAN_UNUSED); i++) { in ath9k_hw_get_max_edge_power()
397 if (freq == ath9k_hw_fbin2freq(pRdEdgesPower[i].bChannel, is2GHz)) { in ath9k_hw_get_max_edge_power()
398 twiceMaxEdgePower = CTL_EDGE_TPOWER(pRdEdgesPower[i].ctl); in ath9k_hw_get_max_edge_power()
400 } else if ((i > 0) && in ath9k_hw_get_max_edge_power()
401 (freq < ath9k_hw_fbin2freq(pRdEdgesPower[i].bChannel, in ath9k_hw_get_max_edge_power()
403 if (ath9k_hw_fbin2freq(pRdEdgesPower[i - 1].bChannel, in ath9k_hw_get_max_edge_power()
405 CTL_EDGE_FLAGS(pRdEdgesPower[i - 1].ctl)) { in ath9k_hw_get_max_edge_power()
407 CTL_EDGE_TPOWER(pRdEdgesPower[i - 1].ctl); in ath9k_hw_get_max_edge_power()
425 switch (ar5416_get_ntxchains(ah->txchainmask)) { in ath9k_hw_get_scaled_power()
437 power_limit -= reduction; in ath9k_hw_get_scaled_power()
449 switch (ar5416_get_ntxchains(ah->txchainmask)) { in ath9k_hw_update_regulatory_maxpower()
453 regulatory->max_power_level += POWER_CORRECTION_FOR_TWO_CHAIN; in ath9k_hw_update_regulatory_maxpower()
456 regulatory->max_power_level += POWER_CORRECTION_FOR_THREE_CHAIN; in ath9k_hw_update_regulatory_maxpower()
472 int i, j, k; in ath9k_hw_get_gain_boundaries_pdadcs() local
517 for (i = 0; i < numXpdGains; i++) { in ath9k_hw_get_gain_boundaries_pdadcs()
518 minPwrT4[i] = data_9287[idxL].pwrPdg[i][0]; in ath9k_hw_get_gain_boundaries_pdadcs()
519 maxPwrT4[i] = data_9287[idxL].pwrPdg[i][intercepts - 1]; in ath9k_hw_get_gain_boundaries_pdadcs()
520 ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], in ath9k_hw_get_gain_boundaries_pdadcs()
521 data_9287[idxL].pwrPdg[i], in ath9k_hw_get_gain_boundaries_pdadcs()
522 data_9287[idxL].vpdPdg[i], in ath9k_hw_get_gain_boundaries_pdadcs()
524 vpdTableI[i]); in ath9k_hw_get_gain_boundaries_pdadcs()
527 for (i = 0; i < numXpdGains; i++) { in ath9k_hw_get_gain_boundaries_pdadcs()
528 minPwrT4[i] = data_4k[idxL].pwrPdg[i][0]; in ath9k_hw_get_gain_boundaries_pdadcs()
529 maxPwrT4[i] = data_4k[idxL].pwrPdg[i][intercepts - 1]; in ath9k_hw_get_gain_boundaries_pdadcs()
530 ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], in ath9k_hw_get_gain_boundaries_pdadcs()
531 data_4k[idxL].pwrPdg[i], in ath9k_hw_get_gain_boundaries_pdadcs()
532 data_4k[idxL].vpdPdg[i], in ath9k_hw_get_gain_boundaries_pdadcs()
534 vpdTableI[i]); in ath9k_hw_get_gain_boundaries_pdadcs()
537 for (i = 0; i < numXpdGains; i++) { in ath9k_hw_get_gain_boundaries_pdadcs()
538 minPwrT4[i] = data_def[idxL].pwrPdg[i][0]; in ath9k_hw_get_gain_boundaries_pdadcs()
539 maxPwrT4[i] = data_def[idxL].pwrPdg[i][intercepts - 1]; in ath9k_hw_get_gain_boundaries_pdadcs()
540 ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], in ath9k_hw_get_gain_boundaries_pdadcs()
541 data_def[idxL].pwrPdg[i], in ath9k_hw_get_gain_boundaries_pdadcs()
542 data_def[idxL].vpdPdg[i], in ath9k_hw_get_gain_boundaries_pdadcs()
544 vpdTableI[i]); in ath9k_hw_get_gain_boundaries_pdadcs()
548 for (i = 0; i < numXpdGains; i++) { in ath9k_hw_get_gain_boundaries_pdadcs()
550 pVpdL = data_9287[idxL].vpdPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
551 pPwrL = data_9287[idxL].pwrPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
552 pVpdR = data_9287[idxR].vpdPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
553 pPwrR = data_9287[idxR].pwrPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
555 pVpdL = data_4k[idxL].vpdPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
556 pPwrL = data_4k[idxL].pwrPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
557 pVpdR = data_4k[idxR].vpdPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
558 pPwrR = data_4k[idxR].pwrPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
560 pVpdL = data_def[idxL].vpdPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
561 pPwrL = data_def[idxL].pwrPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
562 pVpdR = data_def[idxR].vpdPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
563 pPwrR = data_def[idxR].pwrPdg[i]; in ath9k_hw_get_gain_boundaries_pdadcs()
566 minPwrT4[i] = max(pPwrL[0], pPwrR[0]); in ath9k_hw_get_gain_boundaries_pdadcs()
568 maxPwrT4[i] = in ath9k_hw_get_gain_boundaries_pdadcs()
569 min(pPwrL[intercepts - 1], in ath9k_hw_get_gain_boundaries_pdadcs()
570 pPwrR[intercepts - 1]); in ath9k_hw_get_gain_boundaries_pdadcs()
573 ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], in ath9k_hw_get_gain_boundaries_pdadcs()
576 vpdTableL[i]); in ath9k_hw_get_gain_boundaries_pdadcs()
577 ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], in ath9k_hw_get_gain_boundaries_pdadcs()
580 vpdTableR[i]); in ath9k_hw_get_gain_boundaries_pdadcs()
582 for (j = 0; j <= (maxPwrT4[i] - minPwrT4[i]) / 2; j++) { in ath9k_hw_get_gain_boundaries_pdadcs()
583 vpdTableI[i][j] = in ath9k_hw_get_gain_boundaries_pdadcs()
590 vpdTableL[i][j], vpdTableR[i][j])); in ath9k_hw_get_gain_boundaries_pdadcs()
597 for (i = 0; i < numXpdGains; i++) { in ath9k_hw_get_gain_boundaries_pdadcs()
598 if (i == (numXpdGains - 1)) in ath9k_hw_get_gain_boundaries_pdadcs()
599 pPdGainBoundaries[i] = in ath9k_hw_get_gain_boundaries_pdadcs()
600 (u16)(maxPwrT4[i] / 2); in ath9k_hw_get_gain_boundaries_pdadcs()
602 pPdGainBoundaries[i] = in ath9k_hw_get_gain_boundaries_pdadcs()
603 (u16)((maxPwrT4[i] + minPwrT4[i + 1]) / 4); in ath9k_hw_get_gain_boundaries_pdadcs()
605 pPdGainBoundaries[i] = in ath9k_hw_get_gain_boundaries_pdadcs()
606 min((u16)MAX_RATE_POWER, pPdGainBoundaries[i]); in ath9k_hw_get_gain_boundaries_pdadcs()
610 if (i == 0) { in ath9k_hw_get_gain_boundaries_pdadcs()
612 ss = (int16_t)(0 - (minPwrT4[i] / 2)); in ath9k_hw_get_gain_boundaries_pdadcs()
616 ss = (int16_t)((pPdGainBoundaries[i - 1] - in ath9k_hw_get_gain_boundaries_pdadcs()
617 (minPwrT4[i] / 2)) - in ath9k_hw_get_gain_boundaries_pdadcs()
620 vpdStep = (int16_t)(vpdTableI[i][1] - vpdTableI[i][0]); in ath9k_hw_get_gain_boundaries_pdadcs()
623 while ((ss < 0) && (k < (AR5416_NUM_PDADC_VALUES - 1))) { in ath9k_hw_get_gain_boundaries_pdadcs()
624 tmpVal = (int16_t)(vpdTableI[i][0] + ss * vpdStep); in ath9k_hw_get_gain_boundaries_pdadcs()
629 sizeCurrVpdTable = (u8) ((maxPwrT4[i] - minPwrT4[i]) / 2 + 1); in ath9k_hw_get_gain_boundaries_pdadcs()
630 tgtIndex = (u8)(pPdGainBoundaries[i] + tPdGainOverlap - in ath9k_hw_get_gain_boundaries_pdadcs()
631 (minPwrT4[i] / 2)); in ath9k_hw_get_gain_boundaries_pdadcs()
635 while ((ss < maxIndex) && (k < (AR5416_NUM_PDADC_VALUES - 1))) { in ath9k_hw_get_gain_boundaries_pdadcs()
636 pPDADCValues[k++] = vpdTableI[i][ss++]; in ath9k_hw_get_gain_boundaries_pdadcs()
639 vpdStep = (int16_t)(vpdTableI[i][sizeCurrVpdTable - 1] - in ath9k_hw_get_gain_boundaries_pdadcs()
640 vpdTableI[i][sizeCurrVpdTable - 2]); in ath9k_hw_get_gain_boundaries_pdadcs()
645 (k < (AR5416_NUM_PDADC_VALUES - 1))) { in ath9k_hw_get_gain_boundaries_pdadcs()
646 tmpVal = (int16_t)((vpdTableI[i][sizeCurrVpdTable - 1] + in ath9k_hw_get_gain_boundaries_pdadcs()
647 (ss - maxIndex + 1) * vpdStep)); in ath9k_hw_get_gain_boundaries_pdadcs()
658 pdgain_boundary_default = pPdGainBoundaries[i - 1]; in ath9k_hw_get_gain_boundaries_pdadcs()
660 while (i < AR5416_PD_GAINS_IN_MASK) { in ath9k_hw_get_gain_boundaries_pdadcs()
661 pPdGainBoundaries[i] = pdgain_boundary_default; in ath9k_hw_get_gain_boundaries_pdadcs()
662 i++; in ath9k_hw_get_gain_boundaries_pdadcs()
666 pPDADCValues[k] = pPDADCValues[k - 1]; in ath9k_hw_get_gain_boundaries_pdadcs()
674 ah->eep_ops = &eep_ar9300_ops; in ath9k_hw_eeprom_init()
676 ah->eep_ops = &eep_ar9287_ops; in ath9k_hw_eeprom_init()
678 ah->eep_ops = &eep_4k_ops; in ath9k_hw_eeprom_init()
680 ah->eep_ops = &eep_def_ops; in ath9k_hw_eeprom_init()
683 if (!ah->eep_ops->fill_eeprom(ah)) in ath9k_hw_eeprom_init()
684 return -EIO; in ath9k_hw_eeprom_init()
686 return ah->eep_ops->check_eeprom(ah); in ath9k_hw_eeprom_init()