aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/megaraid/megaraid_sas_base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/megaraid/megaraid_sas_base.c')
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_base.c15
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