diff options
Diffstat (limited to 'drivers/ata/sata_inic162x.c')
-rw-r--r-- | drivers/ata/sata_inic162x.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c index f0ea0e166c11..08595f34b3e8 100644 --- a/drivers/ata/sata_inic162x.c +++ b/drivers/ata/sata_inic162x.c | |||
@@ -693,16 +693,24 @@ static int inic_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
693 | host->iomap = iomap = pcim_iomap_table(pdev); | 693 | host->iomap = iomap = pcim_iomap_table(pdev); |
694 | 694 | ||
695 | for (i = 0; i < NR_PORTS; i++) { | 695 | for (i = 0; i < NR_PORTS; i++) { |
696 | struct ata_ioports *port = &host->ports[i]->ioaddr; | 696 | struct ata_port *ap = host->ports[i]; |
697 | void __iomem *port_base = iomap[MMIO_BAR] + i * PORT_SIZE; | 697 | struct ata_ioports *port = &ap->ioaddr; |
698 | unsigned int offset = i * PORT_SIZE; | ||
698 | 699 | ||
699 | port->cmd_addr = iomap[2 * i]; | 700 | port->cmd_addr = iomap[2 * i]; |
700 | port->altstatus_addr = | 701 | port->altstatus_addr = |
701 | port->ctl_addr = (void __iomem *) | 702 | port->ctl_addr = (void __iomem *) |
702 | ((unsigned long)iomap[2 * i + 1] | ATA_PCI_CTL_OFS); | 703 | ((unsigned long)iomap[2 * i + 1] | ATA_PCI_CTL_OFS); |
703 | port->scr_addr = port_base + PORT_SCR; | 704 | port->scr_addr = iomap[MMIO_BAR] + offset + PORT_SCR; |
704 | 705 | ||
705 | ata_std_ports(port); | 706 | ata_std_ports(port); |
707 | |||
708 | ata_port_pbar_desc(ap, MMIO_BAR, -1, "mmio"); | ||
709 | ata_port_pbar_desc(ap, MMIO_BAR, offset, "port"); | ||
710 | ata_port_desc(ap, "cmd 0x%llx ctl 0x%llx", | ||
711 | (unsigned long long)pci_resource_start(pdev, 2 * i), | ||
712 | (unsigned long long)pci_resource_start(pdev, (2 * i + 1)) | | ||
713 | ATA_PCI_CTL_OFS); | ||
706 | } | 714 | } |
707 | 715 | ||
708 | hpriv->cached_hctl = readw(iomap[MMIO_BAR] + HOST_CTL); | 716 | hpriv->cached_hctl = readw(iomap[MMIO_BAR] + HOST_CTL); |