diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-10-13 15:39:47 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-10-13 15:39:47 -0400 |
commit | 2bbd57cad3d72334c9fcc4e229a5a5b04dc6aebc (patch) | |
tree | c0866cb7b4a3e12d11179c65d86e2ba012db5002 /drivers/ide/mips/au1xxx-ide.c | |
parent | ffa15a6915b7f6f6f69b4a66e1100a9c68d11250 (diff) |
ide: switch to DMA-mapping API part #2
Follow-up to commit 5c05ff68b9a9b40a9be949497e0aa980185565cf
("ide: switch to DMA-mapping API"):
* pci_{alloc,free}_consistent() -> dma_{alloc,free}_coherent()
in ide_{allocate,release}_dma_engine().
* Add ->prd_max_nents and ->prd_ent_size fields to ide_hwif_t
(+ set default values in ide_allocate_dma_engine()).
* Make ide_{allocate,release}_dma_engine() available also
for CONFIG_BLK_DEV_IDEDMA_SFF=n. Then convert au1xxx-ide.c,
scc_pata.c and sgiioc4.c to use them.
* Add missing ->init_dma method to scc_pata.
This patch also fixes:
- ->dmatable_cpu leak for au1xxx-ide
- too early realease of ->dmatable_cpu for scc_pata
- wrong amount of ->dmatable_cpu memory being freed for sgiioc4
While at it:
- remove superfluous ->dma_base check from ide_unregister()
- return -ENOMEM on error in ide_release_dma_engine()
- beautify error message in ide_release_dma_engine()
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/mips/au1xxx-ide.c')
-rw-r--r-- | drivers/ide/mips/au1xxx-ide.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index f9e88cfec827..0ec8fd1e4dcb 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
@@ -427,10 +427,9 @@ static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d) | |||
427 | NUM_DESCRIPTORS); | 427 | NUM_DESCRIPTORS); |
428 | auide->rx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->rx_chan, | 428 | auide->rx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->rx_chan, |
429 | NUM_DESCRIPTORS); | 429 | NUM_DESCRIPTORS); |
430 | 430 | ||
431 | hwif->dmatable_cpu = dma_alloc_coherent(hwif->dev, | 431 | /* FIXME: check return value */ |
432 | PRD_ENTRIES * PRD_BYTES, /* 1 Page */ | 432 | (void)ide_allocate_dma_engine(hwif); |
433 | &hwif->dmatable_dma, GFP_KERNEL); | ||
434 | 433 | ||
435 | au1xxx_dbdma_start( auide->tx_chan ); | 434 | au1xxx_dbdma_start( auide->tx_chan ); |
436 | au1xxx_dbdma_start( auide->rx_chan ); | 435 | au1xxx_dbdma_start( auide->rx_chan ); |