[SCSI] arcmsr: fix misuse of | instead of &
authorDan Carpenter <dan.carpenter@oracle.com>
Sat, 9 Jun 2012 09:10:19 +0000 (12:10 +0300)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 20 Jul 2012 07:58:31 +0000 (08:58 +0100)
ARCMSR_ARC1880_DiagWrite_ENABLE is 0x00000080 so (x | 0x00000080) is
never zero.  The intent here was to test that loop until
ARCMSR_ARC1880_DiagWrite_ENABLE was turned on, but because the test was
wrong, we would do five loops regardless of whether it succeed or not.

Also I simplified the condition a little by removing the unused
assignement.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Nick Cheng <nick.cheng@areca.com.tw>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/arcmsr/arcmsr_hba.c

index cbde1dca45ad52e37eede57572f19b825cd39408..def24a1079adc70dc7dd343f1062d76710ffee1a 100644 (file)
@@ -2821,7 +2821,7 @@ static void arcmsr_hardware_reset(struct AdapterControlBlock *acb)
        int i, count = 0;
        struct MessageUnit_A __iomem *pmuA = acb->pmuA;
        struct MessageUnit_C __iomem *pmuC = acb->pmuC;
-       u32 temp = 0;
+
        /* backup pci config data */
        printk(KERN_NOTICE "arcmsr%d: executing hw bus reset .....\n", acb->host->host_no);
        for (i = 0; i < 64; i++) {
@@ -2839,7 +2839,7 @@ static void arcmsr_hardware_reset(struct AdapterControlBlock *acb)
                        writel(0x2, &pmuC->write_sequence);
                        writel(0x7, &pmuC->write_sequence);
                        writel(0xD, &pmuC->write_sequence);
-               } while ((((temp = readl(&pmuC->host_diagnostic)) | ARCMSR_ARC1880_DiagWrite_ENABLE) == 0) && (count < 5));
+               } while (((readl(&pmuC->host_diagnostic) & ARCMSR_ARC1880_DiagWrite_ENABLE) == 0) && (count < 5));
                writel(ARCMSR_ARC1880_RESET_ADAPTER, &pmuC->host_diagnostic);
        } else {
                pci_write_config_byte(acb->pdev, 0x84, 0x20);