Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a7774ce authored by Stephen M. Cameron's avatar Stephen M. Cameron Committed by James Bottomley
Browse files

[SCSI] hpsa: factor out hpsa_find_memory_BAR

parent 6b3f4c52
Loading
Loading
Loading
Loading
+19 −15
Original line number Original line Diff line number Diff line
@@ -3285,6 +3285,23 @@ static inline bool hpsa_board_disabled(struct pci_dev *pdev)
	return ((command & PCI_COMMAND_MEMORY) == 0);
	return ((command & PCI_COMMAND_MEMORY) == 0);
}
}


static int __devinit hpsa_pci_find_memory_BAR(struct ctlr_info *h,
	unsigned long *memory_bar)
{
	int i;

	for (i = 0; i < DEVICE_COUNT_RESOURCE; i++)
		if (pci_resource_flags(h->pdev, i) & IORESOURCE_MEM) {
			/* addressing mode bits already removed */
			*memory_bar = pci_resource_start(h->pdev, i);
			dev_dbg(&h->pdev->dev, "memory BAR = %lx\n",
				*memory_bar);
			return 0;
		}
	dev_warn(&h->pdev->dev, "no memory BAR found\n");
	return -ENODEV;
}

static int __devinit hpsa_pci_init(struct ctlr_info *h)
static int __devinit hpsa_pci_init(struct ctlr_info *h)
{
{
	u32 scratchpad = 0;
	u32 scratchpad = 0;
@@ -3317,22 +3334,9 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h)
		return err;
		return err;
	}
	}
	hpsa_interrupt_mode(h);
	hpsa_interrupt_mode(h);

	err = hpsa_pci_find_memory_BAR(h, &h->paddr);
	/* find the memory BAR */
	if (err)
	for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
		if (pci_resource_flags(h->pdev, i) & IORESOURCE_MEM)
			break;
	}
	if (i == DEVICE_COUNT_RESOURCE) {
		dev_warn(&h->pdev->dev, "no memory BAR found\n");
		err = -ENODEV;
		goto err_out_free_res;
		goto err_out_free_res;
	}

	h->paddr = pci_resource_start(h->pdev, i); /* addressing mode bits
						 * already removed
						 */

	h->vaddr = remap_pci_mem(h->paddr, 0x250);
	h->vaddr = remap_pci_mem(h->paddr, 0x250);


	/* Wait for the board to become ready.  */
	/* Wait for the board to become ready.  */