diff options
Diffstat (limited to 'drivers/ata/ahci.c')
-rw-r--r-- | drivers/ata/ahci.c | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 813031c01fba..3f1106fdaed1 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -277,7 +277,7 @@ static const struct ata_port_info ahci_port_info[] = { | |||
277 | /* board_ahci */ | 277 | /* board_ahci */ |
278 | { | 278 | { |
279 | .sht = &ahci_sht, | 279 | .sht = &ahci_sht, |
280 | .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | | 280 | .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | |
281 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | | 281 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | |
282 | ATA_FLAG_SKIP_D2H_BSY, | 282 | ATA_FLAG_SKIP_D2H_BSY, |
283 | .pio_mask = 0x1f, /* pio0-4 */ | 283 | .pio_mask = 0x1f, /* pio0-4 */ |
@@ -287,7 +287,7 @@ static const struct ata_port_info ahci_port_info[] = { | |||
287 | /* board_ahci_vt8251 */ | 287 | /* board_ahci_vt8251 */ |
288 | { | 288 | { |
289 | .sht = &ahci_sht, | 289 | .sht = &ahci_sht, |
290 | .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | | 290 | .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | |
291 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | | 291 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | |
292 | ATA_FLAG_SKIP_D2H_BSY | | 292 | ATA_FLAG_SKIP_D2H_BSY | |
293 | AHCI_FLAG_RESET_NEEDS_CLO | AHCI_FLAG_NO_NCQ, | 293 | AHCI_FLAG_RESET_NEEDS_CLO | AHCI_FLAG_NO_NCQ, |
@@ -709,7 +709,7 @@ static void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, | |||
709 | static int ahci_clo(struct ata_port *ap) | 709 | static int ahci_clo(struct ata_port *ap) |
710 | { | 710 | { |
711 | void __iomem *port_mmio = (void __iomem *) ap->ioaddr.cmd_addr; | 711 | void __iomem *port_mmio = (void __iomem *) ap->ioaddr.cmd_addr; |
712 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 712 | struct ahci_host_priv *hpriv = ap->host->private_data; |
713 | u32 tmp; | 713 | u32 tmp; |
714 | 714 | ||
715 | if (!(hpriv->cap & HOST_CAP_CLO)) | 715 | if (!(hpriv->cap & HOST_CAP_CLO)) |
@@ -741,7 +741,7 @@ static int ahci_prereset(struct ata_port *ap) | |||
741 | static int ahci_softreset(struct ata_port *ap, unsigned int *class) | 741 | static int ahci_softreset(struct ata_port *ap, unsigned int *class) |
742 | { | 742 | { |
743 | struct ahci_port_priv *pp = ap->private_data; | 743 | struct ahci_port_priv *pp = ap->private_data; |
744 | void __iomem *mmio = ap->host_set->mmio_base; | 744 | void __iomem *mmio = ap->host->mmio_base; |
745 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 745 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
746 | const u32 cmd_fis_len = 5; /* five dwords */ | 746 | const u32 cmd_fis_len = 5; /* five dwords */ |
747 | const char *reason = NULL; | 747 | const char *reason = NULL; |
@@ -850,7 +850,7 @@ static int ahci_hardreset(struct ata_port *ap, unsigned int *class) | |||
850 | struct ahci_port_priv *pp = ap->private_data; | 850 | struct ahci_port_priv *pp = ap->private_data; |
851 | u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; | 851 | u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; |
852 | struct ata_taskfile tf; | 852 | struct ata_taskfile tf; |
853 | void __iomem *mmio = ap->host_set->mmio_base; | 853 | void __iomem *mmio = ap->host->mmio_base; |
854 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 854 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
855 | int rc; | 855 | int rc; |
856 | 856 | ||
@@ -1039,7 +1039,7 @@ static void ahci_error_intr(struct ata_port *ap, u32 irq_stat) | |||
1039 | 1039 | ||
1040 | static void ahci_host_intr(struct ata_port *ap) | 1040 | static void ahci_host_intr(struct ata_port *ap) |
1041 | { | 1041 | { |
1042 | void __iomem *mmio = ap->host_set->mmio_base; | 1042 | void __iomem *mmio = ap->host->mmio_base; |
1043 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1043 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1044 | struct ata_eh_info *ehi = &ap->eh_info; | 1044 | struct ata_eh_info *ehi = &ap->eh_info; |
1045 | u32 status, qc_active; | 1045 | u32 status, qc_active; |
@@ -1091,7 +1091,7 @@ static void ahci_irq_clear(struct ata_port *ap) | |||
1091 | 1091 | ||
1092 | static irqreturn_t ahci_interrupt(int irq, void *dev_instance, struct pt_regs *regs) | 1092 | static irqreturn_t ahci_interrupt(int irq, void *dev_instance, struct pt_regs *regs) |
1093 | { | 1093 | { |
1094 | struct ata_host_set *host_set = dev_instance; | 1094 | struct ata_host *host = dev_instance; |
1095 | struct ahci_host_priv *hpriv; | 1095 | struct ahci_host_priv *hpriv; |
1096 | unsigned int i, handled = 0; | 1096 | unsigned int i, handled = 0; |
1097 | void __iomem *mmio; | 1097 | void __iomem *mmio; |
@@ -1099,8 +1099,8 @@ static irqreturn_t ahci_interrupt(int irq, void *dev_instance, struct pt_regs *r | |||
1099 | 1099 | ||
1100 | VPRINTK("ENTER\n"); | 1100 | VPRINTK("ENTER\n"); |
1101 | 1101 | ||
1102 | hpriv = host_set->private_data; | 1102 | hpriv = host->private_data; |
1103 | mmio = host_set->mmio_base; | 1103 | mmio = host->mmio_base; |
1104 | 1104 | ||
1105 | /* sigh. 0xffffffff is a valid return from h/w */ | 1105 | /* sigh. 0xffffffff is a valid return from h/w */ |
1106 | irq_stat = readl(mmio + HOST_IRQ_STAT); | 1106 | irq_stat = readl(mmio + HOST_IRQ_STAT); |
@@ -1108,22 +1108,22 @@ static irqreturn_t ahci_interrupt(int irq, void *dev_instance, struct pt_regs *r | |||
1108 | if (!irq_stat) | 1108 | if (!irq_stat) |
1109 | return IRQ_NONE; | 1109 | return IRQ_NONE; |
1110 | 1110 | ||
1111 | spin_lock(&host_set->lock); | 1111 | spin_lock(&host->lock); |
1112 | 1112 | ||
1113 | for (i = 0; i < host_set->n_ports; i++) { | 1113 | for (i = 0; i < host->n_ports; i++) { |
1114 | struct ata_port *ap; | 1114 | struct ata_port *ap; |
1115 | 1115 | ||
1116 | if (!(irq_stat & (1 << i))) | 1116 | if (!(irq_stat & (1 << i))) |
1117 | continue; | 1117 | continue; |
1118 | 1118 | ||
1119 | ap = host_set->ports[i]; | 1119 | ap = host->ports[i]; |
1120 | if (ap) { | 1120 | if (ap) { |
1121 | ahci_host_intr(ap); | 1121 | ahci_host_intr(ap); |
1122 | VPRINTK("port %u\n", i); | 1122 | VPRINTK("port %u\n", i); |
1123 | } else { | 1123 | } else { |
1124 | VPRINTK("port %u (no irq)\n", i); | 1124 | VPRINTK("port %u (no irq)\n", i); |
1125 | if (ata_ratelimit()) | 1125 | if (ata_ratelimit()) |
1126 | dev_printk(KERN_WARNING, host_set->dev, | 1126 | dev_printk(KERN_WARNING, host->dev, |
1127 | "interrupt on disabled port %u\n", i); | 1127 | "interrupt on disabled port %u\n", i); |
1128 | } | 1128 | } |
1129 | 1129 | ||
@@ -1135,7 +1135,7 @@ static irqreturn_t ahci_interrupt(int irq, void *dev_instance, struct pt_regs *r | |||
1135 | handled = 1; | 1135 | handled = 1; |
1136 | } | 1136 | } |
1137 | 1137 | ||
1138 | spin_unlock(&host_set->lock); | 1138 | spin_unlock(&host->lock); |
1139 | 1139 | ||
1140 | VPRINTK("EXIT\n"); | 1140 | VPRINTK("EXIT\n"); |
1141 | 1141 | ||
@@ -1157,7 +1157,7 @@ static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc) | |||
1157 | 1157 | ||
1158 | static void ahci_freeze(struct ata_port *ap) | 1158 | static void ahci_freeze(struct ata_port *ap) |
1159 | { | 1159 | { |
1160 | void __iomem *mmio = ap->host_set->mmio_base; | 1160 | void __iomem *mmio = ap->host->mmio_base; |
1161 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1161 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1162 | 1162 | ||
1163 | /* turn IRQ off */ | 1163 | /* turn IRQ off */ |
@@ -1166,7 +1166,7 @@ static void ahci_freeze(struct ata_port *ap) | |||
1166 | 1166 | ||
1167 | static void ahci_thaw(struct ata_port *ap) | 1167 | static void ahci_thaw(struct ata_port *ap) |
1168 | { | 1168 | { |
1169 | void __iomem *mmio = ap->host_set->mmio_base; | 1169 | void __iomem *mmio = ap->host->mmio_base; |
1170 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1170 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1171 | u32 tmp; | 1171 | u32 tmp; |
1172 | 1172 | ||
@@ -1181,7 +1181,7 @@ static void ahci_thaw(struct ata_port *ap) | |||
1181 | 1181 | ||
1182 | static void ahci_error_handler(struct ata_port *ap) | 1182 | static void ahci_error_handler(struct ata_port *ap) |
1183 | { | 1183 | { |
1184 | void __iomem *mmio = ap->host_set->mmio_base; | 1184 | void __iomem *mmio = ap->host->mmio_base; |
1185 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1185 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1186 | 1186 | ||
1187 | if (!(ap->pflags & ATA_PFLAG_FROZEN)) { | 1187 | if (!(ap->pflags & ATA_PFLAG_FROZEN)) { |
@@ -1198,7 +1198,7 @@ static void ahci_error_handler(struct ata_port *ap) | |||
1198 | static void ahci_post_internal_cmd(struct ata_queued_cmd *qc) | 1198 | static void ahci_post_internal_cmd(struct ata_queued_cmd *qc) |
1199 | { | 1199 | { |
1200 | struct ata_port *ap = qc->ap; | 1200 | struct ata_port *ap = qc->ap; |
1201 | void __iomem *mmio = ap->host_set->mmio_base; | 1201 | void __iomem *mmio = ap->host->mmio_base; |
1202 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1202 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1203 | 1203 | ||
1204 | if (qc->flags & ATA_QCFLAG_FAILED) | 1204 | if (qc->flags & ATA_QCFLAG_FAILED) |
@@ -1213,9 +1213,9 @@ static void ahci_post_internal_cmd(struct ata_queued_cmd *qc) | |||
1213 | 1213 | ||
1214 | static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg) | 1214 | static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg) |
1215 | { | 1215 | { |
1216 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 1216 | struct ahci_host_priv *hpriv = ap->host->private_data; |
1217 | struct ahci_port_priv *pp = ap->private_data; | 1217 | struct ahci_port_priv *pp = ap->private_data; |
1218 | void __iomem *mmio = ap->host_set->mmio_base; | 1218 | void __iomem *mmio = ap->host->mmio_base; |
1219 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1219 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1220 | const char *emsg = NULL; | 1220 | const char *emsg = NULL; |
1221 | int rc; | 1221 | int rc; |
@@ -1233,8 +1233,8 @@ static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg) | |||
1233 | static int ahci_port_resume(struct ata_port *ap) | 1233 | static int ahci_port_resume(struct ata_port *ap) |
1234 | { | 1234 | { |
1235 | struct ahci_port_priv *pp = ap->private_data; | 1235 | struct ahci_port_priv *pp = ap->private_data; |
1236 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 1236 | struct ahci_host_priv *hpriv = ap->host->private_data; |
1237 | void __iomem *mmio = ap->host_set->mmio_base; | 1237 | void __iomem *mmio = ap->host->mmio_base; |
1238 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1238 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1239 | 1239 | ||
1240 | ahci_init_port(port_mmio, hpriv->cap, pp->cmd_slot_dma, pp->rx_fis_dma); | 1240 | ahci_init_port(port_mmio, hpriv->cap, pp->cmd_slot_dma, pp->rx_fis_dma); |
@@ -1244,8 +1244,8 @@ static int ahci_port_resume(struct ata_port *ap) | |||
1244 | 1244 | ||
1245 | static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg) | 1245 | static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg) |
1246 | { | 1246 | { |
1247 | struct ata_host_set *host_set = dev_get_drvdata(&pdev->dev); | 1247 | struct ata_host *host = dev_get_drvdata(&pdev->dev); |
1248 | void __iomem *mmio = host_set->mmio_base; | 1248 | void __iomem *mmio = host->mmio_base; |
1249 | u32 ctl; | 1249 | u32 ctl; |
1250 | 1250 | ||
1251 | if (mesg.event == PM_EVENT_SUSPEND) { | 1251 | if (mesg.event == PM_EVENT_SUSPEND) { |
@@ -1264,9 +1264,9 @@ static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg) | |||
1264 | 1264 | ||
1265 | static int ahci_pci_device_resume(struct pci_dev *pdev) | 1265 | static int ahci_pci_device_resume(struct pci_dev *pdev) |
1266 | { | 1266 | { |
1267 | struct ata_host_set *host_set = dev_get_drvdata(&pdev->dev); | 1267 | struct ata_host *host = dev_get_drvdata(&pdev->dev); |
1268 | struct ahci_host_priv *hpriv = host_set->private_data; | 1268 | struct ahci_host_priv *hpriv = host->private_data; |
1269 | void __iomem *mmio = host_set->mmio_base; | 1269 | void __iomem *mmio = host->mmio_base; |
1270 | int rc; | 1270 | int rc; |
1271 | 1271 | ||
1272 | ata_pci_device_do_resume(pdev); | 1272 | ata_pci_device_do_resume(pdev); |
@@ -1276,20 +1276,20 @@ static int ahci_pci_device_resume(struct pci_dev *pdev) | |||
1276 | if (rc) | 1276 | if (rc) |
1277 | return rc; | 1277 | return rc; |
1278 | 1278 | ||
1279 | ahci_init_controller(mmio, pdev, host_set->n_ports, hpriv->cap); | 1279 | ahci_init_controller(mmio, pdev, host->n_ports, hpriv->cap); |
1280 | } | 1280 | } |
1281 | 1281 | ||
1282 | ata_host_set_resume(host_set); | 1282 | ata_host_resume(host); |
1283 | 1283 | ||
1284 | return 0; | 1284 | return 0; |
1285 | } | 1285 | } |
1286 | 1286 | ||
1287 | static int ahci_port_start(struct ata_port *ap) | 1287 | static int ahci_port_start(struct ata_port *ap) |
1288 | { | 1288 | { |
1289 | struct device *dev = ap->host_set->dev; | 1289 | struct device *dev = ap->host->dev; |
1290 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 1290 | struct ahci_host_priv *hpriv = ap->host->private_data; |
1291 | struct ahci_port_priv *pp; | 1291 | struct ahci_port_priv *pp; |
1292 | void __iomem *mmio = ap->host_set->mmio_base; | 1292 | void __iomem *mmio = ap->host->mmio_base; |
1293 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1293 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1294 | void *mem; | 1294 | void *mem; |
1295 | dma_addr_t mem_dma; | 1295 | dma_addr_t mem_dma; |
@@ -1350,10 +1350,10 @@ static int ahci_port_start(struct ata_port *ap) | |||
1350 | 1350 | ||
1351 | static void ahci_port_stop(struct ata_port *ap) | 1351 | static void ahci_port_stop(struct ata_port *ap) |
1352 | { | 1352 | { |
1353 | struct device *dev = ap->host_set->dev; | 1353 | struct device *dev = ap->host->dev; |
1354 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 1354 | struct ahci_host_priv *hpriv = ap->host->private_data; |
1355 | struct ahci_port_priv *pp = ap->private_data; | 1355 | struct ahci_port_priv *pp = ap->private_data; |
1356 | void __iomem *mmio = ap->host_set->mmio_base; | 1356 | void __iomem *mmio = ap->host->mmio_base; |
1357 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); | 1357 | void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); |
1358 | const char *emsg = NULL; | 1358 | const char *emsg = NULL; |
1359 | int rc; | 1359 | int rc; |
@@ -1581,7 +1581,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1581 | memset(hpriv, 0, sizeof(*hpriv)); | 1581 | memset(hpriv, 0, sizeof(*hpriv)); |
1582 | 1582 | ||
1583 | probe_ent->sht = ahci_port_info[board_idx].sht; | 1583 | probe_ent->sht = ahci_port_info[board_idx].sht; |
1584 | probe_ent->host_flags = ahci_port_info[board_idx].host_flags; | 1584 | probe_ent->port_flags = ahci_port_info[board_idx].flags; |
1585 | probe_ent->pio_mask = ahci_port_info[board_idx].pio_mask; | 1585 | probe_ent->pio_mask = ahci_port_info[board_idx].pio_mask; |
1586 | probe_ent->udma_mask = ahci_port_info[board_idx].udma_mask; | 1586 | probe_ent->udma_mask = ahci_port_info[board_idx].udma_mask; |
1587 | probe_ent->port_ops = ahci_port_info[board_idx].port_ops; | 1587 | probe_ent->port_ops = ahci_port_info[board_idx].port_ops; |
@@ -1599,9 +1599,9 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1599 | if (rc) | 1599 | if (rc) |
1600 | goto err_out_hpriv; | 1600 | goto err_out_hpriv; |
1601 | 1601 | ||
1602 | if (!(probe_ent->host_flags & AHCI_FLAG_NO_NCQ) && | 1602 | if (!(probe_ent->port_flags & AHCI_FLAG_NO_NCQ) && |
1603 | (hpriv->cap & HOST_CAP_NCQ)) | 1603 | (hpriv->cap & HOST_CAP_NCQ)) |
1604 | probe_ent->host_flags |= ATA_FLAG_NCQ; | 1604 | probe_ent->port_flags |= ATA_FLAG_NCQ; |
1605 | 1605 | ||
1606 | ahci_print_info(probe_ent); | 1606 | ahci_print_info(probe_ent); |
1607 | 1607 | ||
@@ -1632,27 +1632,27 @@ err_out: | |||
1632 | static void ahci_remove_one (struct pci_dev *pdev) | 1632 | static void ahci_remove_one (struct pci_dev *pdev) |
1633 | { | 1633 | { |
1634 | struct device *dev = pci_dev_to_dev(pdev); | 1634 | struct device *dev = pci_dev_to_dev(pdev); |
1635 | struct ata_host_set *host_set = dev_get_drvdata(dev); | 1635 | struct ata_host *host = dev_get_drvdata(dev); |
1636 | struct ahci_host_priv *hpriv = host_set->private_data; | 1636 | struct ahci_host_priv *hpriv = host->private_data; |
1637 | unsigned int i; | 1637 | unsigned int i; |
1638 | int have_msi; | 1638 | int have_msi; |
1639 | 1639 | ||
1640 | for (i = 0; i < host_set->n_ports; i++) | 1640 | for (i = 0; i < host->n_ports; i++) |
1641 | ata_port_detach(host_set->ports[i]); | 1641 | ata_port_detach(host->ports[i]); |
1642 | 1642 | ||
1643 | have_msi = hpriv->flags & AHCI_FLAG_MSI; | 1643 | have_msi = hpriv->flags & AHCI_FLAG_MSI; |
1644 | free_irq(host_set->irq, host_set); | 1644 | free_irq(host->irq, host); |
1645 | 1645 | ||
1646 | for (i = 0; i < host_set->n_ports; i++) { | 1646 | for (i = 0; i < host->n_ports; i++) { |
1647 | struct ata_port *ap = host_set->ports[i]; | 1647 | struct ata_port *ap = host->ports[i]; |
1648 | 1648 | ||
1649 | ata_scsi_release(ap->host); | 1649 | ata_scsi_release(ap->scsi_host); |
1650 | scsi_host_put(ap->host); | 1650 | scsi_host_put(ap->scsi_host); |
1651 | } | 1651 | } |
1652 | 1652 | ||
1653 | kfree(hpriv); | 1653 | kfree(hpriv); |
1654 | pci_iounmap(pdev, host_set->mmio_base); | 1654 | pci_iounmap(pdev, host->mmio_base); |
1655 | kfree(host_set); | 1655 | kfree(host); |
1656 | 1656 | ||
1657 | if (have_msi) | 1657 | if (have_msi) |
1658 | pci_disable_msi(pdev); | 1658 | pci_disable_msi(pdev); |