diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ata/libata-sff.c | 27 | ||||
-rw-r--r-- | drivers/ata/pata_ns87415.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_scc.c | 4 | ||||
-rw-r--r-- | drivers/ata/sata_nv.c | 4 | ||||
-rw-r--r-- | drivers/ata/sata_promise.c | 21 | ||||
-rw-r--r-- | drivers/ata/sata_sil.c | 6 | ||||
-rw-r--r-- | drivers/ata/sata_svw.c | 2 |
7 files changed, 35 insertions, 31 deletions
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index a58693bdde9d..6f52b598b8d2 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
@@ -2650,6 +2650,7 @@ EXPORT_SYMBOL_GPL(ata_bmdma32_port_ops); | |||
2650 | static void ata_bmdma_fill_sg(struct ata_queued_cmd *qc) | 2650 | static void ata_bmdma_fill_sg(struct ata_queued_cmd *qc) |
2651 | { | 2651 | { |
2652 | struct ata_port *ap = qc->ap; | 2652 | struct ata_port *ap = qc->ap; |
2653 | struct ata_bmdma_prd *prd = ap->bmdma_prd; | ||
2653 | struct scatterlist *sg; | 2654 | struct scatterlist *sg; |
2654 | unsigned int si, pi; | 2655 | unsigned int si, pi; |
2655 | 2656 | ||
@@ -2671,8 +2672,8 @@ static void ata_bmdma_fill_sg(struct ata_queued_cmd *qc) | |||
2671 | if ((offset + sg_len) > 0x10000) | 2672 | if ((offset + sg_len) > 0x10000) |
2672 | len = 0x10000 - offset; | 2673 | len = 0x10000 - offset; |
2673 | 2674 | ||
2674 | ap->prd[pi].addr = cpu_to_le32(addr); | 2675 | prd[pi].addr = cpu_to_le32(addr); |
2675 | ap->prd[pi].flags_len = cpu_to_le32(len & 0xffff); | 2676 | prd[pi].flags_len = cpu_to_le32(len & 0xffff); |
2676 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", pi, addr, len); | 2677 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", pi, addr, len); |
2677 | 2678 | ||
2678 | pi++; | 2679 | pi++; |
@@ -2681,7 +2682,7 @@ static void ata_bmdma_fill_sg(struct ata_queued_cmd *qc) | |||
2681 | } | 2682 | } |
2682 | } | 2683 | } |
2683 | 2684 | ||
2684 | ap->prd[pi - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT); | 2685 | prd[pi - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT); |
2685 | } | 2686 | } |
2686 | 2687 | ||
2687 | /** | 2688 | /** |
@@ -2700,6 +2701,7 @@ static void ata_bmdma_fill_sg(struct ata_queued_cmd *qc) | |||
2700 | static void ata_bmdma_fill_sg_dumb(struct ata_queued_cmd *qc) | 2701 | static void ata_bmdma_fill_sg_dumb(struct ata_queued_cmd *qc) |
2701 | { | 2702 | { |
2702 | struct ata_port *ap = qc->ap; | 2703 | struct ata_port *ap = qc->ap; |
2704 | struct ata_bmdma_prd *prd = ap->bmdma_prd; | ||
2703 | struct scatterlist *sg; | 2705 | struct scatterlist *sg; |
2704 | unsigned int si, pi; | 2706 | unsigned int si, pi; |
2705 | 2707 | ||
@@ -2722,16 +2724,16 @@ static void ata_bmdma_fill_sg_dumb(struct ata_queued_cmd *qc) | |||
2722 | len = 0x10000 - offset; | 2724 | len = 0x10000 - offset; |
2723 | 2725 | ||
2724 | blen = len & 0xffff; | 2726 | blen = len & 0xffff; |
2725 | ap->prd[pi].addr = cpu_to_le32(addr); | 2727 | prd[pi].addr = cpu_to_le32(addr); |
2726 | if (blen == 0) { | 2728 | if (blen == 0) { |
2727 | /* Some PATA chipsets like the CS5530 can't | 2729 | /* Some PATA chipsets like the CS5530 can't |
2728 | cope with 0x0000 meaning 64K as the spec | 2730 | cope with 0x0000 meaning 64K as the spec |
2729 | says */ | 2731 | says */ |
2730 | ap->prd[pi].flags_len = cpu_to_le32(0x8000); | 2732 | prd[pi].flags_len = cpu_to_le32(0x8000); |
2731 | blen = 0x8000; | 2733 | blen = 0x8000; |
2732 | ap->prd[++pi].addr = cpu_to_le32(addr + 0x8000); | 2734 | prd[++pi].addr = cpu_to_le32(addr + 0x8000); |
2733 | } | 2735 | } |
2734 | ap->prd[pi].flags_len = cpu_to_le32(blen); | 2736 | prd[pi].flags_len = cpu_to_le32(blen); |
2735 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", pi, addr, len); | 2737 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", pi, addr, len); |
2736 | 2738 | ||
2737 | pi++; | 2739 | pi++; |
@@ -2740,7 +2742,7 @@ static void ata_bmdma_fill_sg_dumb(struct ata_queued_cmd *qc) | |||
2740 | } | 2742 | } |
2741 | } | 2743 | } |
2742 | 2744 | ||
2743 | ap->prd[pi - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT); | 2745 | prd[pi - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT); |
2744 | } | 2746 | } |
2745 | 2747 | ||
2746 | /** | 2748 | /** |
@@ -2872,7 +2874,7 @@ void ata_bmdma_setup(struct ata_queued_cmd *qc) | |||
2872 | 2874 | ||
2873 | /* load PRD table addr. */ | 2875 | /* load PRD table addr. */ |
2874 | mb(); /* make sure PRD table writes are visible to controller */ | 2876 | mb(); /* make sure PRD table writes are visible to controller */ |
2875 | iowrite32(ap->prd_dma, ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS); | 2877 | iowrite32(ap->bmdma_prd_dma, ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS); |
2876 | 2878 | ||
2877 | /* specify data direction, triple-check start bit is clear */ | 2879 | /* specify data direction, triple-check start bit is clear */ |
2878 | dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); | 2880 | dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); |
@@ -2977,9 +2979,10 @@ EXPORT_SYMBOL_GPL(ata_bmdma_status); | |||
2977 | int ata_bmdma_port_start(struct ata_port *ap) | 2979 | int ata_bmdma_port_start(struct ata_port *ap) |
2978 | { | 2980 | { |
2979 | if (ap->mwdma_mask || ap->udma_mask) { | 2981 | if (ap->mwdma_mask || ap->udma_mask) { |
2980 | ap->prd = dmam_alloc_coherent(ap->host->dev, ATA_PRD_TBL_SZ, | 2982 | ap->bmdma_prd = |
2981 | &ap->prd_dma, GFP_KERNEL); | 2983 | dmam_alloc_coherent(ap->host->dev, ATA_PRD_TBL_SZ, |
2982 | if (!ap->prd) | 2984 | &ap->bmdma_prd_dma, GFP_KERNEL); |
2985 | if (!ap->bmdma_prd) | ||
2983 | return -ENOMEM; | 2986 | return -ENOMEM; |
2984 | } | 2987 | } |
2985 | 2988 | ||
diff --git a/drivers/ata/pata_ns87415.c b/drivers/ata/pata_ns87415.c index 830431f036a1..fdbba2d76d3e 100644 --- a/drivers/ata/pata_ns87415.c +++ b/drivers/ata/pata_ns87415.c | |||
@@ -126,7 +126,7 @@ static void ns87415_bmdma_setup(struct ata_queued_cmd *qc) | |||
126 | 126 | ||
127 | /* load PRD table addr. */ | 127 | /* load PRD table addr. */ |
128 | mb(); /* make sure PRD table writes are visible to controller */ | 128 | mb(); /* make sure PRD table writes are visible to controller */ |
129 | iowrite32(ap->prd_dma, ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS); | 129 | iowrite32(ap->bmdma_prd_dma, ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS); |
130 | 130 | ||
131 | /* specify data direction, triple-check start bit is clear */ | 131 | /* specify data direction, triple-check start bit is clear */ |
132 | dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); | 132 | dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); |
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c index 93f690e51a79..6f6193b707cb 100644 --- a/drivers/ata/pata_scc.c +++ b/drivers/ata/pata_scc.c | |||
@@ -441,7 +441,7 @@ static void scc_bmdma_setup (struct ata_queued_cmd *qc) | |||
441 | void __iomem *mmio = ap->ioaddr.bmdma_addr; | 441 | void __iomem *mmio = ap->ioaddr.bmdma_addr; |
442 | 442 | ||
443 | /* load PRD table addr */ | 443 | /* load PRD table addr */ |
444 | out_be32(mmio + SCC_DMA_TABLE_OFS, ap->prd_dma); | 444 | out_be32(mmio + SCC_DMA_TABLE_OFS, ap->bmdma_prd_dma); |
445 | 445 | ||
446 | /* specify data direction, triple-check start bit is clear */ | 446 | /* specify data direction, triple-check start bit is clear */ |
447 | dmactl = in_be32(mmio + SCC_DMA_CMD); | 447 | dmactl = in_be32(mmio + SCC_DMA_CMD); |
@@ -905,7 +905,7 @@ static int scc_port_start (struct ata_port *ap) | |||
905 | if (rc) | 905 | if (rc) |
906 | return rc; | 906 | return rc; |
907 | 907 | ||
908 | out_be32(mmio + SCC_DMA_PTERADD, ap->prd_dma); | 908 | out_be32(mmio + SCC_DMA_PTERADD, ap->bmdma_prd_dma); |
909 | return 0; | 909 | return 0; |
910 | } | 910 | } |
911 | 911 | ||
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index 7a283d5d68f3..4863a62c3d8c 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c | |||
@@ -272,7 +272,7 @@ enum ncq_saw_flag_list { | |||
272 | }; | 272 | }; |
273 | 273 | ||
274 | struct nv_swncq_port_priv { | 274 | struct nv_swncq_port_priv { |
275 | struct ata_prd *prd; /* our SG list */ | 275 | struct ata_bmdma_prd *prd; /* our SG list */ |
276 | dma_addr_t prd_dma; /* and its DMA mapping */ | 276 | dma_addr_t prd_dma; /* and its DMA mapping */ |
277 | void __iomem *sactive_block; | 277 | void __iomem *sactive_block; |
278 | void __iomem *irq_block; | 278 | void __iomem *irq_block; |
@@ -2027,7 +2027,7 @@ static void nv_swncq_fill_sg(struct ata_queued_cmd *qc) | |||
2027 | struct ata_port *ap = qc->ap; | 2027 | struct ata_port *ap = qc->ap; |
2028 | struct scatterlist *sg; | 2028 | struct scatterlist *sg; |
2029 | struct nv_swncq_port_priv *pp = ap->private_data; | 2029 | struct nv_swncq_port_priv *pp = ap->private_data; |
2030 | struct ata_prd *prd; | 2030 | struct ata_bmdma_prd *prd; |
2031 | unsigned int si, idx; | 2031 | unsigned int si, idx; |
2032 | 2032 | ||
2033 | prd = pp->prd + ATA_MAX_PRD * qc->tag; | 2033 | prd = pp->prd + ATA_MAX_PRD * qc->tag; |
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c index 09a6179f5de3..f03ad48273ff 100644 --- a/drivers/ata/sata_promise.c +++ b/drivers/ata/sata_promise.c | |||
@@ -500,7 +500,7 @@ static int pdc_sata_scr_write(struct ata_link *link, | |||
500 | static void pdc_atapi_pkt(struct ata_queued_cmd *qc) | 500 | static void pdc_atapi_pkt(struct ata_queued_cmd *qc) |
501 | { | 501 | { |
502 | struct ata_port *ap = qc->ap; | 502 | struct ata_port *ap = qc->ap; |
503 | dma_addr_t sg_table = ap->prd_dma; | 503 | dma_addr_t sg_table = ap->bmdma_prd_dma; |
504 | unsigned int cdb_len = qc->dev->cdb_len; | 504 | unsigned int cdb_len = qc->dev->cdb_len; |
505 | u8 *cdb = qc->cdb; | 505 | u8 *cdb = qc->cdb; |
506 | struct pdc_port_priv *pp = ap->private_data; | 506 | struct pdc_port_priv *pp = ap->private_data; |
@@ -588,6 +588,7 @@ static void pdc_atapi_pkt(struct ata_queued_cmd *qc) | |||
588 | static void pdc_fill_sg(struct ata_queued_cmd *qc) | 588 | static void pdc_fill_sg(struct ata_queued_cmd *qc) |
589 | { | 589 | { |
590 | struct ata_port *ap = qc->ap; | 590 | struct ata_port *ap = qc->ap; |
591 | struct ata_bmdma_prd *prd = ap->bmdma_prd; | ||
591 | struct scatterlist *sg; | 592 | struct scatterlist *sg; |
592 | const u32 SG_COUNT_ASIC_BUG = 41*4; | 593 | const u32 SG_COUNT_ASIC_BUG = 41*4; |
593 | unsigned int si, idx; | 594 | unsigned int si, idx; |
@@ -614,8 +615,8 @@ static void pdc_fill_sg(struct ata_queued_cmd *qc) | |||
614 | if ((offset + sg_len) > 0x10000) | 615 | if ((offset + sg_len) > 0x10000) |
615 | len = 0x10000 - offset; | 616 | len = 0x10000 - offset; |
616 | 617 | ||
617 | ap->prd[idx].addr = cpu_to_le32(addr); | 618 | prd[idx].addr = cpu_to_le32(addr); |
618 | ap->prd[idx].flags_len = cpu_to_le32(len & 0xffff); | 619 | prd[idx].flags_len = cpu_to_le32(len & 0xffff); |
619 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len); | 620 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len); |
620 | 621 | ||
621 | idx++; | 622 | idx++; |
@@ -624,27 +625,27 @@ static void pdc_fill_sg(struct ata_queued_cmd *qc) | |||
624 | } | 625 | } |
625 | } | 626 | } |
626 | 627 | ||
627 | len = le32_to_cpu(ap->prd[idx - 1].flags_len); | 628 | len = le32_to_cpu(prd[idx - 1].flags_len); |
628 | 629 | ||
629 | if (len > SG_COUNT_ASIC_BUG) { | 630 | if (len > SG_COUNT_ASIC_BUG) { |
630 | u32 addr; | 631 | u32 addr; |
631 | 632 | ||
632 | VPRINTK("Splitting last PRD.\n"); | 633 | VPRINTK("Splitting last PRD.\n"); |
633 | 634 | ||
634 | addr = le32_to_cpu(ap->prd[idx - 1].addr); | 635 | addr = le32_to_cpu(prd[idx - 1].addr); |
635 | ap->prd[idx - 1].flags_len = cpu_to_le32(len - SG_COUNT_ASIC_BUG); | 636 | prd[idx - 1].flags_len = cpu_to_le32(len - SG_COUNT_ASIC_BUG); |
636 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx - 1, addr, SG_COUNT_ASIC_BUG); | 637 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx - 1, addr, SG_COUNT_ASIC_BUG); |
637 | 638 | ||
638 | addr = addr + len - SG_COUNT_ASIC_BUG; | 639 | addr = addr + len - SG_COUNT_ASIC_BUG; |
639 | len = SG_COUNT_ASIC_BUG; | 640 | len = SG_COUNT_ASIC_BUG; |
640 | ap->prd[idx].addr = cpu_to_le32(addr); | 641 | prd[idx].addr = cpu_to_le32(addr); |
641 | ap->prd[idx].flags_len = cpu_to_le32(len); | 642 | prd[idx].flags_len = cpu_to_le32(len); |
642 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len); | 643 | VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len); |
643 | 644 | ||
644 | idx++; | 645 | idx++; |
645 | } | 646 | } |
646 | 647 | ||
647 | ap->prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT); | 648 | prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT); |
648 | } | 649 | } |
649 | 650 | ||
650 | static void pdc_qc_prep(struct ata_queued_cmd *qc) | 651 | static void pdc_qc_prep(struct ata_queued_cmd *qc) |
@@ -659,7 +660,7 @@ static void pdc_qc_prep(struct ata_queued_cmd *qc) | |||
659 | pdc_fill_sg(qc); | 660 | pdc_fill_sg(qc); |
660 | /*FALLTHROUGH*/ | 661 | /*FALLTHROUGH*/ |
661 | case ATA_PROT_NODATA: | 662 | case ATA_PROT_NODATA: |
662 | i = pdc_pkt_header(&qc->tf, qc->ap->prd_dma, | 663 | i = pdc_pkt_header(&qc->tf, qc->ap->bmdma_prd_dma, |
663 | qc->dev->devno, pp->pkt); | 664 | qc->dev->devno, pp->pkt); |
664 | if (qc->tf.flags & ATA_TFLAG_LBA48) | 665 | if (qc->tf.flags & ATA_TFLAG_LBA48) |
665 | i = pdc_prep_lba48(&qc->tf, pp->pkt, i); | 666 | i = pdc_prep_lba48(&qc->tf, pp->pkt, i); |
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c index 9c367f71c627..2dda312b6b9a 100644 --- a/drivers/ata/sata_sil.c +++ b/drivers/ata/sata_sil.c | |||
@@ -284,7 +284,7 @@ static void sil_bmdma_setup(struct ata_queued_cmd *qc) | |||
284 | void __iomem *bmdma = ap->ioaddr.bmdma_addr; | 284 | void __iomem *bmdma = ap->ioaddr.bmdma_addr; |
285 | 285 | ||
286 | /* load PRD table addr. */ | 286 | /* load PRD table addr. */ |
287 | iowrite32(ap->prd_dma, bmdma + ATA_DMA_TABLE_OFS); | 287 | iowrite32(ap->bmdma_prd_dma, bmdma + ATA_DMA_TABLE_OFS); |
288 | 288 | ||
289 | /* issue r/w command */ | 289 | /* issue r/w command */ |
290 | ap->ops->sff_exec_command(ap, &qc->tf); | 290 | ap->ops->sff_exec_command(ap, &qc->tf); |
@@ -311,10 +311,10 @@ static void sil_fill_sg(struct ata_queued_cmd *qc) | |||
311 | { | 311 | { |
312 | struct scatterlist *sg; | 312 | struct scatterlist *sg; |
313 | struct ata_port *ap = qc->ap; | 313 | struct ata_port *ap = qc->ap; |
314 | struct ata_prd *prd, *last_prd = NULL; | 314 | struct ata_bmdma_prd *prd, *last_prd = NULL; |
315 | unsigned int si; | 315 | unsigned int si; |
316 | 316 | ||
317 | prd = &ap->prd[0]; | 317 | prd = &ap->bmdma_prd[0]; |
318 | for_each_sg(qc->sg, sg, qc->n_elem, si) { | 318 | for_each_sg(qc->sg, sg, qc->n_elem, si) { |
319 | /* Note h/w doesn't support 64-bit, so we unconditionally | 319 | /* Note h/w doesn't support 64-bit, so we unconditionally |
320 | * truncate dma_addr_t to u32. | 320 | * truncate dma_addr_t to u32. |
diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata_svw.c index 7257f2d5c52c..101fd6a19829 100644 --- a/drivers/ata/sata_svw.c +++ b/drivers/ata/sata_svw.c | |||
@@ -224,7 +224,7 @@ static void k2_bmdma_setup_mmio(struct ata_queued_cmd *qc) | |||
224 | 224 | ||
225 | /* load PRD table addr. */ | 225 | /* load PRD table addr. */ |
226 | mb(); /* make sure PRD table writes are visible to controller */ | 226 | mb(); /* make sure PRD table writes are visible to controller */ |
227 | writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS); | 227 | writel(ap->bmdma_prd_dma, mmio + ATA_DMA_TABLE_OFS); |
228 | 228 | ||
229 | /* specify data direction, triple-check start bit is clear */ | 229 | /* specify data direction, triple-check start bit is clear */ |
230 | dmactl = readb(mmio + ATA_DMA_CMD); | 230 | dmactl = readb(mmio + ATA_DMA_CMD); |