xref: /freebsd/sys/contrib/dev/iwlwifi/fw/api/config.h (revision a4128aad8503277614f2d214011ef60a19447b83)
1bfcc09ddSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2bfcc09ddSBjoern A. Zeeb /*
3*a4128aadSBjoern A. Zeeb  * Copyright (C) 2012-2014, 2018-2019, 2023-2024 Intel Corporation
4bfcc09ddSBjoern A. Zeeb  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
5bfcc09ddSBjoern A. Zeeb  * Copyright (C) 2016-2017 Intel Deutschland GmbH
6bfcc09ddSBjoern A. Zeeb  */
7bfcc09ddSBjoern A. Zeeb #ifndef __iwl_fw_api_config_h__
8bfcc09ddSBjoern A. Zeeb #define __iwl_fw_api_config_h__
9bfcc09ddSBjoern A. Zeeb 
10bfcc09ddSBjoern A. Zeeb /*
11bfcc09ddSBjoern A. Zeeb  * struct iwl_dqa_enable_cmd
12bfcc09ddSBjoern A. Zeeb  * @cmd_queue: the TXQ number of the command queue
13bfcc09ddSBjoern A. Zeeb  */
14bfcc09ddSBjoern A. Zeeb struct iwl_dqa_enable_cmd {
15bfcc09ddSBjoern A. Zeeb 	__le32 cmd_queue;
16bfcc09ddSBjoern A. Zeeb } __packed; /* DQA_CONTROL_CMD_API_S_VER_1 */
17bfcc09ddSBjoern A. Zeeb 
18bfcc09ddSBjoern A. Zeeb /*
19bfcc09ddSBjoern A. Zeeb  * struct iwl_tx_ant_cfg_cmd
20bfcc09ddSBjoern A. Zeeb  * @valid: valid antenna configuration
21bfcc09ddSBjoern A. Zeeb  */
22bfcc09ddSBjoern A. Zeeb struct iwl_tx_ant_cfg_cmd {
23bfcc09ddSBjoern A. Zeeb 	__le32 valid;
24bfcc09ddSBjoern A. Zeeb } __packed;
25bfcc09ddSBjoern A. Zeeb 
26bfcc09ddSBjoern A. Zeeb /**
27bfcc09ddSBjoern A. Zeeb  * struct iwl_calib_ctrl - Calibration control struct.
28bfcc09ddSBjoern A. Zeeb  * Sent as part of the phy configuration command.
29bfcc09ddSBjoern A. Zeeb  * @flow_trigger: bitmap for which calibrations to perform according to
30bfcc09ddSBjoern A. Zeeb  *		flow triggers, using &enum iwl_calib_cfg
31bfcc09ddSBjoern A. Zeeb  * @event_trigger: bitmap for which calibrations to perform according to
32bfcc09ddSBjoern A. Zeeb  *		event triggers, using &enum iwl_calib_cfg
33bfcc09ddSBjoern A. Zeeb  */
34bfcc09ddSBjoern A. Zeeb struct iwl_calib_ctrl {
35bfcc09ddSBjoern A. Zeeb 	__le32 flow_trigger;
36bfcc09ddSBjoern A. Zeeb 	__le32 event_trigger;
37bfcc09ddSBjoern A. Zeeb } __packed;
38bfcc09ddSBjoern A. Zeeb 
39bfcc09ddSBjoern A. Zeeb /* This enum defines the bitmap of various calibrations to enable in both
40bfcc09ddSBjoern A. Zeeb  * init ucode and runtime ucode through CALIBRATION_CFG_CMD.
41bfcc09ddSBjoern A. Zeeb  */
42bfcc09ddSBjoern A. Zeeb enum iwl_calib_cfg {
43bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_XTAL_IDX			= BIT(0),
44bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_TEMPERATURE_IDX		= BIT(1),
45bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_VOLTAGE_READ_IDX		= BIT(2),
46bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_PAPD_IDX			= BIT(3),
47bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_TX_PWR_IDX		= BIT(4),
48bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_DC_IDX			= BIT(5),
49bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_BB_FILTER_IDX		= BIT(6),
50bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_LO_LEAKAGE_IDX		= BIT(7),
51bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_TX_IQ_IDX			= BIT(8),
52bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_TX_IQ_SKEW_IDX		= BIT(9),
53bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_RX_IQ_IDX			= BIT(10),
54bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_RX_IQ_SKEW_IDX		= BIT(11),
55bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_SENSITIVITY_IDX		= BIT(12),
56bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_CHAIN_NOISE_IDX		= BIT(13),
57bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_DISCONNECTED_ANT_IDX	= BIT(14),
58bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_ANT_COUPLING_IDX		= BIT(15),
59bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_DAC_IDX			= BIT(16),
60bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_ABS_IDX			= BIT(17),
61bfcc09ddSBjoern A. Zeeb 	IWL_CALIB_CFG_AGC_IDX			= BIT(18),
62bfcc09ddSBjoern A. Zeeb };
63bfcc09ddSBjoern A. Zeeb 
64bfcc09ddSBjoern A. Zeeb /**
65bfcc09ddSBjoern A. Zeeb  * struct iwl_phy_specific_cfg - specific PHY filter configuration
66bfcc09ddSBjoern A. Zeeb  *
67bfcc09ddSBjoern A. Zeeb  * Sent as part of the phy configuration command (v3) to configure specific FW
68bfcc09ddSBjoern A. Zeeb  * defined PHY filters that can be applied to each antenna.
69bfcc09ddSBjoern A. Zeeb  *
709af1bba4SBjoern A. Zeeb  * @filter_cfg_chains: filter config id for LMAC1 chain A, LMAC1 chain B,
719af1bba4SBjoern A. Zeeb  *	LMAC2 chain A, LMAC2 chain B (in that order)
729af1bba4SBjoern A. Zeeb  *	values: 0: no filter; 0xffffffff: reserved; otherwise: filter id
73bfcc09ddSBjoern A. Zeeb  */
74bfcc09ddSBjoern A. Zeeb struct iwl_phy_specific_cfg {
759af1bba4SBjoern A. Zeeb 	__le32 filter_cfg_chains[4];
76bfcc09ddSBjoern A. Zeeb } __packed; /* PHY_SPECIFIC_CONFIGURATION_API_VER_1*/
77bfcc09ddSBjoern A. Zeeb 
78bfcc09ddSBjoern A. Zeeb /**
79*a4128aadSBjoern A. Zeeb  * struct iwl_phy_cfg_cmd_v1 - Phy configuration command
80bfcc09ddSBjoern A. Zeeb  *
81bfcc09ddSBjoern A. Zeeb  * @phy_cfg: PHY configuration value, uses &enum iwl_fw_phy_cfg
82bfcc09ddSBjoern A. Zeeb  * @calib_control: calibration control data
83bfcc09ddSBjoern A. Zeeb  */
84bfcc09ddSBjoern A. Zeeb struct iwl_phy_cfg_cmd_v1 {
85bfcc09ddSBjoern A. Zeeb 	__le32	phy_cfg;
86bfcc09ddSBjoern A. Zeeb 	struct iwl_calib_ctrl calib_control;
87bfcc09ddSBjoern A. Zeeb } __packed;
88bfcc09ddSBjoern A. Zeeb 
89bfcc09ddSBjoern A. Zeeb /**
90bfcc09ddSBjoern A. Zeeb  * struct iwl_phy_cfg_cmd_v3 - Phy configuration command (v3)
91bfcc09ddSBjoern A. Zeeb  *
92bfcc09ddSBjoern A. Zeeb  * @phy_cfg: PHY configuration value, uses &enum iwl_fw_phy_cfg
93bfcc09ddSBjoern A. Zeeb  * @calib_control: calibration control data
94bfcc09ddSBjoern A. Zeeb  * @phy_specific_cfg: configure predefined PHY filters
95bfcc09ddSBjoern A. Zeeb  */
96bfcc09ddSBjoern A. Zeeb struct iwl_phy_cfg_cmd_v3 {
97bfcc09ddSBjoern A. Zeeb 	__le32	phy_cfg;
98bfcc09ddSBjoern A. Zeeb 	struct iwl_calib_ctrl calib_control;
99bfcc09ddSBjoern A. Zeeb 	struct iwl_phy_specific_cfg phy_specific_cfg;
100bfcc09ddSBjoern A. Zeeb } __packed; /* PHY_CONFIGURATION_CMD_API_S_VER_3 */
101bfcc09ddSBjoern A. Zeeb 
102bfcc09ddSBjoern A. Zeeb /*
103bfcc09ddSBjoern A. Zeeb  * enum iwl_dc2dc_config_id - flag ids
104bfcc09ddSBjoern A. Zeeb  *
105bfcc09ddSBjoern A. Zeeb  * Ids of dc2dc configuration flags
106bfcc09ddSBjoern A. Zeeb  */
107bfcc09ddSBjoern A. Zeeb enum iwl_dc2dc_config_id {
108bfcc09ddSBjoern A. Zeeb 	DCDC_LOW_POWER_MODE_MSK_SET  = 0x1, /* not used */
109bfcc09ddSBjoern A. Zeeb 	DCDC_FREQ_TUNE_SET = 0x2,
110bfcc09ddSBjoern A. Zeeb }; /* MARKER_ID_API_E_VER_1 */
111bfcc09ddSBjoern A. Zeeb 
112bfcc09ddSBjoern A. Zeeb #endif /* __iwl_fw_api_config_h__ */
113