Loading drivers/ata/ahci.c +21 −8 Original line number Original line Diff line number Diff line Loading @@ -229,6 +229,9 @@ static void ahci_error_handler(struct ata_port *ap); static void ahci_vt8251_error_handler(struct ata_port *ap); static void ahci_vt8251_error_handler(struct ata_port *ap); static void ahci_post_internal_cmd(struct ata_queued_cmd *qc); static void ahci_post_internal_cmd(struct ata_queued_cmd *qc); static int ahci_port_resume(struct ata_port *ap); static int ahci_port_resume(struct ata_port *ap); static unsigned int ahci_fill_sg(struct ata_queued_cmd *qc, void *cmd_tbl); static void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, u32 opts); #ifdef CONFIG_PM #ifdef CONFIG_PM static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg); static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg); static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg); static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg); Loading Loading @@ -481,11 +484,17 @@ static inline int ahci_nr_ports(u32 cap) return (cap & 0x1f) + 1; return (cap & 0x1f) + 1; } } static inline void __iomem *ahci_port_base(struct ata_port *ap) static inline void __iomem *__ahci_port_base(struct ata_host *host, unsigned int port_no) { { void __iomem *mmio = ap->host->iomap[AHCI_PCI_BAR]; void __iomem *mmio = host->iomap[AHCI_PCI_BAR]; return mmio + 0x100 + (ap->port_no * 0x80); return mmio + 0x100 + (port_no * 0x80); } static inline void __iomem *ahci_port_base(struct ata_port *ap) { return __ahci_port_base(ap->host, ap->port_no); } } /** /** Loading Loading @@ -1750,14 +1759,18 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) host->private_data = hpriv; host->private_data = hpriv; for (i = 0; i < host->n_ports; i++) { for (i = 0; i < host->n_ports; i++) { if (hpriv->port_map & (1 << i)) { struct ata_port *ap = host->ports[i]; struct ata_port *ap = host->ports[i]; void __iomem *port_mmio = ahci_port_base(ap); void __iomem *port_mmio = ahci_port_base(ap); /* standard SATA port setup */ if (hpriv->port_map & (1 << i)) { ap->ioaddr.cmd_addr = port_mmio; ap->ioaddr.cmd_addr = port_mmio; ap->ioaddr.scr_addr = port_mmio + PORT_SCR; ap->ioaddr.scr_addr = port_mmio + PORT_SCR; } else } host->ports[i]->ops = &ata_dummy_port_ops; /* disabled/not-implemented port */ else ap->ops = &ata_dummy_port_ops; } } /* initialize adapter */ /* initialize adapter */ Loading Loading
drivers/ata/ahci.c +21 −8 Original line number Original line Diff line number Diff line Loading @@ -229,6 +229,9 @@ static void ahci_error_handler(struct ata_port *ap); static void ahci_vt8251_error_handler(struct ata_port *ap); static void ahci_vt8251_error_handler(struct ata_port *ap); static void ahci_post_internal_cmd(struct ata_queued_cmd *qc); static void ahci_post_internal_cmd(struct ata_queued_cmd *qc); static int ahci_port_resume(struct ata_port *ap); static int ahci_port_resume(struct ata_port *ap); static unsigned int ahci_fill_sg(struct ata_queued_cmd *qc, void *cmd_tbl); static void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, u32 opts); #ifdef CONFIG_PM #ifdef CONFIG_PM static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg); static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg); static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg); static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg); Loading Loading @@ -481,11 +484,17 @@ static inline int ahci_nr_ports(u32 cap) return (cap & 0x1f) + 1; return (cap & 0x1f) + 1; } } static inline void __iomem *ahci_port_base(struct ata_port *ap) static inline void __iomem *__ahci_port_base(struct ata_host *host, unsigned int port_no) { { void __iomem *mmio = ap->host->iomap[AHCI_PCI_BAR]; void __iomem *mmio = host->iomap[AHCI_PCI_BAR]; return mmio + 0x100 + (ap->port_no * 0x80); return mmio + 0x100 + (port_no * 0x80); } static inline void __iomem *ahci_port_base(struct ata_port *ap) { return __ahci_port_base(ap->host, ap->port_no); } } /** /** Loading Loading @@ -1750,14 +1759,18 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) host->private_data = hpriv; host->private_data = hpriv; for (i = 0; i < host->n_ports; i++) { for (i = 0; i < host->n_ports; i++) { if (hpriv->port_map & (1 << i)) { struct ata_port *ap = host->ports[i]; struct ata_port *ap = host->ports[i]; void __iomem *port_mmio = ahci_port_base(ap); void __iomem *port_mmio = ahci_port_base(ap); /* standard SATA port setup */ if (hpriv->port_map & (1 << i)) { ap->ioaddr.cmd_addr = port_mmio; ap->ioaddr.cmd_addr = port_mmio; ap->ioaddr.scr_addr = port_mmio + PORT_SCR; ap->ioaddr.scr_addr = port_mmio + PORT_SCR; } else } host->ports[i]->ops = &ata_dummy_port_ops; /* disabled/not-implemented port */ else ap->ops = &ata_dummy_port_ops; } } /* initialize adapter */ /* initialize adapter */ Loading