scsi: arcmsr: Fix suspend/resume of ACB_ADAPTER_TYPE_B
authorChing Huang <ching2048@areca.com.tw>
Wed, 19 Dec 2018 08:59:48 +0000 (16:59 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 9 Jan 2019 02:58:36 +0000 (21:58 -0500)
From Ching Huang <ching2048@areca.com.tw>

Fix suspend/resume of ACB_ADAPTER_TYPE_B

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/arcmsr/arcmsr_hba.c

index 30dff6c3c2d4d839c0109f0b9f7f48609fc4e6cb..9f85d5abbb0cabb886b34cd915880abef336cd18 100644 (file)
@@ -1110,12 +1110,21 @@ static int arcmsr_resume(struct pci_dev *pdev)
        pci_set_master(pdev);
        if (arcmsr_request_irq(pdev, acb) == FAILED)
                goto controller_stop;
-       if (acb->adapter_type == ACB_ADAPTER_TYPE_E) {
+       switch (acb->adapter_type) {
+       case ACB_ADAPTER_TYPE_B: {
+               struct MessageUnit_B *reg = acb->pmuB;
+               reg->post_qbuffer[0] = 0;
+               reg->postq_index = 0;
+               reg->doneq_index = 0;
+               break;
+               }
+       case ACB_ADAPTER_TYPE_E:
                writel(0, &acb->pmuE->host_int_status);
                writel(ARCMSR_HBEMU_DOORBELL_SYNC, &acb->pmuE->iobound_doorbell);
                acb->in_doorbell = 0;
                acb->out_doorbell = 0;
                acb->doneq_index = 0;
+               break;
        }
        arcmsr_iop_init(acb);
        arcmsr_init_get_devmap_timer(acb);