[SCSI] hpsa: factor out hpsa_board_disabled
authorStephen M. Cameron <scameron@beardog.cce.hp.com>
Thu, 27 May 2010 20:12:57 +0000 (15:12 -0500)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 27 Jul 2010 17:01:03 +0000 (12:01 -0500)
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/hpsa.c

index b6c6e7f88fa49c94d193e17b8b9fd2874b635796..4233b932ef55a82d8c6ab81bf13ad3e155a0af1f 100644 (file)
@@ -3278,9 +3278,16 @@ static int __devinit hpsa_lookup_board_id(struct pci_dev *pdev, u32 *board_id)
        return ARRAY_SIZE(products) - 1; /* generic unknown smart array */
 }
 
+static inline bool hpsa_board_disabled(struct pci_dev *pdev)
+{
+       u16 command;
+
+       (void) pci_read_config_word(pdev, PCI_COMMAND, &command);
+       return ((command & PCI_COMMAND_MEMORY) == 0);
+}
+
 static int __devinit hpsa_pci_init(struct ctlr_info *h)
 {
-       ushort command;
        u32 scratchpad = 0;
        u64 cfg_offset;
        u32 cfg_base_addr;
@@ -3294,15 +3301,10 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h)
        h->product_name = products[prod_index].product_name;
        h->access = *(products[prod_index].access);
 
-       /* check to see if controller has been disabled
-        * BEFORE trying to enable it
-        */
-       (void)pci_read_config_word(h->pdev, PCI_COMMAND, &command);
-       if (!(command & 0x02)) {
+       if (hpsa_board_disabled(h->pdev)) {
                dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
                return -ENODEV;
        }
-
        err = pci_enable_device(h->pdev);
        if (err) {
                dev_warn(&h->pdev->dev, "unable to enable PCI device\n");