aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ide/ide-dma.c7
-rw-r--r--drivers/ide/pci/scc_pata.c3
-rw-r--r--include/linux/ide.h1
3 files changed, 4 insertions, 7 deletions
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index 767820db7ca..653b1ade13d 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -464,9 +464,10 @@ int ide_dma_setup(ide_drive_t *drive)
464 464
465 /* PRD table */ 465 /* PRD table */
466 if (hwif->mmio) 466 if (hwif->mmio)
467 writel(hwif->dmatable_dma, (void __iomem *)hwif->dma_prdtable); 467 writel(hwif->dmatable_dma,
468 (void __iomem *)(hwif->dma_base + ATA_DMA_TABLE_OFS));
468 else 469 else
469 outl(hwif->dmatable_dma, hwif->dma_prdtable); 470 outl(hwif->dmatable_dma, hwif->dma_base + ATA_DMA_TABLE_OFS);
470 471
471 /* specify r/w */ 472 /* specify r/w */
472 hwif->OUTB(reading, hwif->dma_command); 473 hwif->OUTB(reading, hwif->dma_command);
@@ -860,8 +861,6 @@ void ide_setup_dma(ide_hwif_t *hwif, unsigned long base)
860 hwif->dma_command = hwif->dma_base + 0; 861 hwif->dma_command = hwif->dma_base + 0;
861 if (!hwif->dma_status) 862 if (!hwif->dma_status)
862 hwif->dma_status = hwif->dma_base + 2; 863 hwif->dma_status = hwif->dma_base + 2;
863 if (!hwif->dma_prdtable)
864 hwif->dma_prdtable = hwif->dma_base + 4;
865 864
866 hwif->dma_ops = &sff_dma_ops; 865 hwif->dma_ops = &sff_dma_ops;
867} 866}
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c
index 14493818832..910fb00deb7 100644
--- a/drivers/ide/pci/scc_pata.c
+++ b/drivers/ide/pci/scc_pata.c
@@ -304,7 +304,7 @@ static int scc_dma_setup(ide_drive_t *drive)
304 } 304 }
305 305
306 /* PRD table */ 306 /* PRD table */
307 out_be32((void __iomem *)hwif->dma_prdtable, hwif->dmatable_dma); 307 out_be32((void __iomem *)(hwif->dma_base + 8), hwif->dmatable_dma);
308 308
309 /* specify r/w */ 309 /* specify r/w */
310 out_be32((void __iomem *)hwif->dma_command, reading); 310 out_be32((void __iomem *)hwif->dma_command, reading);
@@ -838,7 +838,6 @@ static void __devinit init_hwif_scc(ide_hwif_t *hwif)
838 838
839 hwif->dma_command = hwif->dma_base; 839 hwif->dma_command = hwif->dma_base;
840 hwif->dma_status = hwif->dma_base + 0x04; 840 hwif->dma_status = hwif->dma_base + 0x04;
841 hwif->dma_prdtable = hwif->dma_base + 0x08;
842 841
843 /* PTERADD */ 842 /* PTERADD */
844 out_be32((void __iomem *)(hwif->dma_base + 0x018), hwif->dmatable_dma); 843 out_be32((void __iomem *)(hwif->dma_base + 0x018), hwif->dmatable_dma);
diff --git a/include/linux/ide.h b/include/linux/ide.h
index d1d0111e48a..b0135b0c3a0 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -506,7 +506,6 @@ typedef struct hwif_s {
506 unsigned long dma_base; /* base addr for dma ports */ 506 unsigned long dma_base; /* base addr for dma ports */
507 unsigned long dma_command; /* dma command register */ 507 unsigned long dma_command; /* dma command register */
508 unsigned long dma_status; /* dma status register */ 508 unsigned long dma_status; /* dma status register */
509 unsigned long dma_prdtable; /* actual prd table address */
510 509
511 unsigned long config_data; /* for use by chipset-specific code */ 510 unsigned long config_data; /* for use by chipset-specific code */
512 unsigned long select_data; /* for use by chipset-specific code */ 511 unsigned long select_data; /* for use by chipset-specific code */