Linux Audio

Check our new training course

Loading...
v6.8
  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
 46struct 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
 88struct 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
101struct ar9170_calibration_target_power_legacy {
102	u8	freq;
103	u8	power[4];
104} __packed;
105
106struct ar9170_calibration_target_power_ht {
107	u8	freq;
108	u8	power[8];
109} __packed;
110
111#define AR5416_NUM_CTLS			24
112
113struct 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
121struct ar9170_calctl_data {
122	struct ar9170_calctl_edges
123		control_edges[AR5416_MAX_CHAINS][AR5416_NUM_BAND_EDGES];
124} __packed;
125
126struct 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
212struct ar9170_led_mode {
213	__le16 led;
214};
215
216#endif /* __CARL9170_SHARED_EEPROM_H */
v6.13.7
  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
 46struct 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
 88struct 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
101struct ar9170_calibration_target_power_legacy {
102	u8	freq;
103	u8	power[4];
104} __packed;
105
106struct ar9170_calibration_target_power_ht {
107	u8	freq;
108	u8	power[8];
109} __packed;
110
111#define AR5416_NUM_CTLS			24
112
113struct 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
121struct ar9170_calctl_data {
122	struct ar9170_calctl_edges
123		control_edges[AR5416_MAX_CHAINS][AR5416_NUM_BAND_EDGES];
124} __packed;
125
126struct 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
212struct ar9170_led_mode {
213	__le16 led;
214};
215
216#endif /* __CARL9170_SHARED_EEPROM_H */