diff options
author | Jay Estabrook <jay.estabrook@hp.com> | 2007-06-01 03:47:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-06-01 11:18:29 -0400 |
commit | 025a22151c41890e5d30a1d4fb84c547b84d7671 (patch) | |
tree | 9effd8ca9ceed994a03d252d4a1d28fa07ae93a1 /arch/alpha/kernel/sys_dp264.c | |
parent | 8778beb981b7e5df3472b05475e4c7905dad1f3d (diff) |
ALPHA: support graphics on non-zero PCI domains
This code replaces earlier and incomplete handling of graphics on non-zero PCI
domains (aka hoses or peer PCI buses).
An option (CONFIG_VGA_HOSE) is set TRUE if configuring a GENERIC kernel, or a
kernel for MARVEL, TITAN, or TSUNAMI machines, as these are the machines whose
SRM consoles are capable of configuring and handling graphics options on
non-zero hoses. All other machines have the option set FALSE.
A routine, "find_console_vga_hose()", is used to find the graphics device
which the machine's firmware believes is the console device, and it sets a
global (pci_vga_hose) for later use in managing access to the device. This is
called in "init_arch" on TITAN and TSUNAMI machines; MARVEL machines use a
custom version of this routine because of extra complexity.
A routine, "locate_and_init_vga()", is used to find the graphics device and
set a global (pci_vga_hose) for later use in managing access to the device, in
the case where "find_console_vga_hose" has failed.
Various adjustments are made to the ioremap and ioportmap routines for
detecting and translating "legacy" VGA register and memory references to the
real PCI domain.
[akpm@linux-foundation.org: don't statically init bss]
[akpm@linux-foundation.org: build fix]
Signed-off-by: Jay Estabrook <jay.estabrook@hp.com>
Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/alpha/kernel/sys_dp264.c')
-rw-r--r-- | arch/alpha/kernel/sys_dp264.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c index 85d2f933dd07..c71b0fd7a61f 100644 --- a/arch/alpha/kernel/sys_dp264.c +++ b/arch/alpha/kernel/sys_dp264.c | |||
@@ -543,6 +543,7 @@ dp264_init_pci(void) | |||
543 | { | 543 | { |
544 | common_init_pci(); | 544 | common_init_pci(); |
545 | SMC669_Init(0); | 545 | SMC669_Init(0); |
546 | locate_and_init_vga(NULL); | ||
546 | } | 547 | } |
547 | 548 | ||
548 | static void __init | 549 | static void __init |
@@ -551,6 +552,14 @@ monet_init_pci(void) | |||
551 | common_init_pci(); | 552 | common_init_pci(); |
552 | SMC669_Init(1); | 553 | SMC669_Init(1); |
553 | es1888_init(); | 554 | es1888_init(); |
555 | locate_and_init_vga(NULL); | ||
556 | } | ||
557 | |||
558 | static void __init | ||
559 | clipper_init_pci(void) | ||
560 | { | ||
561 | common_init_pci(); | ||
562 | locate_and_init_vga(NULL); | ||
554 | } | 563 | } |
555 | 564 | ||
556 | static void __init | 565 | static void __init |
@@ -655,7 +664,7 @@ struct alpha_machine_vector clipper_mv __initmv = { | |||
655 | .init_arch = tsunami_init_arch, | 664 | .init_arch = tsunami_init_arch, |
656 | .init_irq = clipper_init_irq, | 665 | .init_irq = clipper_init_irq, |
657 | .init_rtc = common_init_rtc, | 666 | .init_rtc = common_init_rtc, |
658 | .init_pci = common_init_pci, | 667 | .init_pci = clipper_init_pci, |
659 | .kill_arch = tsunami_kill_arch, | 668 | .kill_arch = tsunami_kill_arch, |
660 | .pci_map_irq = clipper_map_irq, | 669 | .pci_map_irq = clipper_map_irq, |
661 | .pci_swizzle = common_swizzle, | 670 | .pci_swizzle = common_swizzle, |