* [PATCH] ide-pmac: use ide_tune_dma() (take 2)
@ 2007-08-04 20:04 Bartlomiej Zolnierkiewicz
0 siblings, 0 replies; only message in thread
From: Bartlomiej Zolnierkiewicz @ 2007-08-04 20:04 UTC (permalink / raw)
To: linux-ide; +Cc: Benjamin Herrenschmidt
* Add missing initialization of hwif->autodma and drive->autodma to
pmac_ide_setup_dma().
* Use ide_tune_dma() in pmac_ide_dma_check().
While at it:
* Fix pmac_ide_dma_check() return value if DMA mode is not programmed
(should be "-1" otherwise ide_set_dma() will try to enable DMA).
* Remove unnecessary drive->using_dma fiddling (->dma_off_quietly is always
called before ide_set_dma() call and ide_set_dma() calls ->ide_dma_on if
->ide_dma_check returns "0").
v2:
* No reason to blacklist all ide_floppy devices and the old code was always
enabling DMA anyway (without even programming controller/device if the
device was ide_floppy).
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
Ben, any update on the testing status of ide-pmac series?
I also merged your patch to my tree but it is lacking description:
http://kernel.org/pub/linux/kernel/people/bart/pata-2.6/patches/ide-pmac-fix-pio-setup-and-enable-autotune.patch
Thanks, Bart.
drivers/ide/ppc/pmac.c | 24 +++++++-----------------
1 file changed, 7 insertions(+), 17 deletions(-)
Index: b/drivers/ide/ppc/pmac.c
===================================================================
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -1592,23 +1592,10 @@ pmac_ide_destroy_dmatable (ide_drive_t *
static int
pmac_ide_dma_check(ide_drive_t *drive)
{
- int enable = 1;
- drive->using_dma = 0;
-
- if (drive->media == ide_floppy)
- enable = 0;
- if ((drive->id->capability & 1) == 0 && !__ide_dma_good_drive(drive))
- enable = 0;
- if (__ide_dma_bad_drive(drive))
- enable = 0;
-
- if (enable) {
- u8 mode = ide_max_dma_mode(drive);
+ if (ide_tune_dma(drive))
+ return 0;
- if (mode && pmac_ide_tune_chipset(drive, mode) == 0)
- drive->using_dma = 1;
- }
- return 0;
+ return -1;
}
/*
@@ -1842,7 +1829,10 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif
hwif->mwdma_mask = 0x07;
hwif->swdma_mask = 0x00;
break;
- }
+ }
+
+ hwif->autodma = 1;
+ hwif->drives[1].autodma = hwif->drives[0].autodma = hwif->autodma;
}
#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-08-04 20:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-04 20:04 [PATCH] ide-pmac: use ide_tune_dma() (take 2) Bartlomiej Zolnierkiewicz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.