aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/mips/au1xxx-ide.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/mips/au1xxx-ide.c')
-rw-r--r--drivers/ide/mips/au1xxx-ide.c34
1 files changed, 6 insertions, 28 deletions
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c
index 11b7f61aae40..0ec8fd1e4dcb 100644
--- a/drivers/ide/mips/au1xxx-ide.c
+++ b/drivers/ide/mips/au1xxx-ide.c
@@ -322,11 +322,7 @@ static int auide_dma_setup(ide_drive_t *drive)
322} 322}
323 323
324static int auide_dma_test_irq(ide_drive_t *drive) 324static int auide_dma_test_irq(ide_drive_t *drive)
325{ 325{
326 if (drive->waiting_for_dma == 0)
327 printk(KERN_WARNING "%s: ide_dma_test_irq \
328 called while not waiting\n", drive->name);
329
330 /* If dbdma didn't execute the STOP command yet, the 326 /* If dbdma didn't execute the STOP command yet, the
331 * active bit is still set 327 * active bit is still set
332 */ 328 */
@@ -344,11 +340,6 @@ static void auide_dma_host_set(ide_drive_t *drive, int on)
344{ 340{
345} 341}
346 342
347static void auide_dma_lost_irq(ide_drive_t *drive)
348{
349 printk(KERN_ERR "%s: IRQ lost\n", drive->name);
350}
351
352static void auide_ddma_tx_callback(int irq, void *param) 343static void auide_ddma_tx_callback(int irq, void *param)
353{ 344{
354 _auide_hwif *ahwif = (_auide_hwif*)param; 345 _auide_hwif *ahwif = (_auide_hwif*)param;
@@ -375,18 +366,6 @@ static void auide_init_dbdma_dev(dbdev_tab_t *dev, u32 dev_id, u32 tsize, u32 de
375} 366}
376 367
377#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA 368#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
378static void auide_dma_timeout(ide_drive_t *drive)
379{
380 ide_hwif_t *hwif = HWIF(drive);
381
382 printk(KERN_ERR "%s: DMA timeout occurred: ", drive->name);
383
384 if (auide_dma_test_irq(drive))
385 return;
386
387 auide_dma_end(drive);
388}
389
390static const struct ide_dma_ops au1xxx_dma_ops = { 369static const struct ide_dma_ops au1xxx_dma_ops = {
391 .dma_host_set = auide_dma_host_set, 370 .dma_host_set = auide_dma_host_set,
392 .dma_setup = auide_dma_setup, 371 .dma_setup = auide_dma_setup,
@@ -394,8 +373,8 @@ static const struct ide_dma_ops au1xxx_dma_ops = {
394 .dma_start = auide_dma_start, 373 .dma_start = auide_dma_start,
395 .dma_end = auide_dma_end, 374 .dma_end = auide_dma_end,
396 .dma_test_irq = auide_dma_test_irq, 375 .dma_test_irq = auide_dma_test_irq,
397 .dma_lost_irq = auide_dma_lost_irq, 376 .dma_lost_irq = ide_dma_lost_irq,
398 .dma_timeout = auide_dma_timeout, 377 .dma_timeout = ide_dma_timeout,
399}; 378};
400 379
401static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d) 380static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
@@ -448,10 +427,9 @@ static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
448 NUM_DESCRIPTORS); 427 NUM_DESCRIPTORS);
449 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,
450 NUM_DESCRIPTORS); 429 NUM_DESCRIPTORS);
451 430
452 hwif->dmatable_cpu = dma_alloc_coherent(hwif->dev, 431 /* FIXME: check return value */
453 PRD_ENTRIES * PRD_BYTES, /* 1 Page */ 432 (void)ide_allocate_dma_engine(hwif);
454 &hwif->dmatable_dma, GFP_KERNEL);
455 433
456 au1xxx_dbdma_start( auide->tx_chan ); 434 au1xxx_dbdma_start( auide->tx_chan );
457 au1xxx_dbdma_start( auide->rx_chan ); 435 au1xxx_dbdma_start( auide->rx_chan );