summaryrefslogtreecommitdiffstats
path: root/drivers/char/vga.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/vga.c')
-rw-r--r--drivers/char/vga.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/char/vga.c b/drivers/char/vga.c
index afce24c98..c3fee1ae7 100644
--- a/drivers/char/vga.c
+++ b/drivers/char/vga.c
@@ -84,6 +84,12 @@ unsigned long video_port_base;
#define dac_reg (0x3c8)
#define dac_val (0x3c9)
+#ifdef __powerpc__
+#define VGA_OFFSET 0xC0000000;
+#else
+#define VGA_OFFSET 0x0
+#endif
+
/*
* By replacing the four outb_p with two back to back outw, we can reduce
* the window of opportunity to see text mislocated to the RHS of the
@@ -241,20 +247,20 @@ con_type_init(unsigned long kmem_start, const char **display_desc))
#endif
if (ORIG_VIDEO_MODE == 7) /* Is this a monochrome display? */
{
- video_mem_base = 0xb0000;
+ video_mem_base = 0xb0000 + VGA_OFFSET;
video_port_reg = 0x3b4;
video_port_val = 0x3b5;
if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10)
{
video_type = VIDEO_TYPE_EGAM;
- video_mem_term = 0xb8000;
+ video_mem_term = 0xb8000 + VGA_OFFSET;
*display_desc = "EGA+";
request_region(0x3b0,16,"ega");
}
else
{
video_type = VIDEO_TYPE_MDA;
- video_mem_term = 0xb2000;
+ video_mem_term = 0xb2000 + VGA_OFFSET;
*display_desc = "*MDA";
request_region(0x3b0,12,"mda");
request_region(0x3bf, 1,"mda");
@@ -263,14 +269,14 @@ con_type_init(unsigned long kmem_start, const char **display_desc))
else /* If not, it is color. */
{
can_do_color = 1;
- video_mem_term = 0xb8000;
+ video_mem_term = 0xb8000 + VGA_OFFSET;
video_port_reg = 0x3d4;
video_port_val = 0x3d5;
if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10)
{
int i ;
- video_mem_term = 0xc0000;
+ video_mem_term = 0xc0000 + VGA_OFFSET;
if (!ORIG_VIDEO_ISVGA) {
video_type = VIDEO_TYPE_EGAC;
@@ -288,8 +294,8 @@ con_type_init(unsigned long kmem_start, const char **display_desc))
* controllers (it seems like setting MM=01
* and COE=1 isn't necessarily a good idea)
*/
- video_mem_base = 0xa0000;
- video_mem_term = 0xb0000;
+ video_mem_base = 0xa0000 + VGA_OFFSET;
+ video_mem_term = 0xb0000 + VGA_OFFSET;
outb_p (6, 0x3ce) ;
outb_p (6, 0x3cf) ;
#endif
@@ -321,7 +327,7 @@ con_type_init(unsigned long kmem_start, const char **display_desc))
else
{
video_type = VIDEO_TYPE_CGA;
- video_mem_term = 0xba000;
+ video_mem_term = 0xba000 + VGA_OFFSET;
*display_desc = "*CGA";
request_region(0x3d4,2,"cga");
}