root/drivers/net/wireless/ath/carl9170/eeprom.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Shared Atheros AR9170 Header
   3  *
   4  * EEPROM layout
   5  *
   6  * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
   7  *
   8  * This program is free software; you can redistribute it and/or modify
   9  * it under the terms of the GNU General Public License as published by
  10  * the Free Software Foundation; either version 2 of the License, or
  11  * (at your option) any later version.
  12  *
  13  * This program is distributed in the hope that it will be useful,
  14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16  * GNU General Public License for more details.
  17  *
  18  * You should have received a copy of the GNU General Public License
  19  * along with this program; see the file COPYING.  If not, see
  20  * http://www.gnu.org/licenses/.
  21  *
  22  * This file incorporates work covered by the following copyright and
  23  * permission notice:
  24  *    Copyright (c) 2007-2008 Atheros Communications, Inc.
  25  *
  26  *    Permission to use, copy, modify, and/or distribute this software for any
  27  *    purpose with or without fee is hereby granted, provided that the above
  28  *    copyright notice and this permission notice appear in all copies.
  29  *
  30  *    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  31  *    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  32  *    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  33  *    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  34  *    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  35  *    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  36  *    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  37  */
  38 #ifndef __CARL9170_SHARED_EEPROM_H
  39 #define __CARL9170_SHARED_EEPROM_H
  40 
  41 #define AR9170_EEPROM_START             0x1600
  42 
  43 #define AR5416_MAX_CHAINS               2
  44 #define AR5416_MODAL_SPURS              5
  45 
  46 struct ar9170_eeprom_modal {
  47         __le32  antCtrlChain[AR5416_MAX_CHAINS];
  48         __le32  antCtrlCommon;
  49         s8      antennaGainCh[AR5416_MAX_CHAINS];
  50         u8      switchSettling;
  51         u8      txRxAttenCh[AR5416_MAX_CHAINS];
  52         u8      rxTxMarginCh[AR5416_MAX_CHAINS];
  53         s8      adcDesiredSize;
  54         s8      pgaDesiredSize;
  55         u8      xlnaGainCh[AR5416_MAX_CHAINS];
  56         u8      txEndToXpaOff;
  57         u8      txEndToRxOn;
  58         u8      txFrameToXpaOn;
  59         u8      thresh62;
  60         s8      noiseFloorThreshCh[AR5416_MAX_CHAINS];
  61         u8      xpdGain;
  62         u8      xpd;
  63         s8      iqCalICh[AR5416_MAX_CHAINS];
  64         s8      iqCalQCh[AR5416_MAX_CHAINS];
  65         u8      pdGainOverlap;
  66         u8      ob;
  67         u8      db;
  68         u8      xpaBiasLvl;
  69         u8      pwrDecreaseFor2Chain;
  70         u8      pwrDecreaseFor3Chain;
  71         u8      txFrameToDataStart;
  72         u8      txFrameToPaOn;
  73         u8      ht40PowerIncForPdadc;
  74         u8      bswAtten[AR5416_MAX_CHAINS];
  75         u8      bswMargin[AR5416_MAX_CHAINS];
  76         u8      swSettleHt40;
  77         u8      reserved[22];
  78         struct spur_channel {
  79                 __le16 spurChan;
  80                 u8      spurRangeLow;
  81                 u8      spurRangeHigh;
  82         } __packed spur_channels[AR5416_MODAL_SPURS];
  83 } __packed;
  84 
  85 #define AR5416_NUM_PD_GAINS             4
  86 #define AR5416_PD_GAIN_ICEPTS           5
  87 
  88 struct ar9170_calibration_data_per_freq {
  89         u8      pwr_pdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
  90         u8      vpd_pdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
  91 } __packed;
  92 
  93 #define AR5416_NUM_5G_CAL_PIERS         8
  94 #define AR5416_NUM_2G_CAL_PIERS         4
  95 
  96 #define AR5416_NUM_5G_TARGET_PWRS       8
  97 #define AR5416_NUM_2G_CCK_TARGET_PWRS   3
  98 #define AR5416_NUM_2G_OFDM_TARGET_PWRS  4
  99 #define AR5416_MAX_NUM_TGT_PWRS         8
 100 
 101 struct ar9170_calibration_target_power_legacy {
 102         u8      freq;
 103         u8      power[4];
 104 } __packed;
 105 
 106 struct ar9170_calibration_target_power_ht {
 107         u8      freq;
 108         u8      power[8];
 109 } __packed;
 110 
 111 #define AR5416_NUM_CTLS                 24
 112 
 113 struct ar9170_calctl_edges {
 114         u8      channel;
 115 #define AR9170_CALCTL_EDGE_FLAGS        0xC0
 116         u8      power_flags;
 117 } __packed;
 118 
 119 #define AR5416_NUM_BAND_EDGES           8
 120 
 121 struct ar9170_calctl_data {
 122         struct ar9170_calctl_edges
 123                 control_edges[AR5416_MAX_CHAINS][AR5416_NUM_BAND_EDGES];
 124 } __packed;
 125 
 126 struct ar9170_eeprom {
 127         __le16  length;
 128         __le16  checksum;
 129         __le16  version;
 130         u8      operating_flags;
 131 #define AR9170_OPFLAG_5GHZ              1
 132 #define AR9170_OPFLAG_2GHZ              2
 133         u8      misc;
 134         __le16  reg_domain[2];
 135         u8      mac_address[6];
 136         u8      rx_mask;
 137         u8      tx_mask;
 138         __le16  rf_silent;
 139         __le16  bluetooth_options;
 140         __le16  device_capabilities;
 141         __le32  build_number;
 142         u8      deviceType;
 143         u8      reserved[33];
 144 
 145         u8      customer_data[64];
 146 
 147         struct ar9170_eeprom_modal
 148                 modal_header[2];
 149 
 150         u8      cal_freq_pier_5G[AR5416_NUM_5G_CAL_PIERS];
 151         u8      cal_freq_pier_2G[AR5416_NUM_2G_CAL_PIERS];
 152 
 153         struct ar9170_calibration_data_per_freq
 154                 cal_pier_data_5G[AR5416_MAX_CHAINS][AR5416_NUM_5G_CAL_PIERS],
 155                 cal_pier_data_2G[AR5416_MAX_CHAINS][AR5416_NUM_2G_CAL_PIERS];
 156 
 157         /* power calibration data */
 158         struct ar9170_calibration_target_power_legacy
 159                 cal_tgt_pwr_5G[AR5416_NUM_5G_TARGET_PWRS];
 160         struct ar9170_calibration_target_power_ht
 161                 cal_tgt_pwr_5G_ht20[AR5416_NUM_5G_TARGET_PWRS],
 162                 cal_tgt_pwr_5G_ht40[AR5416_NUM_5G_TARGET_PWRS];
 163 
 164         struct ar9170_calibration_target_power_legacy
 165                 cal_tgt_pwr_2G_cck[AR5416_NUM_2G_CCK_TARGET_PWRS],
 166                 cal_tgt_pwr_2G_ofdm[AR5416_NUM_2G_OFDM_TARGET_PWRS];
 167         struct ar9170_calibration_target_power_ht
 168                 cal_tgt_pwr_2G_ht20[AR5416_NUM_2G_OFDM_TARGET_PWRS],
 169                 cal_tgt_pwr_2G_ht40[AR5416_NUM_2G_OFDM_TARGET_PWRS];
 170 
 171         /* conformance testing limits */
 172         u8      ctl_index[AR5416_NUM_CTLS];
 173         struct ar9170_calctl_data
 174                 ctl_data[AR5416_NUM_CTLS];
 175 
 176         u8      pad;
 177         __le16  subsystem_id;
 178 } __packed;
 179 
 180 #define AR9170_LED_MODE_POWER_ON                0x0001
 181 #define AR9170_LED_MODE_RESERVED                0x0002
 182 #define AR9170_LED_MODE_DISABLE_STATE           0x0004
 183 #define AR9170_LED_MODE_OFF_IN_PSM              0x0008
 184 
 185 /* AR9170_LED_MODE BIT is set */
 186 #define AR9170_LED_MODE_FREQUENCY_S             4
 187 #define AR9170_LED_MODE_FREQUENCY               0x0030
 188 #define AR9170_LED_MODE_FREQUENCY_1HZ           0x0000
 189 #define AR9170_LED_MODE_FREQUENCY_0_5HZ         0x0010
 190 #define AR9170_LED_MODE_FREQUENCY_0_25HZ        0x0020
 191 #define AR9170_LED_MODE_FREQUENCY_0_125HZ       0x0030
 192 
 193 /* AR9170_LED_MODE BIT is not set */
 194 #define AR9170_LED_MODE_CONN_STATE_S            4
 195 #define AR9170_LED_MODE_CONN_STATE              0x0030
 196 #define AR9170_LED_MODE_CONN_STATE_FORCE_OFF    0x0000
 197 #define AR9170_LED_MODE_CONN_STATE_FORCE_ON     0x0010
 198 /* Idle off / Active on */
 199 #define AR9170_LED_MODE_CONN_STATE_IOFF_AON     0x0020
 200 /* Idle on / Active off */
 201 #define AR9170_LED_MODE_CONN_STATE_ION_AOFF     0x0010
 202 
 203 #define AR9170_LED_MODE_MODE                    0x0040
 204 #define AR9170_LED_MODE_RESERVED2               0x0080
 205 
 206 #define AR9170_LED_MODE_TON_SCAN_S              8
 207 #define AR9170_LED_MODE_TON_SCAN                0x0f00
 208 
 209 #define AR9170_LED_MODE_TOFF_SCAN_S             12
 210 #define AR9170_LED_MODE_TOFF_SCAN               0xf000
 211 
 212 struct ar9170_led_mode {
 213         __le16 led;
 214 };
 215 
 216 #endif /* __CARL9170_SHARED_EEPROM_H */

/* [<][>][^][v][top][bottom][index][help] */