Deleted Added
full compact
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 ---