2 * Shared Atheros AR9170 Header
6 * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
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.
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.
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/.
22 * This file incorporates work covered by the following copyright and
24 * Copyright (c) 2007-2008 Atheros Communications, Inc.
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.
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.
38 #ifndef __CARL9170_SHARED_EEPROM_H
39 #define __CARL9170_SHARED_EEPROM_H
41 #define AR9170_EEPROM_START 0x1600
43 #define AR5416_MAX_CHAINS 2
44 #define AR5416_MODAL_SPURS 5
46 struct ar9170_eeprom_modal
{
47 __le32 antCtrlChain
[AR5416_MAX_CHAINS
];
49 s8 antennaGainCh
[AR5416_MAX_CHAINS
];
51 u8 txRxAttenCh
[AR5416_MAX_CHAINS
];
52 u8 rxTxMarginCh
[AR5416_MAX_CHAINS
];
55 u8 xlnaGainCh
[AR5416_MAX_CHAINS
];
60 s8 noiseFloorThreshCh
[AR5416_MAX_CHAINS
];
63 s8 iqCalICh
[AR5416_MAX_CHAINS
];
64 s8 iqCalQCh
[AR5416_MAX_CHAINS
];
69 u8 pwrDecreaseFor2Chain
;
70 u8 pwrDecreaseFor3Chain
;
71 u8 txFrameToDataStart
;
73 u8 ht40PowerIncForPdadc
;
74 u8 bswAtten
[AR5416_MAX_CHAINS
];
75 u8 bswMargin
[AR5416_MAX_CHAINS
];
82 } __packed spur_channels
[AR5416_MODAL_SPURS
];
85 #define AR5416_NUM_PD_GAINS 4
86 #define AR5416_PD_GAIN_ICEPTS 5
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
];
93 #define AR5416_NUM_5G_CAL_PIERS 8
94 #define AR5416_NUM_2G_CAL_PIERS 4
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
101 struct ar9170_calibration_target_power_legacy
{
106 struct ar9170_calibration_target_power_ht
{
111 #define AR5416_NUM_CTLS 24
113 struct ar9170_calctl_edges
{
115 #define AR9170_CALCTL_EDGE_FLAGS 0xC0
119 #define AR5416_NUM_BAND_EDGES 8
121 struct ar9170_calctl_data
{
122 struct ar9170_calctl_edges
123 control_edges
[AR5416_MAX_CHAINS
][AR5416_NUM_BAND_EDGES
];
126 struct ar9170_eeprom
{
131 #define AR9170_OPFLAG_5GHZ 1
132 #define AR9170_OPFLAG_2GHZ 2
134 __le16 reg_domain
[2];
139 __le16 bluetooth_options
;
140 __le16 device_capabilities
;
145 u8 customer_data
[64];
147 struct ar9170_eeprom_modal
150 u8 cal_freq_pier_5G
[AR5416_NUM_5G_CAL_PIERS
];
151 u8 cal_freq_pier_2G
[AR5416_NUM_2G_CAL_PIERS
];
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
];
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
];
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
];
171 /* conformance testing limits */
172 u8 ctl_index
[AR5416_NUM_CTLS
];
173 struct ar9170_calctl_data
174 ctl_data
[AR5416_NUM_CTLS
];
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
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
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
203 #define AR9170_LED_MODE_MODE 0x0040
204 #define AR9170_LED_MODE_RESERVED2 0x0080
206 #define AR9170_LED_MODE_TON_SCAN_S 8
207 #define AR9170_LED_MODE_TON_SCAN 0x0f00
209 #define AR9170_LED_MODE_TOFF_SCAN_S 12
210 #define AR9170_LED_MODE_TOFF_SCAN 0xf000
212 struct ar9170_led_mode
{
216 #endif /* __CARL9170_SHARED_EEPROM_H */