|
@@ -2416,7 +2416,7 @@ static int iwl_set_hw_ready(struct iwl_priv *priv)
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
-static int iwl_prepare_card_hw(struct iwl_priv *priv)
|
|
|
|
|
|
+int iwl_prepare_card_hw(struct iwl_priv *priv)
|
|
{
|
|
{
|
|
int ret = 0;
|
|
int ret = 0;
|
|
|
|
|
|
@@ -2462,47 +2462,9 @@ static int __iwl_up(struct iwl_priv *priv)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- iwl_prepare_card_hw(priv);
|
|
|
|
-
|
|
|
|
- if (!priv->hw_ready) {
|
|
|
|
- IWL_WARN(priv, "Exit HW not ready\n");
|
|
|
|
- return -EIO;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /* If platform's RF_KILL switch is NOT set to KILL */
|
|
|
|
- if (iwl_read32(priv, CSR_GP_CNTRL) & CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)
|
|
|
|
- clear_bit(STATUS_RF_KILL_HW, &priv->status);
|
|
|
|
- else
|
|
|
|
- set_bit(STATUS_RF_KILL_HW, &priv->status);
|
|
|
|
-
|
|
|
|
- if (iwl_is_rfkill(priv)) {
|
|
|
|
- wiphy_rfkill_set_hw_state(priv->hw->wiphy, true);
|
|
|
|
-
|
|
|
|
- iwl_enable_interrupts(priv);
|
|
|
|
- IWL_WARN(priv, "Radio disabled by HW RF Kill switch\n");
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
|
|
|
|
-
|
|
|
|
- ret = iwlagn_hw_nic_init(priv);
|
|
|
|
- if (ret) {
|
|
|
|
- IWL_ERR(priv, "Unable to init nic\n");
|
|
|
|
|
|
+ ret = iwlagn_start_device(priv);
|
|
|
|
+ if (ret)
|
|
return ret;
|
|
return ret;
|
|
- }
|
|
|
|
-
|
|
|
|
- /* make sure rfkill handshake bits are cleared */
|
|
|
|
- iwl_write32(priv, CSR_UCODE_DRV_GP1_CLR, CSR_UCODE_SW_BIT_RFKILL);
|
|
|
|
- iwl_write32(priv, CSR_UCODE_DRV_GP1_CLR,
|
|
|
|
- CSR_UCODE_DRV_GP1_BIT_CMD_BLOCKED);
|
|
|
|
-
|
|
|
|
- /* clear (again), then enable host interrupts */
|
|
|
|
- iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
|
|
|
|
- iwl_enable_interrupts(priv);
|
|
|
|
-
|
|
|
|
- /* really make sure rfkill handshake bits are cleared */
|
|
|
|
- iwl_write32(priv, CSR_UCODE_DRV_GP1_CLR, CSR_UCODE_SW_BIT_RFKILL);
|
|
|
|
- iwl_write32(priv, CSR_UCODE_DRV_GP1_CLR, CSR_UCODE_SW_BIT_RFKILL);
|
|
|
|
|
|
|
|
for (i = 0; i < MAX_HW_RESTARTS; i++) {
|
|
for (i = 0; i < MAX_HW_RESTARTS; i++) {
|
|
|
|
|