hisi_sas: Add scan finished and start

Add functions for scsi host template scan_finished and scan_start
methods.

Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
John Garry 2015-11-18 00:50:55 +08:00 committed by Martin K. Petersen
parent 66ee999b4e
commit 701f75ecd9
2 changed files with 26 additions and 0 deletions

View File

@ -156,6 +156,7 @@ struct hisi_hba {
u8 sas_addr[SAS_ADDR_SIZE]; u8 sas_addr[SAS_ADDR_SIZE];
int n_phy; int n_phy;
int scan_finished;
spinlock_t lock; spinlock_t lock;
struct timer_list timer; struct timer_list timer;

View File

@ -403,6 +403,29 @@ static int hisi_sas_dev_found(struct domain_device *device)
return 0; return 0;
} }
static void hisi_sas_scan_start(struct Scsi_Host *shost)
{
struct hisi_hba *hisi_hba = shost_priv(shost);
int i;
for (i = 0; i < hisi_hba->n_phy; ++i)
hisi_sas_bytes_dmaed(hisi_hba, i);
hisi_hba->scan_finished = 1;
}
static int hisi_sas_scan_finished(struct Scsi_Host *shost, unsigned long time)
{
struct hisi_hba *hisi_hba = shost_priv(shost);
struct sas_ha_struct *sha = &hisi_hba->sha;
if (hisi_hba->scan_finished == 0)
return 0;
sas_drain_work(sha);
return 1;
}
static void hisi_sas_phyup_work(struct work_struct *work) static void hisi_sas_phyup_work(struct work_struct *work)
{ {
struct hisi_sas_phy *phy = struct hisi_sas_phy *phy =
@ -587,6 +610,8 @@ static struct scsi_host_template hisi_sas_sht = {
.queuecommand = sas_queuecommand, .queuecommand = sas_queuecommand,
.target_alloc = sas_target_alloc, .target_alloc = sas_target_alloc,
.slave_configure = sas_slave_configure, .slave_configure = sas_slave_configure,
.scan_finished = hisi_sas_scan_finished,
.scan_start = hisi_sas_scan_start,
.change_queue_depth = sas_change_queue_depth, .change_queue_depth = sas_change_queue_depth,
.bios_param = sas_bios_param, .bios_param = sas_bios_param,
.can_queue = 1, .can_queue = 1,