--- drivers/ata/sata_via.c.tejun 2007-02-16 19:16:40.000000000 +0800 +++ drivers/ata/sata_via.c 2007-02-16 19:23:45.000000000 +0800 @@ -406,18 +406,18 @@ static void vt6421_init_addrs(struct ata_probe_ent *probe_ent, void __iomem * const *iomap, unsigned int port) { void __iomem *reg_addr = iomap[port]; - void __iomem *bmdma_addr = iomap[4] + (port * 8); + struct ata_ioports *ata_ports = &probe_ent->port[port]; - probe_ent->port[port].cmd_addr = reg_addr; - probe_ent->port[port].altstatus_addr = - probe_ent->port[port].ctl_addr = (void __iomem *) + ata_ports->cmd_addr = reg_addr; + ata_ports->altstatus_addr = + ata_ports->ctl_addr = (void __iomem *) ((unsigned long)(reg_addr + 8) | ATA_PCI_CTL_OFS); - probe_ent->port[port].bmdma_addr = bmdma_addr; - probe_ent->port[port].scr_addr = vt6421_scr_addr(iomap[5], port); + ata_ports->bmdma_addr = iomap[4] + (port * 8); + ata_ports->scr_addr = vt6421_scr_addr(iomap[5], port); - ata_std_ports(&probe_ent->port[port]); + ata_std_ports(ata_ports); } static struct ata_probe_ent *vt6420_init_probe_ent(struct pci_dev *pdev) {