diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-1000.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 50 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-csr.h | 10 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 16 |
7 files changed, 94 insertions, 15 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c index 5f7c52053c18..cf3fbc6b98ef 100644 --- a/drivers/net/wireless/iwlwifi/iwl-1000.c +++ b/drivers/net/wireless/iwlwifi/iwl-1000.c | |||
@@ -73,6 +73,18 @@ static void iwl1000_set_ct_threshold(struct iwl_priv *priv) | |||
73 | priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD; | 73 | priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD; |
74 | } | 74 | } |
75 | 75 | ||
76 | /* NIC configuration for 1000 series */ | ||
77 | static void iwl1000_nic_config(struct iwl_priv *priv) | ||
78 | { | ||
79 | iwl5000_nic_config(priv); | ||
80 | |||
81 | /* Setting digital SVR for 1000 card to 1.32V */ | ||
82 | /* locking is acquired in iwl_set_bits_mask_prph() function */ | ||
83 | iwl_set_bits_mask_prph(priv, APMG_DIGITAL_SVR_REG, | ||
84 | APMG_SVR_DIGITAL_VOLTAGE_1_32, | ||
85 | ~APMG_SVR_VOLTAGE_CONFIG_BIT_MSK); | ||
86 | } | ||
87 | |||
76 | static struct iwl_lib_ops iwl1000_lib = { | 88 | static struct iwl_lib_ops iwl1000_lib = { |
77 | .set_hw_params = iwl5000_hw_set_hw_params, | 89 | .set_hw_params = iwl5000_hw_set_hw_params, |
78 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, | 90 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, |
@@ -95,7 +107,7 @@ static struct iwl_lib_ops iwl1000_lib = { | |||
95 | .init = iwl5000_apm_init, | 107 | .init = iwl5000_apm_init, |
96 | .reset = iwl5000_apm_reset, | 108 | .reset = iwl5000_apm_reset, |
97 | .stop = iwl5000_apm_stop, | 109 | .stop = iwl5000_apm_stop, |
98 | .config = iwl5000_nic_config, | 110 | .config = iwl1000_nic_config, |
99 | .set_pwr_src = iwl_set_pwr_src, | 111 | .set_pwr_src = iwl_set_pwr_src, |
100 | }, | 112 | }, |
101 | .eeprom_ops = { | 113 | .eeprom_ops = { |
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index ddd64fef3039..87957c052839 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c | |||
@@ -198,6 +198,7 @@ out: | |||
198 | } | 198 | } |
199 | 199 | ||
200 | 200 | ||
201 | /* NIC configuration for 5000 series and up */ | ||
201 | void iwl5000_nic_config(struct iwl_priv *priv) | 202 | void iwl5000_nic_config(struct iwl_priv *priv) |
202 | { | 203 | { |
203 | unsigned long flags; | 204 | unsigned long flags; |
@@ -239,18 +240,11 @@ void iwl5000_nic_config(struct iwl_priv *priv) | |||
239 | APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS, | 240 | APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS, |
240 | ~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS); | 241 | ~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS); |
241 | 242 | ||
242 | if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_1000) { | ||
243 | /* Setting digital SVR for 1000 card to 1.32V */ | ||
244 | iwl_set_bits_mask_prph(priv, APMG_DIGITAL_SVR_REG, | ||
245 | APMG_SVR_DIGITAL_VOLTAGE_1_32, | ||
246 | ~APMG_SVR_VOLTAGE_CONFIG_BIT_MSK); | ||
247 | } | ||
248 | 243 | ||
249 | spin_unlock_irqrestore(&priv->lock, flags); | 244 | spin_unlock_irqrestore(&priv->lock, flags); |
250 | } | 245 | } |
251 | 246 | ||
252 | 247 | ||
253 | |||
254 | /* | 248 | /* |
255 | * EEPROM | 249 | * EEPROM |
256 | */ | 250 | */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c index 59ff73536f3a..052a704f2364 100644 --- a/drivers/net/wireless/iwlwifi/iwl-6000.c +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | |||
@@ -68,6 +68,24 @@ static void iwl6000_set_ct_threshold(struct iwl_priv *priv) | |||
68 | priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD; | 68 | priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD; |
69 | } | 69 | } |
70 | 70 | ||
71 | /* NIC configuration for 6000 series */ | ||
72 | static void iwl6000_nic_config(struct iwl_priv *priv) | ||
73 | { | ||
74 | iwl5000_nic_config(priv); | ||
75 | |||
76 | /* no locking required for register write */ | ||
77 | if (priv->cfg->pa_type == IWL_PA_HYBRID) { | ||
78 | /* 2x2 hybrid phy type */ | ||
79 | iwl_write32(priv, CSR_GP_DRIVER_REG, | ||
80 | CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_HYB); | ||
81 | } else if (priv->cfg->pa_type == IWL_PA_INTERNAL) { | ||
82 | /* 2x2 IPA phy type */ | ||
83 | iwl_write32(priv, CSR_GP_DRIVER_REG, | ||
84 | CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_IPA); | ||
85 | } | ||
86 | /* else do nothing, uCode configured */ | ||
87 | } | ||
88 | |||
71 | static struct iwl_lib_ops iwl6000_lib = { | 89 | static struct iwl_lib_ops iwl6000_lib = { |
72 | .set_hw_params = iwl5000_hw_set_hw_params, | 90 | .set_hw_params = iwl5000_hw_set_hw_params, |
73 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, | 91 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, |
@@ -90,7 +108,7 @@ static struct iwl_lib_ops iwl6000_lib = { | |||
90 | .init = iwl5000_apm_init, | 108 | .init = iwl5000_apm_init, |
91 | .reset = iwl5000_apm_reset, | 109 | .reset = iwl5000_apm_reset, |
92 | .stop = iwl5000_apm_stop, | 110 | .stop = iwl5000_apm_stop, |
93 | .config = iwl5000_nic_config, | 111 | .config = iwl6000_nic_config, |
94 | .set_pwr_src = iwl_set_pwr_src, | 112 | .set_pwr_src = iwl_set_pwr_src, |
95 | }, | 113 | }, |
96 | .eeprom_ops = { | 114 | .eeprom_ops = { |
@@ -146,9 +164,13 @@ struct iwl_cfg iwl6000_2ag_cfg = { | |||
146 | .valid_tx_ant = ANT_BC, | 164 | .valid_tx_ant = ANT_BC, |
147 | .valid_rx_ant = ANT_BC, | 165 | .valid_rx_ant = ANT_BC, |
148 | .need_pll_cfg = false, | 166 | .need_pll_cfg = false, |
167 | .pa_type = IWL_PA_SYSTEM, | ||
149 | }; | 168 | }; |
150 | 169 | ||
151 | struct iwl_cfg iwl6000_2agn_cfg = { | 170 | /* |
171 | * "h": Hybrid configuration, use both internal and external Power Amplifier | ||
172 | */ | ||
173 | struct iwl_cfg iwl6000h_2agn_cfg = { | ||
152 | .name = "6000 Series 2x2 AGN", | 174 | .name = "6000 Series 2x2 AGN", |
153 | .fw_name_pre = IWL6000_FW_PRE, | 175 | .fw_name_pre = IWL6000_FW_PRE, |
154 | .ucode_api_max = IWL6000_UCODE_API_MAX, | 176 | .ucode_api_max = IWL6000_UCODE_API_MAX, |
@@ -162,6 +184,27 @@ struct iwl_cfg iwl6000_2agn_cfg = { | |||
162 | .valid_tx_ant = ANT_AB, | 184 | .valid_tx_ant = ANT_AB, |
163 | .valid_rx_ant = ANT_AB, | 185 | .valid_rx_ant = ANT_AB, |
164 | .need_pll_cfg = false, | 186 | .need_pll_cfg = false, |
187 | .pa_type = IWL_PA_HYBRID, | ||
188 | }; | ||
189 | |||
190 | /* | ||
191 | * "i": Internal configuration, use internal Power Amplifier | ||
192 | */ | ||
193 | struct iwl_cfg iwl6000i_2agn_cfg = { | ||
194 | .name = "6000 Series 2x2 AGN", | ||
195 | .fw_name_pre = IWL6000_FW_PRE, | ||
196 | .ucode_api_max = IWL6000_UCODE_API_MAX, | ||
197 | .ucode_api_min = IWL6000_UCODE_API_MIN, | ||
198 | .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N, | ||
199 | .ops = &iwl6000_ops, | ||
200 | .eeprom_size = IWL_5000_EEPROM_IMG_SIZE, | ||
201 | .eeprom_ver = EEPROM_5000_EEPROM_VERSION, | ||
202 | .eeprom_calib_ver = EEPROM_5000_TX_POWER_VERSION, | ||
203 | .mod_params = &iwl50_mod_params, | ||
204 | .valid_tx_ant = ANT_BC, | ||
205 | .valid_rx_ant = ANT_BC, | ||
206 | .need_pll_cfg = false, | ||
207 | .pa_type = IWL_PA_INTERNAL, | ||
165 | }; | 208 | }; |
166 | 209 | ||
167 | struct iwl_cfg iwl6050_2agn_cfg = { | 210 | struct iwl_cfg iwl6050_2agn_cfg = { |
@@ -178,6 +221,7 @@ struct iwl_cfg iwl6050_2agn_cfg = { | |||
178 | .valid_tx_ant = ANT_AB, | 221 | .valid_tx_ant = ANT_AB, |
179 | .valid_rx_ant = ANT_AB, | 222 | .valid_rx_ant = ANT_AB, |
180 | .need_pll_cfg = false, | 223 | .need_pll_cfg = false, |
224 | .pa_type = IWL_PA_SYSTEM, | ||
181 | }; | 225 | }; |
182 | 226 | ||
183 | struct iwl_cfg iwl6000_3agn_cfg = { | 227 | struct iwl_cfg iwl6000_3agn_cfg = { |
@@ -194,6 +238,7 @@ struct iwl_cfg iwl6000_3agn_cfg = { | |||
194 | .valid_tx_ant = ANT_ABC, | 238 | .valid_tx_ant = ANT_ABC, |
195 | .valid_rx_ant = ANT_ABC, | 239 | .valid_rx_ant = ANT_ABC, |
196 | .need_pll_cfg = false, | 240 | .need_pll_cfg = false, |
241 | .pa_type = IWL_PA_SYSTEM, | ||
197 | }; | 242 | }; |
198 | 243 | ||
199 | struct iwl_cfg iwl6050_3agn_cfg = { | 244 | struct iwl_cfg iwl6050_3agn_cfg = { |
@@ -210,6 +255,7 @@ struct iwl_cfg iwl6050_3agn_cfg = { | |||
210 | .valid_tx_ant = ANT_ABC, | 255 | .valid_tx_ant = ANT_ABC, |
211 | .valid_rx_ant = ANT_ABC, | 256 | .valid_rx_ant = ANT_ABC, |
212 | .need_pll_cfg = false, | 257 | .need_pll_cfg = false, |
258 | .pa_type = IWL_PA_SYSTEM, | ||
213 | }; | 259 | }; |
214 | 260 | ||
215 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); | 261 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 4cb1a1b73483..a54330b24432 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -3142,11 +3142,13 @@ static struct pci_device_id iwl_hw_card_ids[] = { | |||
3142 | {IWL_PCI_DEVICE(0x0082, 0x1102, iwl6000_2ag_cfg)}, | 3142 | {IWL_PCI_DEVICE(0x0082, 0x1102, iwl6000_2ag_cfg)}, |
3143 | {IWL_PCI_DEVICE(0x0085, 0x1112, iwl6000_2ag_cfg)}, | 3143 | {IWL_PCI_DEVICE(0x0085, 0x1112, iwl6000_2ag_cfg)}, |
3144 | {IWL_PCI_DEVICE(0x0082, 0x1122, iwl6000_2ag_cfg)}, | 3144 | {IWL_PCI_DEVICE(0x0082, 0x1122, iwl6000_2ag_cfg)}, |
3145 | {IWL_PCI_DEVICE(0x008D, PCI_ANY_ID, iwl6000h_2agn_cfg)}, | ||
3146 | {IWL_PCI_DEVICE(0x008E, PCI_ANY_ID, iwl6000h_2agn_cfg)}, | ||
3145 | {IWL_PCI_DEVICE(0x422B, PCI_ANY_ID, iwl6000_3agn_cfg)}, | 3147 | {IWL_PCI_DEVICE(0x422B, PCI_ANY_ID, iwl6000_3agn_cfg)}, |
3146 | {IWL_PCI_DEVICE(0x422C, PCI_ANY_ID, iwl6000_2agn_cfg)}, | 3148 | {IWL_PCI_DEVICE(0x422C, PCI_ANY_ID, iwl6000i_2agn_cfg)}, |
3147 | {IWL_PCI_DEVICE(0x4238, PCI_ANY_ID, iwl6000_3agn_cfg)}, | 3149 | {IWL_PCI_DEVICE(0x4238, PCI_ANY_ID, iwl6000_3agn_cfg)}, |
3148 | {IWL_PCI_DEVICE(0x4239, PCI_ANY_ID, iwl6000_2agn_cfg)}, | 3150 | {IWL_PCI_DEVICE(0x4239, PCI_ANY_ID, iwl6000i_2agn_cfg)}, |
3149 | {IWL_PCI_DEVICE(0x0082, PCI_ANY_ID, iwl6000_2agn_cfg)}, | 3151 | {IWL_PCI_DEVICE(0x0082, PCI_ANY_ID, iwl6000h_2agn_cfg)}, |
3150 | {IWL_PCI_DEVICE(0x0085, PCI_ANY_ID, iwl6000_3agn_cfg)}, | 3152 | {IWL_PCI_DEVICE(0x0085, PCI_ANY_ID, iwl6000_3agn_cfg)}, |
3151 | {IWL_PCI_DEVICE(0x0086, PCI_ANY_ID, iwl6050_3agn_cfg)}, | 3153 | {IWL_PCI_DEVICE(0x0086, PCI_ANY_ID, iwl6050_3agn_cfg)}, |
3152 | {IWL_PCI_DEVICE(0x0087, PCI_ANY_ID, iwl6050_2agn_cfg)}, | 3154 | {IWL_PCI_DEVICE(0x0087, PCI_ANY_ID, iwl6050_2agn_cfg)}, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index febcf76e1d41..10ddcdda1041 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h | |||
@@ -206,6 +206,7 @@ struct iwl_mod_params { | |||
206 | * filename is constructed as fw_name_pre<api>.ucode. | 206 | * filename is constructed as fw_name_pre<api>.ucode. |
207 | * @ucode_api_max: Highest version of uCode API supported by driver. | 207 | * @ucode_api_max: Highest version of uCode API supported by driver. |
208 | * @ucode_api_min: Lowest version of uCode API supported by driver. | 208 | * @ucode_api_min: Lowest version of uCode API supported by driver. |
209 | * @pa_type: used by 6000 series only to identify the type of Power Amplifier | ||
209 | * | 210 | * |
210 | * We enable the driver to be backward compatible wrt API version. The | 211 | * We enable the driver to be backward compatible wrt API version. The |
211 | * driver specifies which APIs it supports (with @ucode_api_max being the | 212 | * driver specifies which APIs it supports (with @ucode_api_max being the |
@@ -226,6 +227,7 @@ struct iwl_mod_params { | |||
226 | * iwl_hcmd_utils_ops etc. we accommodate different command structures | 227 | * iwl_hcmd_utils_ops etc. we accommodate different command structures |
227 | * and flows between hardware versions (4965/5000) as well as their API | 228 | * and flows between hardware versions (4965/5000) as well as their API |
228 | * versions. | 229 | * versions. |
230 | * | ||
229 | */ | 231 | */ |
230 | struct iwl_cfg { | 232 | struct iwl_cfg { |
231 | const char *name; | 233 | const char *name; |
@@ -242,6 +244,7 @@ struct iwl_cfg { | |||
242 | u8 valid_rx_ant; | 244 | u8 valid_rx_ant; |
243 | bool need_pll_cfg; | 245 | bool need_pll_cfg; |
244 | bool use_isr_legacy; | 246 | bool use_isr_legacy; |
247 | enum iwl_pa_type pa_type; | ||
245 | }; | 248 | }; |
246 | 249 | ||
247 | /*************************** | 250 | /*************************** |
diff --git a/drivers/net/wireless/iwlwifi/iwl-csr.h b/drivers/net/wireless/iwlwifi/iwl-csr.h index f03dae1b2f36..06437d13e73e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-csr.h +++ b/drivers/net/wireless/iwlwifi/iwl-csr.h | |||
@@ -91,7 +91,8 @@ | |||
91 | #define CSR_EEPROM_GP (CSR_BASE+0x030) | 91 | #define CSR_EEPROM_GP (CSR_BASE+0x030) |
92 | #define CSR_OTP_GP_REG (CSR_BASE+0x034) | 92 | #define CSR_OTP_GP_REG (CSR_BASE+0x034) |
93 | #define CSR_GIO_REG (CSR_BASE+0x03C) | 93 | #define CSR_GIO_REG (CSR_BASE+0x03C) |
94 | #define CSR_GP_UCODE (CSR_BASE+0x044) | 94 | #define CSR_GP_UCODE_REG (CSR_BASE+0x048) |
95 | #define CSR_GP_DRIVER_REG (CSR_BASE+0x050) | ||
95 | #define CSR_UCODE_DRV_GP1 (CSR_BASE+0x054) | 96 | #define CSR_UCODE_DRV_GP1 (CSR_BASE+0x054) |
96 | #define CSR_UCODE_DRV_GP1_SET (CSR_BASE+0x058) | 97 | #define CSR_UCODE_DRV_GP1_SET (CSR_BASE+0x058) |
97 | #define CSR_UCODE_DRV_GP1_CLR (CSR_BASE+0x05c) | 98 | #define CSR_UCODE_DRV_GP1_CLR (CSR_BASE+0x05c) |
@@ -245,6 +246,13 @@ | |||
245 | #define CSR_UCODE_DRV_GP1_BIT_CMD_BLOCKED (0x00000004) | 246 | #define CSR_UCODE_DRV_GP1_BIT_CMD_BLOCKED (0x00000004) |
246 | #define CSR_UCODE_DRV_GP1_REG_BIT_CT_KILL_EXIT (0x00000008) | 247 | #define CSR_UCODE_DRV_GP1_REG_BIT_CT_KILL_EXIT (0x00000008) |
247 | 248 | ||
249 | /* GP Driver */ | ||
250 | #define CSR_GP_DRIVER_REG_BIT_RADIO_SKU_MSK (0x00000003) | ||
251 | #define CSR_GP_DRIVER_REG_BIT_RADIO_SKU_3x3_HYB (0x00000000) | ||
252 | #define CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_HYB (0x00000001) | ||
253 | #define CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_IPA (0x00000002) | ||
254 | |||
255 | |||
248 | /* GI Chicken Bits */ | 256 | /* GI Chicken Bits */ |
249 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_L1A_NO_L0S_RX (0x00800000) | 257 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_L1A_NO_L0S_RX (0x00800000) |
250 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_DIS_L0S_EXIT_TIMER (0x20000000) | 258 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_DIS_L0S_EXIT_TIMER (0x20000000) |
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 0ee3ad245697..335a8f34bc51 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -57,7 +57,8 @@ extern struct iwl_cfg iwl5100_bg_cfg; | |||
57 | extern struct iwl_cfg iwl5100_abg_cfg; | 57 | extern struct iwl_cfg iwl5100_abg_cfg; |
58 | extern struct iwl_cfg iwl5150_agn_cfg; | 58 | extern struct iwl_cfg iwl5150_agn_cfg; |
59 | extern struct iwl_cfg iwl6000_2ag_cfg; | 59 | extern struct iwl_cfg iwl6000_2ag_cfg; |
60 | extern struct iwl_cfg iwl6000_2agn_cfg; | 60 | extern struct iwl_cfg iwl6000h_2agn_cfg; |
61 | extern struct iwl_cfg iwl6000i_2agn_cfg; | ||
61 | extern struct iwl_cfg iwl6000_3agn_cfg; | 62 | extern struct iwl_cfg iwl6000_3agn_cfg; |
62 | extern struct iwl_cfg iwl6050_2agn_cfg; | 63 | extern struct iwl_cfg iwl6050_2agn_cfg; |
63 | extern struct iwl_cfg iwl6050_3agn_cfg; | 64 | extern struct iwl_cfg iwl6050_3agn_cfg; |
@@ -888,6 +889,19 @@ enum iwl_nvm_type { | |||
888 | NVM_DEVICE_TYPE_OTP, | 889 | NVM_DEVICE_TYPE_OTP, |
889 | }; | 890 | }; |
890 | 891 | ||
892 | |||
893 | /** | ||
894 | * enum iwl_pa_type - Power Amplifier type | ||
895 | * @IWL_PA_SYSTEM: based on uCode configuration | ||
896 | * @IWL_PA_HYBRID: use both Internal and external PA | ||
897 | * @IWL_PA_INTERNAL: use Internal only | ||
898 | */ | ||
899 | enum iwl_pa_type { | ||
900 | IWL_PA_SYSTEM = 0, | ||
901 | IWL_PA_HYBRID = 1, | ||
902 | IWL_PA_INTERNAL = 2, | ||
903 | }; | ||
904 | |||
891 | /* interrupt statistics */ | 905 | /* interrupt statistics */ |
892 | struct isr_statistics { | 906 | struct isr_statistics { |
893 | u32 hw; | 907 | u32 hw; |