Commit 079f11ed authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Linus Torvalds

[PATCH] ppc32: Fix via IDE driver for pegasos

The Pegasos machines have the VIA IDE controller configured in a strange
way by the firmware.  It claims to be fully native, but is actually routed
to legacy irqs 14 and 15.

This patch works around that in the driver.  In the future, I'll try to do
an ifdef-less patch by detecting that setup from the chip, and using the
new pci_get_legacy_ide_irq() in that case, but I don't have proper HW
infos.  This patch is good enough in the meantime, I'll come up with a
better one later eventually.
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 5e296d1d
......@@ -36,6 +36,10 @@
#include <linux/ide.h>
#include <asm/io.h>
#ifdef CONFIG_PPC_MULTIPLATFORM
#include <asm/processor.h>
#endif
#include "ide-timing.h"
#define DISPLAY_VIA_TIMINGS
......@@ -584,6 +588,13 @@ static void __init init_hwif_via82cxxx(ide_hwif_t *hwif)
hwif->tuneproc = &via82cxxx_tune_drive;
hwif->speedproc = &via_set_drive;
#ifdef CONFIG_PPC_MULTIPLATFORM
if(_machine == _MACH_chrp && _chrp_type == _CHRP_Pegasos) {
hwif->irq = hwif->channel ? 15 : 14;
}
#endif
for (i = 0; i < 2; i++) {
hwif->drives[i].io_32bit = 1;
hwif->drives[i].unmask = (via_config->flags & VIA_NO_UNMASK) ? 0 : 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment