1258035Sadrian/*-
2258035Sadrian * Copyright (c) 2013 Cedric GROSS <cg@cgross.info>
3258035Sadrian * Copyright (c) 2011 Intel Corporation
4258035Sadrian *
5258035Sadrian * Permission to use, copy, modify, and distribute this software for any
6258035Sadrian * purpose with or without fee is hereby granted, provided that the above
7258035Sadrian * copyright notice and this permission notice appear in all copies.
8258035Sadrian *
9258035Sadrian * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10258035Sadrian * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11258035Sadrian * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12258035Sadrian * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13258035Sadrian * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14258035Sadrian * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15258035Sadrian * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16258035Sadrian *
17258035Sadrian * $FreeBSD: stable/11/sys/dev/iwn/if_iwn_chip_cfg.h 337949 2018-08-17 03:01:01Z kevans $
18258035Sadrian */
19258035Sadrian
20258035Sadrian#ifndef	__IF_IWN_CHIP_CFG_H__
21258035Sadrian#define	__IF_IWN_CHIP_CFG_H__
22258035Sadrian
23258035Sadrian/* ==========================================================================
24258035Sadrian *                                  NIC PARAMETERS
25258035Sadrian *
26258035Sadrian * ==========================================================================
27258035Sadrian */
28258035Sadrian
29258035Sadrian/*
30258035Sadrian * Flags for managing calibration result. See calib_need
31258035Sadrian * in iwn_base_params struct
32258035Sadrian *
33258035Sadrian * These are bitmasks that determine which indexes in the calibcmd
34258035Sadrian * array are pushed up.
35258035Sadrian */
36258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_DC		(1<<0)
37258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_LO		(1<<1)
38258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_TX_IQ		(1<<2)
39258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_TX_IQ_PERIODIC	(1<<3)
40258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_BASE_BAND	(1<<4)
41258035Sadrian/*
42258035Sadrian * These aren't (yet) included in the calibcmd array, but
43258035Sadrian * are used as flags for which calibrations to use.
44258035Sadrian *
45258035Sadrian * XXX I think they should be named differently and
46258035Sadrian * stuffed in a different member in the config struct!
47258035Sadrian */
48258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_TEMP_OFFSET	(1<<5)
49258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_CRYSTAL		(1<<6)
50258035Sadrian#define IWN_FLG_NEED_PHY_CALIB_TEMP_OFFSETv2	(1<<7)
51258035Sadrian
52258035Sadrian/*
53259059Sadrian * Each chip has a different threshold for PLCP errors that should trigger a
54259059Sadrian * retune.
55259059Sadrian */
56259059Sadrian#define	IWN_PLCP_ERR_DEFAULT_THRESHOLD		50
57259059Sadrian#define	IWN_PLCP_ERR_LONG_THRESHOLD		100
58259059Sadrian#define	IWN_PLCP_ERR_EXT_LONG_THRESHOLD		200
59259059Sadrian
60259059Sadrian/*
61258035Sadrian * Define some parameters for managing different NIC.
62258035Sadrian * Refer to linux specific file like iwl-xxxx.c to determine correct value
63258035Sadrian * for NIC.
64258035Sadrian *
65258035Sadrian * @max_ll_items: max number of OTP blocks
66258035Sadrian * @shadow_ram_support: shadow support for OTP memory
67258035Sadrian * @shadow_reg_enable: HW shadhow register bit
68258035Sadrian * @no_idle_support: do not support idle mode
69258035Sadrian * @advanced_bt_coexist : Advanced BT management
70258035Sadrian * @bt_session_2 : NIC need a new struct for configure BT coexistence. Needed
71258035Sadrian *   only if advanced_bt_coexist is true
72258035Sadrian * @bt_sco_disable :
73258035Sadrian * @additional_nic_config: For 6005 series
74258035Sadrian * @iq_invert : ? But need it for N 2000 series
75258035Sadrian * @regulatory_bands : XXX
76258035Sadrian * @enhanced_TX_power : EEPROM Has advanced TX power options. Set 'True'
77258035Sadrian *    if update_enhanced_txpower = iwl_eeprom_enhanced_txpower.
78258035Sadrian *    See iwl-agn-devices.c file to determine that(enhanced_txpower)
79258035Sadrian * @need_temp_offset_calib : Need to compute some temp offset for calibration.
80258035Sadrian * @calib_need : Use IWN_FLG_NEED_PHY_CALIB_* flags to specify which
81258035Sadrian *    calibration data ucode need. See calib_init_cfg in iwl-xxxx.c
82258035Sadrian *    linux kernel file
83258035Sadrian * @support_hostap: Define IEEE80211_C_HOSTAP for ic_caps
84258035Sadrian * @no_multi_vaps: See iwn_vap_create
85258035Sadrian * @additional_gp_drv_bit : Specific bit to defined during nic_config
86258035Sadrian * @bt_mode: BT configuration mode
87258035Sadrian */
88258035Sadrianenum bt_mode_enum {
89258035Sadrian	IWN_BT_NONE,
90258035Sadrian	IWN_BT_SIMPLE,
91258035Sadrian	IWN_BT_ADVANCED
92258035Sadrian};
93258035Sadrian
94258035Sadrianstruct iwn_base_params {
95258035Sadrian	uint32_t	pll_cfg_val;
96258035Sadrian	const uint16_t	max_ll_items;
97258035Sadrian#define IWN_OTP_MAX_LL_ITEMS_1000		(3)	/* OTP blocks for 1000 */
98258035Sadrian#define IWN_OTP_MAX_LL_ITEMS_6x00		(4)	/* OTP blocks for 6x00 */
99258035Sadrian#define IWN_OTP_MAX_LL_ITEMS_6x50		(7)	/* OTP blocks for 6x50 */
100258035Sadrian#define IWN_OTP_MAX_LL_ITEMS_2x00		(4)	/* OTP blocks for 2x00 */
101258035Sadrian	const bool	shadow_ram_support;
102258035Sadrian	const bool	shadow_reg_enable;
103258035Sadrian	const bool	bt_session_2;
104258035Sadrian	const bool	bt_sco_disable;
105258035Sadrian	const bool	additional_nic_config;
106258035Sadrian	const uint32_t	*regulatory_bands;
107258035Sadrian	const bool	enhanced_TX_power;
108258035Sadrian	const uint16_t	calib_need;
109258035Sadrian	const bool	support_hostap;
110258035Sadrian	const bool	no_multi_vaps;
111258035Sadrian	uint8_t	additional_gp_drv_bit;
112258035Sadrian	enum bt_mode_enum	bt_mode;
113259059Sadrian	uint32_t	plcp_err_threshold;
114258035Sadrian};
115258035Sadrian
116258035Sadrianstatic const struct iwn_base_params iwn5000_base_params = {
117258035Sadrian	.pll_cfg_val = IWN_ANA_PLL_INIT,	/* pll_cfg_val; */
118258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,	/* max_ll_items */
119267466Sadrian	.shadow_ram_support = false,	/* shadow_ram_support */
120258035Sadrian	.shadow_reg_enable = false,	/* shadow_reg_enable */
121258035Sadrian	.bt_session_2 = false,	/* bt_session_2 */
122258035Sadrian	.bt_sco_disable = true,	/* bt_sco_disable */
123258035Sadrian	.additional_nic_config = false,	/* additional_nic_config */
124258035Sadrian	.regulatory_bands = iwn5000_regulatory_bands,	/* regulatory_bands */
125258035Sadrian	.enhanced_TX_power = false,	/* enhanced_TX_power */
126258035Sadrian	.calib_need =
127258035Sadrian	    ( IWN_FLG_NEED_PHY_CALIB_LO
128258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ_PERIODIC
129258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
130258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND ),
131258035Sadrian	.support_hostap = false,	/* support_hostap */
132258035Sadrian	.no_multi_vaps = true,	/* no_multi_vaps */
133258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,	/* additional_gp_drv_bit */
134258035Sadrian	.bt_mode = IWN_BT_NONE,	/* bt_mode */
135259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_LONG_THRESHOLD,
136258035Sadrian};
137258035Sadrian
138258035Sadrian/*
139258035Sadrian * 4965 support
140258035Sadrian */
141258035Sadrianstatic const struct iwn_base_params iwn4965_base_params = {
142258035Sadrian	.pll_cfg_val = 0,				/* pll_cfg_val; */
143258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,	/* max_ll_items - ignored for 4965 */
144258035Sadrian	.shadow_ram_support = true,	/* shadow_ram_support */
145258035Sadrian	.shadow_reg_enable = false,	/* shadow_reg_enable */
146258035Sadrian	.bt_session_2 = false,	/* bt_session_2 XXX unknown? */
147258035Sadrian	.bt_sco_disable = true,	/* bt_sco_disable XXX unknown? */
148258035Sadrian	.additional_nic_config = false,	/* additional_nic_config - not for 4965 */
149258035Sadrian	.regulatory_bands = iwn5000_regulatory_bands,	/* regulatory_bands */
150258035Sadrian	.enhanced_TX_power = false,	/* enhanced_TX_power - not for 4965 */
151258035Sadrian	.calib_need =
152258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
153258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
154258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ_PERIODIC
155258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
156258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND ),
157258035Sadrian	.support_hostap = false,	/* support_hostap - XXX should work on fixing! */
158258035Sadrian	.no_multi_vaps = true,	/* no_multi_vaps - XXX should work on fixing!  */
159258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,	/* additional_gp_drv_bit */
160258035Sadrian	.bt_mode = IWN_BT_SIMPLE,	/* bt_mode */
161259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
162258035Sadrian};
163258035Sadrian
164258035Sadrian
165258035Sadrianstatic const struct iwn_base_params iwn2000_base_params = {
166258035Sadrian	.pll_cfg_val = 0,
167258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_2x00,
168258035Sadrian	.shadow_ram_support = true,
169258035Sadrian	.shadow_reg_enable = false,
170258035Sadrian	.bt_session_2 = false,
171258035Sadrian	.bt_sco_disable = true,
172258035Sadrian	.additional_nic_config = false,
173258035Sadrian	.regulatory_bands = iwn2030_regulatory_bands,
174258035Sadrian	.enhanced_TX_power = true,
175258035Sadrian	.calib_need =
176258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
177258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
178258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
179258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND
180258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TEMP_OFFSETv2 ),
181258035Sadrian	.support_hostap = true,
182258035Sadrian	.no_multi_vaps = false,
183258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_REG_BIT_RADIO_IQ_INVERT,
184258208Seadler	.bt_mode = IWN_BT_NONE,
185259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
186258035Sadrian};
187258035Sadrian
188258035Sadrianstatic const struct iwn_base_params iwn2030_base_params = {
189258035Sadrian	.pll_cfg_val = 0,
190258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_2x00,
191258035Sadrian	.shadow_ram_support = true,
192258035Sadrian	.shadow_reg_enable = false,     /* XXX check? */
193258035Sadrian	.bt_session_2 = true,
194258035Sadrian	.bt_sco_disable = true,
195258035Sadrian	.additional_nic_config = false,
196258035Sadrian	.regulatory_bands = iwn2030_regulatory_bands,
197258035Sadrian	.enhanced_TX_power = true,
198258035Sadrian	.calib_need =
199258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
200258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
201258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
202258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND
203258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TEMP_OFFSETv2 ),
204258035Sadrian	.support_hostap = true,
205258035Sadrian	.no_multi_vaps = false,
206258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_REG_BIT_RADIO_IQ_INVERT,
207258035Sadrian	.bt_mode = IWN_BT_ADVANCED,
208259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
209258035Sadrian};
210258035Sadrian
211258035Sadrianstatic const struct iwn_base_params iwn1000_base_params = {
212258035Sadrian	.pll_cfg_val = IWN_ANA_PLL_INIT,
213258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_1000,
214258035Sadrian	.shadow_ram_support = false,
215258035Sadrian	.shadow_reg_enable = false,	/* XXX check? */
216258035Sadrian	.bt_session_2 = false,
217258035Sadrian	.bt_sco_disable = false,
218258035Sadrian	.additional_nic_config = false,
219258035Sadrian	.regulatory_bands = iwn5000_regulatory_bands,
220258035Sadrian	.enhanced_TX_power = false,
221258035Sadrian	.calib_need =
222265803Sadrian	    ( IWN_FLG_NEED_PHY_CALIB_LO
223265803Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ_PERIODIC
224258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
225265803Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND
226265803Sadrian	    ),
227258035Sadrian	.support_hostap = false,
228258035Sadrian	.no_multi_vaps = true,
229258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,
230265803Sadrian	/* XXX 1000 - no BT */
231265803Sadrian	.bt_mode = IWN_BT_SIMPLE,
232259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_EXT_LONG_THRESHOLD,
233258035Sadrian};
234258035Sadrianstatic const struct iwn_base_params iwn_6000_base_params = {
235258035Sadrian	.pll_cfg_val = 0,
236258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,
237258035Sadrian	.shadow_ram_support = true,
238258035Sadrian	.shadow_reg_enable = true,
239258035Sadrian	.bt_session_2 = false,
240258035Sadrian	.bt_sco_disable = false,
241258035Sadrian	.additional_nic_config = false,
242258035Sadrian	.regulatory_bands = iwn6000_regulatory_bands,
243258035Sadrian	.enhanced_TX_power = true,
244258035Sadrian	.calib_need =
245258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
246258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
247258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
248258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND ),
249258035Sadrian	.support_hostap = false,
250258035Sadrian	.no_multi_vaps = true,
251258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,
252258035Sadrian	.bt_mode = IWN_BT_SIMPLE,
253259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
254258035Sadrian};
255258035Sadrianstatic const struct iwn_base_params iwn_6000i_base_params = {
256258035Sadrian	.pll_cfg_val = 0,
257258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,
258258035Sadrian	.shadow_ram_support = true,
259258035Sadrian	.shadow_reg_enable = true,
260258035Sadrian	.bt_session_2 = false,
261258035Sadrian	.bt_sco_disable = true,
262258035Sadrian	.additional_nic_config = false,
263258035Sadrian	.regulatory_bands = iwn6000_regulatory_bands,
264258035Sadrian	.enhanced_TX_power = true,
265258035Sadrian	.calib_need =
266258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
267258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
268258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
269258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND ),
270258035Sadrian	.support_hostap = false,
271258035Sadrian	.no_multi_vaps = true,
272258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,
273258035Sadrian	.bt_mode = IWN_BT_SIMPLE,
274259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
275258035Sadrian};
276258035Sadrianstatic const struct iwn_base_params iwn_6000g2_base_params = {
277258035Sadrian	.pll_cfg_val = 0,
278258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,
279258035Sadrian	.shadow_ram_support = true,
280258035Sadrian	.shadow_reg_enable = true,
281258035Sadrian	.bt_session_2 = false,
282258035Sadrian	.bt_sco_disable = true,
283258035Sadrian	.additional_nic_config = false,
284258035Sadrian	.regulatory_bands = iwn6000_regulatory_bands,
285258035Sadrian	.enhanced_TX_power = true,
286258035Sadrian	.calib_need =
287258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
288258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
289258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
290258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND
291258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TEMP_OFFSET ),
292258035Sadrian	.support_hostap = false,
293258035Sadrian	.no_multi_vaps = true,
294258035Sadrian	.additional_gp_drv_bit = 0,
295258035Sadrian	.bt_mode = IWN_BT_SIMPLE,
296259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
297258035Sadrian};
298258035Sadrian
299258035Sadrianstatic const struct iwn_base_params iwn_6050_base_params = {
300258035Sadrian	.pll_cfg_val = 0,
301258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x50,
302258035Sadrian	.shadow_ram_support = true,
303258035Sadrian	.shadow_reg_enable = true,
304258035Sadrian	.bt_session_2 = false,
305258035Sadrian	.bt_sco_disable = true,
306258035Sadrian	.additional_nic_config = true,
307258035Sadrian	.regulatory_bands = iwn6000_regulatory_bands,
308258035Sadrian	.enhanced_TX_power = true,
309258035Sadrian	.calib_need =
310258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_LO
311258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
312260001Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND ),
313258035Sadrian	.support_hostap = false,
314258035Sadrian	.no_multi_vaps = true,
315258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,
316258035Sadrian	.bt_mode = IWN_BT_SIMPLE,
317259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
318258035Sadrian};
319258035Sadrianstatic const struct iwn_base_params iwn_6150_base_params = {
320258035Sadrian	.pll_cfg_val = 0,
321258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x50,
322258035Sadrian	.shadow_ram_support = true,
323258035Sadrian	.shadow_reg_enable = true,
324258035Sadrian	.bt_session_2 = false,
325258035Sadrian	.bt_sco_disable = true,
326258035Sadrian	.additional_nic_config = true,
327258035Sadrian	.regulatory_bands = iwn6000_regulatory_bands,
328258035Sadrian	.enhanced_TX_power = true,
329258035Sadrian	.calib_need =
330258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_LO
331258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
332258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND),
333258035Sadrian	.support_hostap = false,
334258035Sadrian	.no_multi_vaps = true,
335258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_6050_1X2,
336258035Sadrian	.bt_mode = IWN_BT_SIMPLE,
337259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
338258035Sadrian};
339258035Sadrian
340258035Sadrian/* IWL_DEVICE_6035 & IWL_DEVICE_6030 */
341258035Sadrianstatic const struct iwn_base_params iwn_6000g2b_base_params = {
342258035Sadrian	.pll_cfg_val = 0,
343258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,
344258035Sadrian	.shadow_ram_support = true,
345258035Sadrian	.shadow_reg_enable = true,
346258035Sadrian	.bt_session_2 = false,
347258035Sadrian	.bt_sco_disable = true,
348258035Sadrian	.additional_nic_config = false,
349258035Sadrian	.regulatory_bands = iwn6000_regulatory_bands,
350258035Sadrian	.enhanced_TX_power = true,
351258035Sadrian	.calib_need =
352258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
353258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
354258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
355258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND
356258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TEMP_OFFSET ),
357258035Sadrian	.support_hostap = false,
358258035Sadrian	.no_multi_vaps = true,
359258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,
360258035Sadrian	.bt_mode = IWN_BT_ADVANCED,
361259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
362258035Sadrian};
363259116Sadrian
364259116Sadrian/*
365259116Sadrian * 6235 series NICs.
366259116Sadrian */
367259116Sadrianstatic const struct iwn_base_params iwn_6235_base_params = {
368259116Sadrian	.pll_cfg_val = 0,
369259116Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,
370259116Sadrian	.shadow_ram_support = true,
371259116Sadrian	.shadow_reg_enable = true,
372259116Sadrian	.bt_session_2 = false,
373259116Sadrian	.bt_sco_disable = true,
374259116Sadrian	.additional_nic_config = true,
375259116Sadrian	.regulatory_bands = iwn6000_regulatory_bands,
376259116Sadrian	.enhanced_TX_power = true,
377259116Sadrian	.calib_need =
378259116Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
379259116Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
380259116Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
381259116Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND
382259116Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TEMP_OFFSET ),
383259116Sadrian	.support_hostap = false,
384259116Sadrian	.no_multi_vaps = true,
385337949Skevans	.additional_gp_drv_bit = 0,
386259116Sadrian	.bt_mode = IWN_BT_ADVANCED,
387259116Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_DEFAULT_THRESHOLD,
388259116Sadrian};
389259116Sadrian
390258035Sadrianstatic const struct iwn_base_params iwn_5x50_base_params = {
391258035Sadrian	.pll_cfg_val = IWN_ANA_PLL_INIT,
392258035Sadrian	.max_ll_items = IWN_OTP_MAX_LL_ITEMS_6x00,
393258035Sadrian	.shadow_ram_support = true,
394258035Sadrian	.shadow_reg_enable = false,
395258035Sadrian	.bt_session_2 = false,
396258035Sadrian	.bt_sco_disable = true,
397258035Sadrian	.additional_nic_config = false,
398258035Sadrian	.regulatory_bands = iwn5000_regulatory_bands,
399258035Sadrian	.enhanced_TX_power =false,
400258035Sadrian	.calib_need =
401258035Sadrian	    (IWN_FLG_NEED_PHY_CALIB_DC
402258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_LO
403258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_TX_IQ
404258035Sadrian	    | IWN_FLG_NEED_PHY_CALIB_BASE_BAND ),
405258035Sadrian	.support_hostap = false,
406258035Sadrian	.no_multi_vaps = true,
407258035Sadrian	.additional_gp_drv_bit = IWN_GP_DRIVER_NONE,
408258035Sadrian	.bt_mode = IWN_BT_SIMPLE,
409259059Sadrian	.plcp_err_threshold = IWN_PLCP_ERR_LONG_THRESHOLD,
410258035Sadrian};
411258035Sadrian
412258035Sadrian#endif	/* __IF_IWN_CHIP_CFG_H__ */
413