ah_eeprom_v4k.c (197948) | ah_eeprom_v4k.c (208711) |
---|---|
1/* 2 * Copyright (c) 2009 Rui Paulo <rpaulo@FreeBSD.org> 3 * Copyright (c) 2008 Sam Leffler, Errno Consulting 4 * Copyright (c) 2008 Atheros Communications, Inc. 5 * 6 * Permission to use, copy, modify, and/or distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 * | 1/* 2 * Copyright (c) 2009 Rui Paulo <rpaulo@FreeBSD.org> 3 * Copyright (c) 2008 Sam Leffler, Errno Consulting 4 * Copyright (c) 2008 Atheros Communications, Inc. 5 * 6 * Permission to use, copy, modify, and/or distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 * |
18 * $FreeBSD: head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c 197948 2009-10-10 22:29:34Z rpaulo $ | 18 * $FreeBSD: head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c 208711 2010-06-01 15:33:10Z rpaulo $ |
19 */ 20#include "opt_ah.h" 21 22#include "ah.h" 23#include "ah_internal.h" 24#include "ah_eeprom_v14.h" 25#include "ah_eeprom_v4k.h" 26 --- 6 unchanged lines hidden (view full) --- 33 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; 34 const MODAL_EEP4K_HEADER *pModal = &ee->ee_base.modalHeader; 35 const BASE_EEP4K_HEADER *pBase = &ee->ee_base.baseEepHeader; 36 uint32_t sum; 37 uint8_t *macaddr; 38 int i; 39 40 switch (param) { | 19 */ 20#include "opt_ah.h" 21 22#include "ah.h" 23#include "ah_internal.h" 24#include "ah_eeprom_v14.h" 25#include "ah_eeprom_v4k.h" 26 --- 6 unchanged lines hidden (view full) --- 33 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; 34 const MODAL_EEP4K_HEADER *pModal = &ee->ee_base.modalHeader; 35 const BASE_EEP4K_HEADER *pBase = &ee->ee_base.baseEepHeader; 36 uint32_t sum; 37 uint8_t *macaddr; 38 int i; 39 40 switch (param) { |
41 case AR_EEP_NFTHRESH_5: 42 *(int16_t *)val = pModal[0].noiseFloorThreshCh[0]; 43 return HAL_OK; | |
44 case AR_EEP_NFTHRESH_2: | 41 case AR_EEP_NFTHRESH_2: |
45 *(int16_t *)val = pModal[1].noiseFloorThreshCh[0]; | 42 *(int16_t *)val = pModal->noiseFloorThreshCh[0]; |
46 return HAL_OK; 47 case AR_EEP_MACADDR: /* Get MAC Address */ 48 sum = 0; 49 macaddr = val; 50 for (i = 0; i < 6; i++) { 51 macaddr[i] = pBase->macAddr[i]; 52 sum += pBase->macAddr[i]; 53 } --- 8 unchanged lines hidden (view full) --- 62 case AR_EEP_REGDMN_1: 63 return pBase->regDmn[1]; 64 case AR_EEP_OPCAP: 65 return pBase->deviceCap; 66 case AR_EEP_OPMODE: 67 return pBase->opCapFlags; 68 case AR_EEP_RFSILENT: 69 return pBase->rfSilent; | 43 return HAL_OK; 44 case AR_EEP_MACADDR: /* Get MAC Address */ 45 sum = 0; 46 macaddr = val; 47 for (i = 0; i < 6; i++) { 48 macaddr[i] = pBase->macAddr[i]; 49 sum += pBase->macAddr[i]; 50 } --- 8 unchanged lines hidden (view full) --- 59 case AR_EEP_REGDMN_1: 60 return pBase->regDmn[1]; 61 case AR_EEP_OPCAP: 62 return pBase->deviceCap; 63 case AR_EEP_OPMODE: 64 return pBase->opCapFlags; 65 case AR_EEP_RFSILENT: 66 return pBase->rfSilent; |
70 case AR_EEP_OB_5: 71 return pModal[CHAN_A_IDX].ob; 72 case AR_EEP_DB_5: 73 return pModal[CHAN_A_IDX].db; | |
74 case AR_EEP_OB_2: | 67 case AR_EEP_OB_2: |
75 return pModal[CHAN_B_IDX].ob; | 68 return pModal->ob; |
76 case AR_EEP_DB_2: | 69 case AR_EEP_DB_2: |
77 return pModal[CHAN_B_IDX].db; | 70 return pModal->db; |
78 case AR_EEP_TXMASK: 79 return pBase->txMask; 80 case AR_EEP_RXMASK: 81 return pBase->rxMask; 82 case AR_EEP_RXGAIN_TYPE: 83 return AR5416_EEP_RXGAIN_ORIG; 84 case AR_EEP_TXGAIN_TYPE: 85 return IS_VERS(>=, AR5416_EEP_MINOR_VER_19) ? 86 pBase->txGainType : AR5416_EEP_TXGAIN_ORIG; | 71 case AR_EEP_TXMASK: 72 return pBase->txMask; 73 case AR_EEP_RXMASK: 74 return pBase->rxMask; 75 case AR_EEP_RXGAIN_TYPE: 76 return AR5416_EEP_RXGAIN_ORIG; 77 case AR_EEP_TXGAIN_TYPE: 78 return IS_VERS(>=, AR5416_EEP_MINOR_VER_19) ? 79 pBase->txGainType : AR5416_EEP_TXGAIN_ORIG; |
87#if 0 | |
88 case AR_EEP_OL_PWRCTRL: 89 HALASSERT(val == AH_NULL); | 80 case AR_EEP_OL_PWRCTRL: 81 HALASSERT(val == AH_NULL); |
90 return pBase->openLoopPwrCntl ? HAL_OK : HAL_EIO; 91#endif | 82 return HAL_EIO; |
92 case AR_EEP_AMODE: 93 HALASSERT(val == AH_NULL); 94 return pBase->opCapFlags & AR5416_OPFLAGS_11A ? 95 HAL_OK : HAL_EIO; 96 case AR_EEP_BMODE: 97 case AR_EEP_GMODE: 98 HALASSERT(val == AH_NULL); 99 return pBase->opCapFlags & AR5416_OPFLAGS_11G ? --- 5 unchanged lines hidden (view full) --- 105 HALASSERT(val == AH_NULL); 106 /* fall thru... */ 107 case AR_EEP_MAXQCU: /* NB: not in opCapFlags */ 108 case AR_EEP_KCENTRIES: /* NB: not in opCapFlags */ 109 return HAL_EIO; 110 case AR_EEP_AES: 111 case AR_EEP_BURST: 112 case AR_EEP_RFKILL: | 83 case AR_EEP_AMODE: 84 HALASSERT(val == AH_NULL); 85 return pBase->opCapFlags & AR5416_OPFLAGS_11A ? 86 HAL_OK : HAL_EIO; 87 case AR_EEP_BMODE: 88 case AR_EEP_GMODE: 89 HALASSERT(val == AH_NULL); 90 return pBase->opCapFlags & AR5416_OPFLAGS_11G ? --- 5 unchanged lines hidden (view full) --- 96 HALASSERT(val == AH_NULL); 97 /* fall thru... */ 98 case AR_EEP_MAXQCU: /* NB: not in opCapFlags */ 99 case AR_EEP_KCENTRIES: /* NB: not in opCapFlags */ 100 return HAL_EIO; 101 case AR_EEP_AES: 102 case AR_EEP_BURST: 103 case AR_EEP_RFKILL: |
113 case AR_EEP_TURBO5DISABLE: | |
114 case AR_EEP_TURBO2DISABLE: 115 HALASSERT(val == AH_NULL); 116 return HAL_OK; 117 case AR_EEP_ANTGAINMAX_2: | 104 case AR_EEP_TURBO2DISABLE: 105 HALASSERT(val == AH_NULL); 106 return HAL_OK; 107 case AR_EEP_ANTGAINMAX_2: |
118 *(int8_t *) val = ee->ee_antennaGainMax[1]; | 108 *(int8_t *) val = ee->ee_antennaGainMax; |
119 return HAL_OK; | 109 return HAL_OK; |
120 case AR_EEP_ANTGAINMAX_5: 121 *(int8_t *) val = ee->ee_antennaGainMax[0]; 122 return HAL_OK; | |
123 default: 124 HALASSERT(0); 125 return HAL_EINVAL; 126 } 127#undef IS_VERS 128#undef CHAN_A_IDX 129#undef CHAN_B_IDX 130} 131 132static HAL_BOOL 133v4kEepromSet(struct ath_hal *ah, int param, int v) 134{ 135 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; 136 137 switch (param) { 138 case AR_EEP_ANTGAINMAX_2: | 110 default: 111 HALASSERT(0); 112 return HAL_EINVAL; 113 } 114#undef IS_VERS 115#undef CHAN_A_IDX 116#undef CHAN_B_IDX 117} 118 119static HAL_BOOL 120v4kEepromSet(struct ath_hal *ah, int param, int v) 121{ 122 HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; 123 124 switch (param) { 125 case AR_EEP_ANTGAINMAX_2: |
139 ee->ee_antennaGainMax[1] = (int8_t) v; | 126 ee->ee_antennaGainMax = (int8_t) v; |
140 return HAL_OK; | 127 return HAL_OK; |
141 case AR_EEP_ANTGAINMAX_5: 142 ee->ee_antennaGainMax[0] = (int8_t) v; 143 return HAL_OK; | |
144 } 145 return HAL_EINVAL; 146} 147 148static HAL_BOOL 149v4kEepromDiag(struct ath_hal *ah, int request, 150 const void *args, uint32_t argsize, void **result, uint32_t *resultsize) 151{ --- 95 unchanged lines hidden (view full) --- 247#define CTL_CHAIN 0 248 249static void 250v4kEepromReadCTLInfo(struct ath_hal *ah, HAL_EEPROM_v4k *ee) 251{ 252 RD_EDGES_POWER *rep = ee->ee_rdEdgesPower; 253 int i, j; 254 | 128 } 129 return HAL_EINVAL; 130} 131 132static HAL_BOOL 133v4kEepromDiag(struct ath_hal *ah, int request, 134 const void *args, uint32_t argsize, void **result, uint32_t *resultsize) 135{ --- 95 unchanged lines hidden (view full) --- 231#define CTL_CHAIN 0 232 233static void 234v4kEepromReadCTLInfo(struct ath_hal *ah, HAL_EEPROM_v4k *ee) 235{ 236 RD_EDGES_POWER *rep = ee->ee_rdEdgesPower; 237 int i, j; 238 |
255 HALASSERT(AR5416_NUM_CTLS <= sizeof(ee->ee_rdEdgesPower)/NUM_EDGES); | 239 HALASSERT(AR5416_4K_NUM_CTLS <= sizeof(ee->ee_rdEdgesPower)/NUM_EDGES); |
256 257 for (i = 0; ee->ee_base.ctlIndex[i] != 0 && i < AR5416_4K_NUM_CTLS; i++) { 258 for (j = 0; j < NUM_EDGES; j ++) { 259 /* XXX Confirm this is the right thing to do when an invalid channel is stored */ 260 if (ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel == AR5416_BCHAN_UNUSED) { 261 rep[j].rdEdge = 0; 262 rep[j].twice_rdEdgePower = 0; 263 rep[j].flag = 0; --- 141 unchanged lines hidden --- | 240 241 for (i = 0; ee->ee_base.ctlIndex[i] != 0 && i < AR5416_4K_NUM_CTLS; i++) { 242 for (j = 0; j < NUM_EDGES; j ++) { 243 /* XXX Confirm this is the right thing to do when an invalid channel is stored */ 244 if (ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel == AR5416_BCHAN_UNUSED) { 245 rep[j].rdEdge = 0; 246 rep[j].twice_rdEdgePower = 0; 247 rep[j].flag = 0; --- 141 unchanged lines hidden --- |