static struct ata_probe_ent *vt6420_init_probe_ent(struct pci_dev *pdev) { struct ata_probe_ent *probe_ent; struct ata_port_info *ppi = &svia_port_info; probe_ent = ata_pci_init_native_mode(pdev, &ppi); if (!probe_ent) return NULL; probe_ent->port[0].scr_addr = svia_scr_addr(pci_resource_start(pdev, 5), 0); probe_ent->port[1].scr_addr = svia_scr_addr(pci_resource_start(pdev, 5), 1); return probe_ent; }
static int vt6420_prepare_host(struct pci_dev *pdev, struct ata_host **r_host) { const struct ata_port_info *ppi[] = { &vt6420_port_info, NULL }; struct ata_host *host; int rc; rc = ata_pci_sff_prepare_host(pdev, ppi, &host); if (rc) return rc; *r_host = host; rc = pcim_iomap_regions(pdev, 1 << 5, DRV_NAME); if (rc) { dev_printk(KERN_ERR, &pdev->dev, "failed to iomap PCI BAR 5\n"); return rc; } host->ports[0]->ioaddr.scr_addr = svia_scr_addr(host->iomap[5], 0); host->ports[1]->ioaddr.scr_addr = svia_scr_addr(host->iomap[5], 1); return 0; }
static struct ata_probe_ent *vt6420_init_probe_ent(struct pci_dev *pdev) { struct ata_probe_ent *probe_ent; struct ata_port_info *ppi[2]; void __iomem *bar5; ppi[0] = ppi[1] = &vt6420_port_info; probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); if (!probe_ent) return NULL; bar5 = pcim_iomap(pdev, 5, 0); if (!bar5) { dev_printk(KERN_ERR, &pdev->dev, "failed to iomap PCI BAR 5\n"); return NULL; } probe_ent->port[0].scr_addr = svia_scr_addr(bar5, 0); probe_ent->port[1].scr_addr = svia_scr_addr(bar5, 1); return probe_ent; }