diff options
author | Olaf Hering <olaf@aepfle.de> | 2006-10-01 02:27:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-01 03:39:23 -0400 |
commit | 30cbc22217bb3d5d4c74c88127fbf595460bdb76 (patch) | |
tree | eab298c63f4dcf4ecd35f753da2e5ccf394a7718 /arch | |
parent | c69c31270c35a6b8421a8e4ba81de1247ac6df95 (diff) |
[PATCH] update legacy io handling for pmac
ppc can boot one single binary on prep, chrp and pmac boards. ppc64 can
boot one single binary on pseries and G5 boards. pmac has no legacy io,
probing for PC style legacy hardware (or accessing the legacy io area
regulary) may lead to a hard crash:
* add check for parport_pc, exit on pmac. 32bit chrp has no
->check_legacy_ioport, the probe is always called. 64bit chrp has
check_legacy_ioport, check for a "parallel" node
* add check for isapnp, only PReP boards may have real ISA slots. 32bit
PReP will have no ->check_legacy_ioport, the probe is always called.
* update code in i8042_platform_init. Run ->check_legacy_ioport first,
always call request_region. No functional change. Remove whitespace
before i8042_reset init.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Adam Belay <ambx1@neo.rr.com>
Cc: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/platforms/pseries/setup.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index a6398fbe530d..8ed362140452 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -415,6 +415,12 @@ static int pSeries_check_legacy_ioport(unsigned int baseport) | |||
415 | return -ENODEV; | 415 | return -ENODEV; |
416 | of_node_put(np); | 416 | of_node_put(np); |
417 | break; | 417 | break; |
418 | case PARALLEL_BASE: | ||
419 | np = of_find_node_by_type(NULL, "parallel"); | ||
420 | if (np == NULL) | ||
421 | return -ENODEV; | ||
422 | of_node_put(np); | ||
423 | break; | ||
418 | } | 424 | } |
419 | return 0; | 425 | return 0; |
420 | } | 426 | } |