From: Vincent Sanders <vince@kyllikki.org>

The vga16fb driver uses a direct ioremap on 0xa00000 to gain access to the
vga card.  This is wrong on architectures other than x86, every other driver
uses VGA_MAP_MEM macro from vga.h to ensure the correct memory mapping.


---

 25-akpm/drivers/video/vga16fb.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

diff -puN drivers/video/vga16fb.c~vga16fb-mapping-fix drivers/video/vga16fb.c
--- 25/drivers/video/vga16fb.c~vga16fb-mapping-fix	2004-04-11 03:14:32.004577984 -0700
+++ 25-akpm/drivers/video/vga16fb.c	2004-04-11 03:14:32.009577224 -0700
@@ -1347,7 +1347,7 @@ int __init vga16fb_init(void)
 
 	/* XXX share VGA_FB_PHYS and I/O region with vgacon and others */
 
-        vga16fb.screen_base = ioremap(VGA_FB_PHYS, VGA_FB_PHYS_LEN);
+	vga16fb.screen_base = ioremap(VGA_MAP_MEM(VGA_FB_PHYS), VGA_FB_PHYS_LEN);
 	if (!vga16fb.screen_base) {
 		printk(KERN_ERR "vga16fb: unable to map device\n");
 		ret = -ENOMEM;
@@ -1372,6 +1372,8 @@ int __init vga16fb_init(void)
 	vga16fb.par = &vga16_par;
 	vga16fb.flags = FBINFO_FLAG_DEFAULT;
 
+	vga16fb.fix.smem_start	= VGA_MAP_MEM(vga16fb.fix.smem_start);
+
 	i = (vga16fb_defined.bits_per_pixel == 8) ? 256 : 16;
 	ret = fb_alloc_cmap(&vga16fb.cmap, i, 0);
 	if (ret) {

_