Signed-off-by: Denis Arefev <arefev@xxxxxxxxx> --- drivers/scsi/pcmcia/qlogic_stub.c | 2 +- drivers/scsi/qlogicfas408.c | 19 +++++++++++++++++++ drivers/scsi/qlogicfas408.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index 828d53faf09a..710a0c35bf12 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c @@ -268,7 +268,7 @@ static int qlogic_resume(struct pcmcia_device *link) outb(0x04, link->resource[0]->start + 0xd); } /* Ugggglllyyyy!!! */ - qlogicfas408_host_reset(NULL); + qlogicfas408_reset(info->host); return 0; } diff --git a/drivers/scsi/qlogicfas408.c b/drivers/scsi/qlogicfas408.c index 136681ad18a5..c5f9efe044e0 100644 --- a/drivers/scsi/qlogicfas408.c +++ b/drivers/scsi/qlogicfas408.c @@ -516,6 +516,24 @@ int qlogicfas408_host_reset(struct scsi_cmnd *cmd) return SUCCESS; } +/* + * Reset SCSI bus + */ + +int qlogicfas408_reset(struct Scsi_Host *host) +{ + struct qlogicfas408_priv *priv = get_priv_by_host(host); + unsigned long flags; + + priv->qabort = 2; + + spin_lock_irqsave(host->host_lock, flags); + ql_zap(priv); + spin_unlock_irqrestore(host->host_lock, flags); + + return SUCCESS; +} + /* * Return info string */ @@ -608,6 +626,7 @@ EXPORT_SYMBOL(qlogicfas408_info); EXPORT_SYMBOL(qlogicfas408_queuecommand); EXPORT_SYMBOL(qlogicfas408_abort); EXPORT_SYMBOL(qlogicfas408_host_reset); +EXPORT_SYMBOL(qlogicfas408_reset); EXPORT_SYMBOL(qlogicfas408_biosparam); EXPORT_SYMBOL(qlogicfas408_ihandl); EXPORT_SYMBOL(qlogicfas408_get_chip_type); diff --git a/drivers/scsi/qlogicfas408.h b/drivers/scsi/qlogicfas408.h index a971db11d293..593e59e1697e 100644 --- a/drivers/scsi/qlogicfas408.h +++ b/drivers/scsi/qlogicfas408.h @@ -110,6 +110,7 @@ int qlogicfas408_biosparam(struct scsi_device * disk, sector_t capacity, int ip[]); int qlogicfas408_abort(struct scsi_cmnd * cmd); extern int qlogicfas408_host_reset(struct scsi_cmnd *cmd); +extern int qlogicfas408_reset(struct Scsi_Host *host); const char *qlogicfas408_info(struct Scsi_Host *host); int qlogicfas408_get_chip_type(int qbase, int int_type); void qlogicfas408_setup(int qbase, int id, int int_type); -- 2.25.1