162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * This file is part of wl18xx
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2011 Texas Instruments Inc.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef __WL18XX_CONF_H__
962306a36Sopenharmony_ci#define __WL18XX_CONF_H__
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define WL18XX_CONF_MAGIC	0x10e100ca
1262306a36Sopenharmony_ci#define WL18XX_CONF_VERSION	(WLCORE_CONF_VERSION | 0x0007)
1362306a36Sopenharmony_ci#define WL18XX_CONF_MASK	0x0000ffff
1462306a36Sopenharmony_ci#define WL18XX_CONF_SIZE	(WLCORE_CONF_SIZE + \
1562306a36Sopenharmony_ci				 sizeof(struct wl18xx_priv_conf))
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#define NUM_OF_CHANNELS_11_ABG 150
1862306a36Sopenharmony_ci#define NUM_OF_CHANNELS_11_P 7
1962306a36Sopenharmony_ci#define SRF_TABLE_LEN 16
2062306a36Sopenharmony_ci#define PIN_MUXING_SIZE 2
2162306a36Sopenharmony_ci#define WL18XX_TRACE_LOSS_GAPS_TX 10
2262306a36Sopenharmony_ci#define WL18XX_TRACE_LOSS_GAPS_RX 18
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cistruct wl18xx_mac_and_phy_params {
2562306a36Sopenharmony_ci	u8 phy_standalone;
2662306a36Sopenharmony_ci	u8 spare0;
2762306a36Sopenharmony_ci	u8 enable_clpc;
2862306a36Sopenharmony_ci	u8 enable_tx_low_pwr_on_siso_rdl;
2962306a36Sopenharmony_ci	u8 auto_detect;
3062306a36Sopenharmony_ci	u8 dedicated_fem;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	u8 low_band_component;
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci	/* Bit 0: One Hot, Bit 1: Control Enable, Bit 2: 1.8V, Bit 3: 3V */
3562306a36Sopenharmony_ci	u8 low_band_component_type;
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci	u8 high_band_component;
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	/* Bit 0: One Hot, Bit 1: Control Enable, Bit 2: 1.8V, Bit 3: 3V */
4062306a36Sopenharmony_ci	u8 high_band_component_type;
4162306a36Sopenharmony_ci	u8 number_of_assembled_ant2_4;
4262306a36Sopenharmony_ci	u8 number_of_assembled_ant5;
4362306a36Sopenharmony_ci	u8 pin_muxing_platform_options[PIN_MUXING_SIZE];
4462306a36Sopenharmony_ci	u8 external_pa_dc2dc;
4562306a36Sopenharmony_ci	u8 tcxo_ldo_voltage;
4662306a36Sopenharmony_ci	u8 xtal_itrim_val;
4762306a36Sopenharmony_ci	u8 srf_state;
4862306a36Sopenharmony_ci	u8 srf1[SRF_TABLE_LEN];
4962306a36Sopenharmony_ci	u8 srf2[SRF_TABLE_LEN];
5062306a36Sopenharmony_ci	u8 srf3[SRF_TABLE_LEN];
5162306a36Sopenharmony_ci	u8 io_configuration;
5262306a36Sopenharmony_ci	u8 sdio_configuration;
5362306a36Sopenharmony_ci	u8 settings;
5462306a36Sopenharmony_ci	u8 rx_profile;
5562306a36Sopenharmony_ci	u8 per_chan_pwr_limit_arr_11abg[NUM_OF_CHANNELS_11_ABG];
5662306a36Sopenharmony_ci	u8 pwr_limit_reference_11_abg;
5762306a36Sopenharmony_ci	u8 per_chan_pwr_limit_arr_11p[NUM_OF_CHANNELS_11_P];
5862306a36Sopenharmony_ci	u8 pwr_limit_reference_11p;
5962306a36Sopenharmony_ci	u8 spare1;
6062306a36Sopenharmony_ci	u8 per_chan_bo_mode_11_abg[13];
6162306a36Sopenharmony_ci	u8 per_chan_bo_mode_11_p[4];
6262306a36Sopenharmony_ci	u8 primary_clock_setting_time;
6362306a36Sopenharmony_ci	u8 clock_valid_on_wake_up;
6462306a36Sopenharmony_ci	u8 secondary_clock_setting_time;
6562306a36Sopenharmony_ci	u8 board_type;
6662306a36Sopenharmony_ci	/* enable point saturation */
6762306a36Sopenharmony_ci	u8 psat;
6862306a36Sopenharmony_ci	/* low/medium/high Tx power in dBm for STA-HP BG */
6962306a36Sopenharmony_ci	s8 low_power_val;
7062306a36Sopenharmony_ci	s8 med_power_val;
7162306a36Sopenharmony_ci	s8 high_power_val;
7262306a36Sopenharmony_ci	s8 per_sub_band_tx_trace_loss[WL18XX_TRACE_LOSS_GAPS_TX];
7362306a36Sopenharmony_ci	s8 per_sub_band_rx_trace_loss[WL18XX_TRACE_LOSS_GAPS_RX];
7462306a36Sopenharmony_ci	u8 tx_rf_margin;
7562306a36Sopenharmony_ci	/* low/medium/high Tx power in dBm for other role */
7662306a36Sopenharmony_ci	s8 low_power_val_2nd;
7762306a36Sopenharmony_ci	s8 med_power_val_2nd;
7862306a36Sopenharmony_ci	s8 high_power_val_2nd;
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci	u8 padding[1];
8162306a36Sopenharmony_ci} __packed;
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_cienum wl18xx_ht_mode {
8462306a36Sopenharmony_ci	/* Default - use MIMO, fallback to SISO20 */
8562306a36Sopenharmony_ci	HT_MODE_DEFAULT = 0,
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci	/* Wide - use SISO40 */
8862306a36Sopenharmony_ci	HT_MODE_WIDE = 1,
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	/* Use SISO20 */
9162306a36Sopenharmony_ci	HT_MODE_SISO20 = 2,
9262306a36Sopenharmony_ci};
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_cistruct wl18xx_ht_settings {
9562306a36Sopenharmony_ci	/* DEFAULT / WIDE / SISO20 */
9662306a36Sopenharmony_ci	u8 mode;
9762306a36Sopenharmony_ci} __packed;
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_cistruct conf_ap_sleep_settings {
10062306a36Sopenharmony_ci	/* Duty Cycle (20-80% of staying Awake) for IDLE AP
10162306a36Sopenharmony_ci	 * (0: disable)
10262306a36Sopenharmony_ci	 */
10362306a36Sopenharmony_ci	u8 idle_duty_cycle;
10462306a36Sopenharmony_ci	/* Duty Cycle (20-80% of staying Awake) for Connected AP
10562306a36Sopenharmony_ci	 * (0: disable)
10662306a36Sopenharmony_ci	 */
10762306a36Sopenharmony_ci	u8 connected_duty_cycle;
10862306a36Sopenharmony_ci	/* Maximum stations that are allowed to be connected to AP
10962306a36Sopenharmony_ci	 *  (255: no limit)
11062306a36Sopenharmony_ci	 */
11162306a36Sopenharmony_ci	u8 max_stations_thresh;
11262306a36Sopenharmony_ci	/* Timeout till enabling the Sleep Mechanism after data stops
11362306a36Sopenharmony_ci	 * [unit: 100 msec]
11462306a36Sopenharmony_ci	 */
11562306a36Sopenharmony_ci	u8 idle_conn_thresh;
11662306a36Sopenharmony_ci} __packed;
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_cistruct wl18xx_priv_conf {
11962306a36Sopenharmony_ci	/* Module params structures */
12062306a36Sopenharmony_ci	struct wl18xx_ht_settings ht;
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	/* this structure is copied wholesale to FW */
12362306a36Sopenharmony_ci	struct wl18xx_mac_and_phy_params phy;
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci	struct conf_ap_sleep_settings ap_sleep;
12662306a36Sopenharmony_ci} __packed;
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_cienum wl18xx_sg_params {
12962306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_0 = 0,
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	/* Configuration Parameters */
13262306a36Sopenharmony_ci	WL18XX_CONF_SG_ANTENNA_CONFIGURATION,
13362306a36Sopenharmony_ci	WL18XX_CONF_SG_ZIGBEE_COEX,
13462306a36Sopenharmony_ci	WL18XX_CONF_SG_TIME_SYNC,
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_4,
13762306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_5,
13862306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_6,
13962306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_7,
14062306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_8,
14162306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_9,
14262306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_10,
14362306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_11,
14462306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_12,
14562306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_13,
14662306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_14,
14762306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_15,
14862306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_16,
14962306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_17,
15062306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_18,
15162306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_19,
15262306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_20,
15362306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_21,
15462306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_22,
15562306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_23,
15662306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_24,
15762306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_25,
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci	/* Active Scan Parameters */
16062306a36Sopenharmony_ci	WL18XX_CONF_SG_AUTO_SCAN_PROBE_REQ,
16162306a36Sopenharmony_ci	WL18XX_CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3,
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_28,
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci	/* Passive Scan Parameters */
16662306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_29,
16762306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_30,
16862306a36Sopenharmony_ci	WL18XX_CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_HV3,
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	/* Passive Scan in Dual Antenna Parameters */
17162306a36Sopenharmony_ci	WL18XX_CONF_SG_CONSECUTIVE_HV3_IN_PASSIVE_SCAN,
17262306a36Sopenharmony_ci	WL18XX_CONF_SG_BEACON_HV3_COLL_TH_IN_PASSIVE_SCAN,
17362306a36Sopenharmony_ci	WL18XX_CONF_SG_TX_RX_PROTECT_BW_IN_PASSIVE_SCAN,
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci	/* General Parameters */
17662306a36Sopenharmony_ci	WL18XX_CONF_SG_STA_FORCE_PS_IN_BT_SCO,
17762306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_36,
17862306a36Sopenharmony_ci	WL18XX_CONF_SG_BEACON_MISS_PERCENT,
17962306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_38,
18062306a36Sopenharmony_ci	WL18XX_CONF_SG_RXT,
18162306a36Sopenharmony_ci	WL18XX_CONF_SG_UNUSED,
18262306a36Sopenharmony_ci	WL18XX_CONF_SG_ADAPTIVE_RXT_TXT,
18362306a36Sopenharmony_ci	WL18XX_CONF_SG_GENERAL_USAGE_BIT_MAP,
18462306a36Sopenharmony_ci	WL18XX_CONF_SG_HV3_MAX_SERVED,
18562306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_44,
18662306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_45,
18762306a36Sopenharmony_ci	WL18XX_CONF_SG_CONSECUTIVE_CTS_THRESHOLD,
18862306a36Sopenharmony_ci	WL18XX_CONF_SG_GEMINI_PARAM_47,
18962306a36Sopenharmony_ci	WL18XX_CONF_SG_STA_CONNECTION_PROTECTION_TIME,
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci	/* AP Parameters */
19262306a36Sopenharmony_ci	WL18XX_CONF_SG_AP_BEACON_MISS_TX,
19362306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_50,
19462306a36Sopenharmony_ci	WL18XX_CONF_SG_AP_BEACON_WINDOW_INTERVAL,
19562306a36Sopenharmony_ci	WL18XX_CONF_SG_AP_CONNECTION_PROTECTION_TIME,
19662306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_53,
19762306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAM_54,
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci	/* CTS Diluting Parameters */
20062306a36Sopenharmony_ci	WL18XX_CONF_SG_CTS_DILUTED_BAD_RX_PACKETS_TH,
20162306a36Sopenharmony_ci	WL18XX_CONF_SG_CTS_CHOP_IN_DUAL_ANT_SCO_MASTER,
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_1,
20462306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_2,
20562306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_3,
20662306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_4,
20762306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_5,
20862306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_6,
20962306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_7,
21062306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_8,
21162306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_9,
21262306a36Sopenharmony_ci	WL18XX_CONF_SG_TEMP_PARAM_10,
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAMS_MAX,
21562306a36Sopenharmony_ci	WL18XX_CONF_SG_PARAMS_ALL = 0xff
21662306a36Sopenharmony_ci};
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci#endif /* __WL18XX_CONF_H__ */
219