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

Commit 781d6550 authored by Anton Vorontsov's avatar Anton Vorontsov Committed by Jeff Garzik
Browse files

ahci: Factor out PCI specifics from ahci_init_controller()



Move PCI stuff into ahci_pci_init_controller().

Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 97cfbfe6
Loading
Loading
Loading
Loading
+27 −18
Original line number Diff line number Diff line
@@ -1684,11 +1684,34 @@ static void ahci_port_init(struct device *dev, struct ata_port *ap,
static void ahci_init_controller(struct ata_host *host)
{
	struct ahci_host_priv *hpriv = host->private_data;
	struct pci_dev *pdev = to_pci_dev(host->dev);
	void __iomem *mmio = hpriv->mmio;
	int i;
	void __iomem *port_mmio;
	u32 tmp;

	for (i = 0; i < host->n_ports; i++) {
		struct ata_port *ap = host->ports[i];

		port_mmio = ahci_port_base(ap);
		if (ata_port_is_dummy(ap))
			continue;

		ahci_port_init(host->dev, ap, i, mmio, port_mmio);
	}

	tmp = readl(mmio + HOST_CTL);
	VPRINTK("HOST_CTL 0x%x\n", tmp);
	writel(tmp | HOST_IRQ_EN, mmio + HOST_CTL);
	tmp = readl(mmio + HOST_CTL);
	VPRINTK("HOST_CTL 0x%x\n", tmp);
}

static void ahci_pci_init_controller(struct ata_host *host)
{
	struct ahci_host_priv *hpriv = host->private_data;
	struct pci_dev *pdev = to_pci_dev(host->dev);
	void __iomem *port_mmio;
	u32 tmp;
	int mv;

	if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
@@ -1707,21 +1730,7 @@ static void ahci_init_controller(struct ata_host *host)
			writel(tmp, port_mmio + PORT_IRQ_STAT);
	}

	for (i = 0; i < host->n_ports; i++) {
		struct ata_port *ap = host->ports[i];

		port_mmio = ahci_port_base(ap);
		if (ata_port_is_dummy(ap))
			continue;

		ahci_port_init(host->dev, ap, i, mmio, port_mmio);
	}

	tmp = readl(mmio + HOST_CTL);
	VPRINTK("HOST_CTL 0x%x\n", tmp);
	writel(tmp | HOST_IRQ_EN, mmio + HOST_CTL);
	tmp = readl(mmio + HOST_CTL);
	VPRINTK("HOST_CTL 0x%x\n", tmp);
	ahci_init_controller(host);
}

static void ahci_dev_config(struct ata_device *dev)
@@ -2709,7 +2718,7 @@ static int ahci_pci_device_resume(struct pci_dev *pdev)
		if (rc)
			return rc;

		ahci_init_controller(host);
		ahci_pci_init_controller(host);
	}

	ata_host_resume(host);
@@ -3449,7 +3458,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
	if (rc)
		return rc;

	ahci_init_controller(host);
	ahci_pci_init_controller(host);
	ahci_print_info(host);

	pci_set_master(pdev);