40 for (i = 0; i < 3; i++) {
43 "%s: cannot read EEPROM location %u\n",
48 macaddr[2*i + 0] = eeval >> 8;
49 macaddr[2*i + 1] = eeval & 0xff;
51 if (sum == 0 || sum == 0xffff*3) {
81 const void *args, uint32_t argsize,
void **result, uint32_t *resultsize)
88 *resultsize =
sizeof(*ee);
117 uint16_t protect, eeprom_version, eeval;
125 "%s: cannot read EEPROM magic number\n", __func__);
128 if (eeval != 0x5aa5) {
130 "%s: invalid EEPROM magic number 0x%x\n", __func__, eeval);
136 "%s: cannot read EEPROM protection bits; read locked?\n",
145 "%s: unable to read EEPROM version\n", __func__);
148 if (((eeprom_version>>12) & 0xf) != 1) {
153 "%s: unsupported EEPROM version 0x%x found\n",
154 __func__, eeprom_version);
178 "%s: cannot read regdomain from EEPROM\n", __func__);
193 ee->
ee_xlnaOn = (athvals[4] >> 8) & 0xff;
195 ee->
ee_xpaOff = (athvals[5] >> 8) & 0xff;
207 chan->
pcdac[0] = (athvals[loc] >> 10) & 0x3F;
208 chan->
gainF[0] = (athvals[loc] >> 4) & 0x3F;
209 chan->
pcdac[1] = ((athvals[loc] << 2) & 0x3C)
210 | ((athvals[loc+1] >> 14) & 0x03);
211 chan->
gainF[1] = (athvals[loc+1] >> 8) & 0x3F;
212 chan->
pcdac[2] = (athvals[loc+1] >> 2) & 0x3F;
213 chan->
gainF[2] = ((athvals[loc+1] << 4) & 0x30)
214 | ((athvals[loc+2] >> 12) & 0x0F);
215 chan->
pcdac[3] = (athvals[loc+2] >> 6) & 0x3F;
216 chan->
gainF[3] = athvals[loc+2] & 0x3F;
217 chan->
pcdac[4] = (athvals[loc+3] >> 10) & 0x3F;
218 chan->
gainF[4] = (athvals[loc+3] >> 4) & 0x3F;
219 chan->
pcdac[5] = ((athvals[loc+3] << 2) & 0x3C)
220 | ((athvals[loc+4] >> 14) & 0x03);
221 chan->
gainF[5] = (athvals[loc+4] >> 8) & 0x3F;
222 chan->
pcdac[6] = (athvals[loc+4] >> 2) & 0x3F;
223 chan->
gainF[6] = ((athvals[loc+4] << 4) & 0x30)
224 | ((athvals[loc+5] >> 12) & 0x0F);
225 chan->
pcdac[7] = (athvals[loc+5] >> 6) & 0x3F;
226 chan->
gainF[7] = athvals[loc+5] & 0x3F;
227 chan->
pcdac[8] = (athvals[loc+6] >> 10) & 0x3F;
228 chan->
gainF[8] = (athvals[loc+6] >> 4) & 0x3F;
229 chan->
pcdac[9] = ((athvals[loc+6] << 2) & 0x3C)
230 | ((athvals[loc+7] >> 14) & 0x03);
231 chan->
gainF[9] = (athvals[loc+7] >> 8) & 0x3F;
232 chan->
pcdac[10] = (athvals[loc+7] >> 2) & 0x3F;
233 chan->
gainF[10] = ((athvals[loc+7] << 4) & 0x30)
234 | ((athvals[loc+8] >> 12) & 0x0F);
237 chan->
rate36 = (athvals[loc+8] >> 6) & 0x3F;
238 chan->
rate48 = athvals[loc+8] & 0x3F;
239 chan->
rate54 = (athvals[loc+9] >> 10) & 0x3F;
240 chan->
regdmn[0] = (athvals[loc+9] >> 4) & 0x3F;
241 chan->
regdmn[1] = ((athvals[loc+9] << 2) & 0x3C)
242 | ((athvals[loc+10] >> 14) & 0x03);
243 chan->
regdmn[2] = (athvals[loc+10] >> 8) & 0x3F;
244 chan->
regdmn[3] = (athvals[loc+10] >> 2) & 0x3F;
248 AH_PRIVATE(ah)->ah_eeversion = eeprom_version;
HAL_STATUS ath_hal_v1EepromAttach(struct ath_hal *ah)
static HAL_BOOL v1EepromDiag(struct ath_hal *ah, int request, const void *args, uint32_t argsize, void **result, uint32_t *resultsize)
static uint16_t v1EepromGetSpurChan(struct ath_hal *ah, int ix, HAL_BOOL is2GHz)
static HAL_STATUS v1EepromGet(struct ath_hal *ah, int param, void *val)
static void v1EepromDetach(struct ath_hal *ah)
static HAL_STATUS v1EepromSet(struct ath_hal *ah, int param, int v)
#define AR_TP_SETTINGS_SIZE
#define AR_EEPROM_REG_DOMAIN
#define AR_EEPROM_VERSION
#define AR_EEPROM_ATHEROS_TP_SETTINGS
#define AR_EEPROM_ATHEROS(n)
#define AR_EEPROM_PROTECT
#define AR_EEPROM_PROTOTECT_WP_128_191
#define AR_EEPROM_ATHEROS_MAX
void * ath_hal_malloc(size_t)
#define HALDEBUG(_ah, __m,...)
#define ath_hal_eepromRead(_ah, _off, _data)
void ath_hal_free(void *p)
const char * ath_hal_ether_sprintf(const u_int8_t *mac)
struct tpcMap ee_tpc[AR_CHANNELS_MAX]
uint8_t ee_regDomain[AR_REG_DOMAINS_MAX]
uint8_t pcdac[AR_TP_SCALING_ENTRIES]
uint8_t regdmn[AR_REG_DOMAINS_MAX]
uint8_t gainF[AR_TP_SCALING_ENTRIES]