|
@@ -93,6 +93,13 @@ static int iwl5000_apm_init(struct iwl_priv *priv)
|
|
|
iwl_set_bit(priv, CSR_GIO_CHICKEN_BITS,
|
|
|
CSR_GIO_CHICKEN_BITS_REG_BIT_L1A_NO_L0S_RX);
|
|
|
|
|
|
+ /* Set FH wait treshold to maximum (HW error during stress W/A) */
|
|
|
+ iwl_set_bit(priv, CSR_DBG_HPET_MEM_REG, CSR_DBG_HPET_MEM_REG_VAL);
|
|
|
+
|
|
|
+ /* enable HAP INTA to move device L1a -> L0s */
|
|
|
+ iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG,
|
|
|
+ CSR_HW_IF_CONFIG_REG_BIT_HAP_WAKE_L1A);
|
|
|
+
|
|
|
iwl_set_bit(priv, CSR_ANA_PLL_CFG, CSR50_ANA_PLL_CFG_VAL);
|
|
|
|
|
|
/* set "initialization complete" bit to move adapter
|
|
@@ -230,6 +237,14 @@ static void iwl5000_nic_config(struct iwl_priv *priv)
|
|
|
CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI |
|
|
|
CSR_HW_IF_CONFIG_REG_BIT_MAC_SI);
|
|
|
|
|
|
+ /* W/A : NIC is stuck in a reset state after Early PCIe power off
|
|
|
+ * (PCIe power is lost before PERST# is asserted),
|
|
|
+ * causing ME FW to lose ownership and not being able to obtain it back.
|
|
|
+ */
|
|
|
+ iwl_set_bits_mask_prph(priv, APMG_PS_CTRL_REG,
|
|
|
+ APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS,
|
|
|
+ ~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS);
|
|
|
+
|
|
|
spin_unlock_irqrestore(&priv->lock, flags);
|
|
|
}
|
|
|
|