aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/sata_inic162x.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-08-18 00:14:55 -0400
committerJeff Garzik <jeff@garzik.org>2007-10-12 14:55:37 -0400
commitcbcdd87593a1d85c5c4b259945a3a09eee12814d (patch)
treeee03df963a12ec7f30f6c3a8742421daf2c34f50 /drivers/ata/sata_inic162x.c
parente923090ddd9fef1d4e06dc6c5295e29baced19f3 (diff)
libata: implement and use ata_port_desc() to report port configuration
Currently, port configuration reporting has the following problems. * iomapped address is reported instead of raw address * report contains irrelevant fields or lacks necessary fields for non-SFF controllers. * host->irq/irq2 are there just for reporting and hacky. This patch implements and uses ata_port_desc() and ata_port_pbar_desc(). ata_port_desc() is almost identical to ata_ehi_push_desc() except that it takes @ap instead of @ehi, has no locking requirement, can only be used during host initialization and " " is used as separator instead of ", ". ata_port_pbar_desc() is a helper to ease reporting of a PCI BAR or an offsetted address into it. LLD pushes whatever description it wants using the above two functions. The accumulated description is printed on host registration after "[S/P]ATA max MAX_XFERMODE ". SFF init helpers and ata_host_activate() automatically add descriptions for addresses and irq respectively, so only LLDs which isn't standard SFF need to add custom descriptions. In many cases, such controllers need to report different things anyway. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/sata_inic162x.c')
-rw-r--r--drivers/ata/sata_inic162x.c14
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);