mirror of https://gitee.com/openkylin/linux.git
iwlwifi: correctly set the NMI register
When we want to trigger an NMI in the device, we need to set bit 7 and not bit 0. However, older firmwares don't register to the interrupt issued by bit 7. Use bit 7 first so that the correct interrupt will be issued hoping that the firmware will react. To be on the safe side, set bit 0 in case the firmware didn't register to the proper interrupt. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
04fd2c2822
commit
66396583e1
|
@ -193,11 +193,15 @@ void iwl_force_nmi(struct iwl_trans *trans)
|
|||
* DEVICE_SET_NMI_8000B_REG - is used.
|
||||
*/
|
||||
if ((trans->cfg->device_family != IWL_DEVICE_FAMILY_8000) ||
|
||||
(CSR_HW_REV_STEP(trans->hw_rev) == SILICON_A_STEP))
|
||||
iwl_write_prph(trans, DEVICE_SET_NMI_REG, DEVICE_SET_NMI_VAL);
|
||||
else
|
||||
(CSR_HW_REV_STEP(trans->hw_rev) == SILICON_A_STEP)) {
|
||||
iwl_write_prph(trans, DEVICE_SET_NMI_REG,
|
||||
DEVICE_SET_NMI_VAL_DRV);
|
||||
iwl_write_prph(trans, DEVICE_SET_NMI_REG,
|
||||
DEVICE_SET_NMI_VAL_HW);
|
||||
} else {
|
||||
iwl_write_prph(trans, DEVICE_SET_NMI_8000B_REG,
|
||||
DEVICE_SET_NMI_8000B_VAL);
|
||||
}
|
||||
}
|
||||
IWL_EXPORT_SYMBOL(iwl_force_nmi);
|
||||
|
||||
|
|
|
@ -108,7 +108,8 @@
|
|||
|
||||
/* Device NMI register */
|
||||
#define DEVICE_SET_NMI_REG 0x00a01c30
|
||||
#define DEVICE_SET_NMI_VAL 0x1
|
||||
#define DEVICE_SET_NMI_VAL_HW BIT(0)
|
||||
#define DEVICE_SET_NMI_VAL_DRV BIT(7)
|
||||
#define DEVICE_SET_NMI_8000B_REG 0x00a01c24
|
||||
#define DEVICE_SET_NMI_8000B_VAL 0x1000000
|
||||
|
||||
|
|
Loading…
Reference in New Issue