diff options
Diffstat (limited to 'drivers/scsi/megaraid/megaraid_sas_base.c')
| -rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_base.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index d84d02c2aad9..112799b131a9 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c | |||
| @@ -3061,7 +3061,8 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) | |||
| 3061 | u32 cur_state; | 3061 | u32 cur_state; |
| 3062 | u32 abs_state, curr_abs_state; | 3062 | u32 abs_state, curr_abs_state; |
| 3063 | 3063 | ||
| 3064 | fw_state = instance->instancet->read_fw_status_reg(instance->reg_set) & MFI_STATE_MASK; | 3064 | abs_state = instance->instancet->read_fw_status_reg(instance->reg_set); |
| 3065 | fw_state = abs_state & MFI_STATE_MASK; | ||
| 3065 | 3066 | ||
| 3066 | if (fw_state != MFI_STATE_READY) | 3067 | if (fw_state != MFI_STATE_READY) |
| 3067 | printk(KERN_INFO "megasas: Waiting for FW to come to ready" | 3068 | printk(KERN_INFO "megasas: Waiting for FW to come to ready" |
| @@ -3069,9 +3070,6 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) | |||
| 3069 | 3070 | ||
| 3070 | while (fw_state != MFI_STATE_READY) { | 3071 | while (fw_state != MFI_STATE_READY) { |
| 3071 | 3072 | ||
| 3072 | abs_state = | ||
| 3073 | instance->instancet->read_fw_status_reg(instance->reg_set); | ||
| 3074 | |||
| 3075 | switch (fw_state) { | 3073 | switch (fw_state) { |
| 3076 | 3074 | ||
| 3077 | case MFI_STATE_FAULT: | 3075 | case MFI_STATE_FAULT: |
| @@ -3223,10 +3221,8 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) | |||
| 3223 | * The cur_state should not last for more than max_wait secs | 3221 | * The cur_state should not last for more than max_wait secs |
| 3224 | */ | 3222 | */ |
| 3225 | for (i = 0; i < (max_wait * 1000); i++) { | 3223 | for (i = 0; i < (max_wait * 1000); i++) { |
| 3226 | fw_state = instance->instancet->read_fw_status_reg(instance->reg_set) & | 3224 | curr_abs_state = instance->instancet-> |
| 3227 | MFI_STATE_MASK ; | 3225 | read_fw_status_reg(instance->reg_set); |
| 3228 | curr_abs_state = | ||
| 3229 | instance->instancet->read_fw_status_reg(instance->reg_set); | ||
| 3230 | 3226 | ||
| 3231 | if (abs_state == curr_abs_state) { | 3227 | if (abs_state == curr_abs_state) { |
| 3232 | msleep(1); | 3228 | msleep(1); |
| @@ -3242,6 +3238,9 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) | |||
| 3242 | "in %d secs\n", fw_state, max_wait); | 3238 | "in %d secs\n", fw_state, max_wait); |
| 3243 | return -ENODEV; | 3239 | return -ENODEV; |
| 3244 | } | 3240 | } |
| 3241 | |||
| 3242 | abs_state = curr_abs_state; | ||
| 3243 | fw_state = curr_abs_state & MFI_STATE_MASK; | ||
| 3245 | } | 3244 | } |
| 3246 | printk(KERN_INFO "megasas: FW now in Ready state\n"); | 3245 | printk(KERN_INFO "megasas: FW now in Ready state\n"); |
| 3247 | 3246 | ||
