linux/drivers/net/wireless/intel/iwlwifi/fw/api/config.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
   2/*
   3 * Copyright (C) 2012-2014, 2018-2019 Intel Corporation
   4 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
   5 * Copyright (C) 2016-2017 Intel Deutschland GmbH
   6 */
   7#ifndef __iwl_fw_api_config_h__
   8#define __iwl_fw_api_config_h__
   9
  10/*
  11 * struct iwl_dqa_enable_cmd
  12 * @cmd_queue: the TXQ number of the command queue
  13 */
  14struct iwl_dqa_enable_cmd {
  15        __le32 cmd_queue;
  16} __packed; /* DQA_CONTROL_CMD_API_S_VER_1 */
  17
  18/*
  19 * struct iwl_tx_ant_cfg_cmd
  20 * @valid: valid antenna configuration
  21 */
  22struct iwl_tx_ant_cfg_cmd {
  23        __le32 valid;
  24} __packed;
  25
  26/**
  27 * struct iwl_calib_ctrl - Calibration control struct.
  28 * Sent as part of the phy configuration command.
  29 * @flow_trigger: bitmap for which calibrations to perform according to
  30 *              flow triggers, using &enum iwl_calib_cfg
  31 * @event_trigger: bitmap for which calibrations to perform according to
  32 *              event triggers, using &enum iwl_calib_cfg
  33 */
  34struct iwl_calib_ctrl {
  35        __le32 flow_trigger;
  36        __le32 event_trigger;
  37} __packed;
  38
  39/* This enum defines the bitmap of various calibrations to enable in both
  40 * init ucode and runtime ucode through CALIBRATION_CFG_CMD.
  41 */
  42enum iwl_calib_cfg {
  43        IWL_CALIB_CFG_XTAL_IDX                  = BIT(0),
  44        IWL_CALIB_CFG_TEMPERATURE_IDX           = BIT(1),
  45        IWL_CALIB_CFG_VOLTAGE_READ_IDX          = BIT(2),
  46        IWL_CALIB_CFG_PAPD_IDX                  = BIT(3),
  47        IWL_CALIB_CFG_TX_PWR_IDX                = BIT(4),
  48        IWL_CALIB_CFG_DC_IDX                    = BIT(5),
  49        IWL_CALIB_CFG_BB_FILTER_IDX             = BIT(6),
  50        IWL_CALIB_CFG_LO_LEAKAGE_IDX            = BIT(7),
  51        IWL_CALIB_CFG_TX_IQ_IDX                 = BIT(8),
  52        IWL_CALIB_CFG_TX_IQ_SKEW_IDX            = BIT(9),
  53        IWL_CALIB_CFG_RX_IQ_IDX                 = BIT(10),
  54        IWL_CALIB_CFG_RX_IQ_SKEW_IDX            = BIT(11),
  55        IWL_CALIB_CFG_SENSITIVITY_IDX           = BIT(12),
  56        IWL_CALIB_CFG_CHAIN_NOISE_IDX           = BIT(13),
  57        IWL_CALIB_CFG_DISCONNECTED_ANT_IDX      = BIT(14),
  58        IWL_CALIB_CFG_ANT_COUPLING_IDX          = BIT(15),
  59        IWL_CALIB_CFG_DAC_IDX                   = BIT(16),
  60        IWL_CALIB_CFG_ABS_IDX                   = BIT(17),
  61        IWL_CALIB_CFG_AGC_IDX                   = BIT(18),
  62};
  63
  64/**
  65 * struct iwl_phy_specific_cfg - specific PHY filter configuration
  66 *
  67 * Sent as part of the phy configuration command (v3) to configure specific FW
  68 * defined PHY filters that can be applied to each antenna.
  69 *
  70 * @filter_cfg_chain_a: filter config id for LMAC1 chain A
  71 * @filter_cfg_chain_b: filter config id for LMAC1 chain B
  72 * @filter_cfg_chain_c: filter config id for LMAC2 chain A
  73 * @filter_cfg_chain_d: filter config id for LMAC2 chain B
  74 * values: 0 - no filter; 0xffffffff - reserved; otherwise - filter id
  75 */
  76struct iwl_phy_specific_cfg {
  77        __le32 filter_cfg_chain_a;
  78        __le32 filter_cfg_chain_b;
  79        __le32 filter_cfg_chain_c;
  80        __le32 filter_cfg_chain_d;
  81} __packed; /* PHY_SPECIFIC_CONFIGURATION_API_VER_1*/
  82
  83/**
  84 * struct iwl_phy_cfg_cmd - Phy configuration command
  85 *
  86 * @phy_cfg: PHY configuration value, uses &enum iwl_fw_phy_cfg
  87 * @calib_control: calibration control data
  88 */
  89struct iwl_phy_cfg_cmd_v1 {
  90        __le32  phy_cfg;
  91        struct iwl_calib_ctrl calib_control;
  92} __packed;
  93
  94/**
  95 * struct iwl_phy_cfg_cmd_v3 - Phy configuration command (v3)
  96 *
  97 * @phy_cfg: PHY configuration value, uses &enum iwl_fw_phy_cfg
  98 * @calib_control: calibration control data
  99 * @phy_specific_cfg: configure predefined PHY filters
 100 */
 101struct iwl_phy_cfg_cmd_v3 {
 102        __le32  phy_cfg;
 103        struct iwl_calib_ctrl calib_control;
 104        struct iwl_phy_specific_cfg phy_specific_cfg;
 105} __packed; /* PHY_CONFIGURATION_CMD_API_S_VER_3 */
 106
 107/*
 108 * enum iwl_dc2dc_config_id - flag ids
 109 *
 110 * Ids of dc2dc configuration flags
 111 */
 112enum iwl_dc2dc_config_id {
 113        DCDC_LOW_POWER_MODE_MSK_SET  = 0x1, /* not used */
 114        DCDC_FREQ_TUNE_SET = 0x2,
 115}; /* MARKER_ID_API_E_VER_1 */
 116
 117/**
 118 * struct iwl_dc2dc_config_cmd - configure dc2dc values
 119 *
 120 * (DC2DC_CONFIG_CMD = 0x83)
 121 *
 122 * Set/Get & configure dc2dc values.
 123 * The command always returns the current dc2dc values.
 124 *
 125 * @flags: set/get dc2dc
 126 * @enable_low_power_mode: not used.
 127 * @dc2dc_freq_tune0: frequency divider - digital domain
 128 * @dc2dc_freq_tune1: frequency divider - analog domain
 129 */
 130struct iwl_dc2dc_config_cmd {
 131        __le32 flags;
 132        __le32 enable_low_power_mode; /* not used */
 133        __le32 dc2dc_freq_tune0;
 134        __le32 dc2dc_freq_tune1;
 135} __packed; /* DC2DC_CONFIG_CMD_API_S_VER_1 */
 136
 137/**
 138 * struct iwl_dc2dc_config_resp - response for iwl_dc2dc_config_cmd
 139 *
 140 * Current dc2dc values returned by the FW.
 141 *
 142 * @dc2dc_freq_tune0: frequency divider - digital domain
 143 * @dc2dc_freq_tune1: frequency divider - analog domain
 144 */
 145struct iwl_dc2dc_config_resp {
 146        __le32 dc2dc_freq_tune0;
 147        __le32 dc2dc_freq_tune1;
 148} __packed; /* DC2DC_CONFIG_RESP_API_S_VER_1 */
 149
 150#endif /* __iwl_fw_api_config_h__ */
 151