diff options
Diffstat (limited to 'drivers/scsi/pm8001/pm8001_sas.c')
| -rw-r--r-- | drivers/scsi/pm8001/pm8001_sas.c | 31 | 
1 files changed, 16 insertions, 15 deletions
| diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c index a98d4496ff8b..d28af413b93a 100644 --- a/drivers/scsi/pm8001/pm8001_sas.c +++ b/drivers/scsi/pm8001/pm8001_sas.c @@ -590,7 +590,7 @@ struct pm8001_device *pm8001_find_dev(struct pm8001_hba_info *pm8001_ha,  	return NULL;  } -static void pm8001_free_dev(struct pm8001_device *pm8001_dev) +void pm8001_free_dev(struct pm8001_device *pm8001_dev)  {  	u32 id = pm8001_dev->id;  	memset(pm8001_dev, 0, sizeof(*pm8001_dev)); @@ -738,7 +738,7 @@ static int pm8001_exec_internal_tmf_task(struct domain_device *dev,  		if (pm8001_ha->chip_id != chip_8001) {  			pm8001_dev->setds_completion = &completion_setstate;  			PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, -				pm8001_dev, 0x01); +				pm8001_dev, DS_OPERATIONAL);  			wait_for_completion(&completion_setstate);  		}  		res = -TMF_RESP_FUNC_FAILED; @@ -877,8 +877,8 @@ static void pm8001_dev_gone_notify(struct domain_device *dev)  			   pm8001_dev->device_id, pm8001_dev->dev_type);  		if (atomic_read(&pm8001_dev->running_req)) {  			spin_unlock_irqrestore(&pm8001_ha->lock, flags); -			pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev , -				dev, 1, 0); +			pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev, +							dev, 1, 0);  			while (atomic_read(&pm8001_dev->running_req))  				msleep(20);  			spin_lock_irqsave(&pm8001_ha->lock, flags); @@ -981,6 +981,7 @@ void pm8001_open_reject_retry(  }  /** + * pm8001_I_T_nexus_reset()    * Standard mandates link reset for ATA  (type 0) and hard reset for    * SSP (type 1) , only for RECOVERY    * @dev: the device structure for the device to reset. @@ -1013,8 +1014,8 @@ int pm8001_I_T_nexus_reset(struct domain_device *dev)  			goto out;  		}  		msleep(2000); -		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev , -			dev, 1, 0); +		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev, +						     dev, 1, 0);  		if (rc) {  			pm8001_dbg(pm8001_ha, EH, "task abort failed %x\n"  				   "with rc %d\n", pm8001_dev->device_id, rc); @@ -1059,8 +1060,8 @@ int pm8001_I_T_nexus_event_handler(struct domain_device *dev)  			goto out;  		}  		/* send internal ssp/sata/smp abort command to FW */ -		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev , -							dev, 1, 0); +		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev, +						     dev, 1, 0);  		msleep(100);  		/* deregister the target device */ @@ -1075,8 +1076,8 @@ int pm8001_I_T_nexus_event_handler(struct domain_device *dev)  		wait_for_completion(&completion_setstate);  	} else {  		/* send internal ssp/sata/smp abort command to FW */ -		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev , -							dev, 1, 0); +		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev, +						     dev, 1, 0);  		msleep(100);  		/* deregister the target device */ @@ -1104,13 +1105,13 @@ int pm8001_lu_reset(struct domain_device *dev, u8 *lun)  	DECLARE_COMPLETION_ONSTACK(completion_setstate);  	if (dev_is_sata(dev)) {  		struct sas_phy *phy = sas_get_local_phy(dev); -		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev , -			dev, 1, 0); +		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev, +						     dev, 1, 0);  		rc = sas_phy_reset(phy, 1);  		sas_put_local_phy(phy);  		pm8001_dev->setds_completion = &completion_setstate;  		rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, -			pm8001_dev, 0x01); +			pm8001_dev, DS_OPERATIONAL);  		wait_for_completion(&completion_setstate);  	} else {  		tmf_task.tmf = TMF_LU_RESET; @@ -1229,7 +1230,7 @@ int pm8001_abort_task(struct sas_task *task)  			/* 1. Set Device state as Recovery */  			pm8001_dev->setds_completion = &completion;  			PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, -				pm8001_dev, 0x03); +				pm8001_dev, DS_IN_RECOVERY);  			wait_for_completion(&completion);  			/* 2. Send Phy Control Hard Reset */ @@ -1300,7 +1301,7 @@ int pm8001_abort_task(struct sas_task *task)  			reinit_completion(&completion);  			pm8001_dev->setds_completion = &completion;  			PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, -				pm8001_dev, 0x01); +				pm8001_dev, DS_OPERATIONAL);  			wait_for_completion(&completion);  		} else {  			rc = pm8001_exec_internal_task_abort(pm8001_ha, | 
