summaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorSergei Shtylyov <sergei.shtylyov@cogentembedded.com>2013-05-27 18:43:23 -0400
committerTejun Heo <tj@kernel.org>2013-05-27 20:18:08 -0400
commit333279c82b984f3eac61feff2b76a8b79e3db6c8 (patch)
tree46b7cfd948671f77e729867c93e70c9ee125c6b3 /drivers/ata
parent5c23341ff66c9280c2e76dc9795cd14497ea780f (diff)
sata_rcar: kill superfluous code in sata_rcar_bmdma_fill_sg()
I've modified sata_rcar_bmdma_fill_sg() to take care of splitting long scatter/ gather segments due to the descriptor table transfer counter being only 28 bits wide (bit 1 to bit 28) but that was in vain as even if 'sata_rcar_sht' specified a correct 'dma_boundary' field, the DMA and block layers would have split the S/G segments on the necassary boundaries. Since the driver uses ATA_BMDMA_SHT() to initilaize 'sata_rcar_sht', the boundary is much smaller, only 0xFFFF, so the code I've added is even more useless, and it's better to just remove it. Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/sata_rcar.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/drivers/ata/sata_rcar.c b/drivers/ata/sata_rcar.c
index 889c25a6337e..629b07c452c5 100644
--- a/drivers/ata/sata_rcar.c
+++ b/drivers/ata/sata_rcar.c
@@ -474,11 +474,10 @@ static void sata_rcar_bmdma_fill_sg(struct ata_queued_cmd *qc)
474 struct ata_port *ap = qc->ap; 474 struct ata_port *ap = qc->ap;
475 struct ata_bmdma_prd *prd = ap->bmdma_prd; 475 struct ata_bmdma_prd *prd = ap->bmdma_prd;
476 struct scatterlist *sg; 476 struct scatterlist *sg;
477 unsigned int si, pi; 477 unsigned int si;
478 478
479 pi = 0;
480 for_each_sg(qc->sg, sg, qc->n_elem, si) { 479 for_each_sg(qc->sg, sg, qc->n_elem, si) {
481 u32 addr, sg_len, len; 480 u32 addr, sg_len;
482 481
483 /* 482 /*
484 * Note: h/w doesn't support 64-bit, so we unconditionally 483 * Note: h/w doesn't support 64-bit, so we unconditionally
@@ -487,24 +486,13 @@ static void sata_rcar_bmdma_fill_sg(struct ata_queued_cmd *qc)
487 addr = (u32)sg_dma_address(sg); 486 addr = (u32)sg_dma_address(sg);
488 sg_len = sg_dma_len(sg); 487 sg_len = sg_dma_len(sg);
489 488
490 /* H/w transfer count is only 29 bits long, let's be careful */ 489 prd[si].addr = cpu_to_le32(addr);
491 while (sg_len) { 490 prd[si].flags_len = cpu_to_le32(sg_len);
492 len = sg_len; 491 VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", si, addr, sg_len);
493 if (len > 0x1ffffffe)
494 len = 0x1ffffffe;
495
496 prd[pi].addr = cpu_to_le32(addr);
497 prd[pi].flags_len = cpu_to_le32(len);
498 VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", pi, addr, len);
499
500 pi++;
501 sg_len -= len;
502 addr += len;
503 }
504 } 492 }
505 493
506 /* end-of-table flag */ 494 /* end-of-table flag */
507 prd[pi - 1].addr |= cpu_to_le32(SATA_RCAR_DTEND); 495 prd[si - 1].addr |= cpu_to_le32(SATA_RCAR_DTEND);
508} 496}
509 497
510static void sata_rcar_qc_prep(struct ata_queued_cmd *qc) 498static void sata_rcar_qc_prep(struct ata_queued_cmd *qc)