[PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use

VGA_MAP_MEM translates to ioremap() on some architectures.  It makes sense
to do this to vga_vram_base, because we're going to access memory between
vga_vram_base and vga_vram_end.

But it doesn't really make sense to map starting at vga_vram_end, because
we aren't going to access memory starting there.  On ia64, which always has
to be different, ioremapping vga_vram_end gives you something completely
incompatible with ioremapped vga_vram_start, so vga_vram_size ends up being
nonsense.

As a bonus, we often know the size up front, so we can use ioremap()
correctly, rather than giving it a zero size.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Bjorn Helgaas 2006-06-22 14:47:32 -07:00 коммит произвёл Linus Torvalds
Родитель d702ccb342
Коммит 4f1bcaf094
13 изменённых файлов: 22 добавлений и 23 удалений

Просмотреть файл

@ -313,8 +313,8 @@ static const char __init *mdacon_startup(void)
mda_num_columns = 80; mda_num_columns = 80;
mda_num_lines = 25; mda_num_lines = 25;
mda_vram_base = VGA_MAP_MEM(0xb0000);
mda_vram_len = 0x01000; mda_vram_len = 0x01000;
mda_vram_base = VGA_MAP_MEM(0xb0000, mda_vram_len);
mda_index_port = 0x3b4; mda_index_port = 0x3b4;
mda_value_port = 0x3b5; mda_value_port = 0x3b5;

Просмотреть файл

@ -391,7 +391,7 @@ static const char __init *vgacon_startup(void)
static struct resource ega_console_resource = static struct resource ega_console_resource =
{ "ega", 0x3B0, 0x3BF }; { "ega", 0x3B0, 0x3BF };
vga_video_type = VIDEO_TYPE_EGAM; vga_video_type = VIDEO_TYPE_EGAM;
vga_vram_end = 0xb8000; vga_vram_size = 0x8000;
display_desc = "EGA+"; display_desc = "EGA+";
request_resource(&ioport_resource, request_resource(&ioport_resource,
&ega_console_resource); &ega_console_resource);
@ -401,7 +401,7 @@ static const char __init *vgacon_startup(void)
static struct resource mda2_console_resource = static struct resource mda2_console_resource =
{ "mda", 0x3BF, 0x3BF }; { "mda", 0x3BF, 0x3BF };
vga_video_type = VIDEO_TYPE_MDA; vga_video_type = VIDEO_TYPE_MDA;
vga_vram_end = 0xb2000; vga_vram_size = 0x2000;
display_desc = "*MDA"; display_desc = "*MDA";
request_resource(&ioport_resource, request_resource(&ioport_resource,
&mda1_console_resource); &mda1_console_resource);
@ -418,7 +418,7 @@ static const char __init *vgacon_startup(void)
if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10) { if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10) {
int i; int i;
vga_vram_end = 0xc0000; vga_vram_size = 0x8000;
if (!ORIG_VIDEO_ISVGA) { if (!ORIG_VIDEO_ISVGA) {
static struct resource ega_console_resource static struct resource ega_console_resource
@ -443,7 +443,7 @@ static const char __init *vgacon_startup(void)
* and COE=1 isn't necessarily a good idea) * and COE=1 isn't necessarily a good idea)
*/ */
vga_vram_base = 0xa0000; vga_vram_base = 0xa0000;
vga_vram_end = 0xb0000; vga_vram_size = 0x10000;
outb_p(6, VGA_GFX_I); outb_p(6, VGA_GFX_I);
outb_p(6, VGA_GFX_D); outb_p(6, VGA_GFX_D);
#endif #endif
@ -475,7 +475,7 @@ static const char __init *vgacon_startup(void)
static struct resource cga_console_resource = static struct resource cga_console_resource =
{ "cga", 0x3D4, 0x3D5 }; { "cga", 0x3D4, 0x3D5 };
vga_video_type = VIDEO_TYPE_CGA; vga_video_type = VIDEO_TYPE_CGA;
vga_vram_end = 0xba000; vga_vram_size = 0x2000;
display_desc = "*CGA"; display_desc = "*CGA";
request_resource(&ioport_resource, request_resource(&ioport_resource,
&cga_console_resource); &cga_console_resource);
@ -483,9 +483,8 @@ static const char __init *vgacon_startup(void)
} }
} }
vga_vram_base = VGA_MAP_MEM(vga_vram_base); vga_vram_base = VGA_MAP_MEM(vga_vram_base, vga_vram_size);
vga_vram_end = VGA_MAP_MEM(vga_vram_end); vga_vram_end = vga_vram_base + vga_vram_size;
vga_vram_size = vga_vram_end - vga_vram_base;
/* /*
* Find out if there is a graphics card present. * Find out if there is a graphics card present.
@ -1020,14 +1019,14 @@ static int vgacon_do_font_op(struct vgastate *state,char *arg,int set,int ch512)
char *charmap; char *charmap;
if (vga_video_type != VIDEO_TYPE_EGAM) { if (vga_video_type != VIDEO_TYPE_EGAM) {
charmap = (char *) VGA_MAP_MEM(colourmap); charmap = (char *) VGA_MAP_MEM(colourmap, 0);
beg = 0x0e; beg = 0x0e;
#ifdef VGA_CAN_DO_64KB #ifdef VGA_CAN_DO_64KB
if (vga_video_type == VIDEO_TYPE_VGAC) if (vga_video_type == VIDEO_TYPE_VGAC)
beg = 0x06; beg = 0x06;
#endif #endif
} else { } else {
charmap = (char *) VGA_MAP_MEM(blackwmap); charmap = (char *) VGA_MAP_MEM(blackwmap, 0);
beg = 0x0a; beg = 0x0a;
} }

Просмотреть файл

@ -1351,7 +1351,7 @@ static int __init vga16fb_probe(struct device *device)
} }
/* XXX share VGA_FB_PHYS and I/O region with vgacon and others */ /* XXX share VGA_FB_PHYS and I/O region with vgacon and others */
info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS); info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS, 0);
if (!info->screen_base) { if (!info->screen_base) {
printk(KERN_ERR "vga16fb: unable to map device\n"); printk(KERN_ERR "vga16fb: unable to map device\n");

Просмотреть файл

@ -46,6 +46,6 @@ extern void scr_memcpyw(u16 *d, const u16 *s, unsigned int count);
#define vga_readb(a) readb((u8 __iomem *)(a)) #define vga_readb(a) readb((u8 __iomem *)(a))
#define vga_writeb(v,a) writeb(v, (u8 __iomem *)(a)) #define vga_writeb(v,a) writeb(v, (u8 __iomem *)(a))
#define VGA_MAP_MEM(x) ((unsigned long) ioremap(x, 0)) #define VGA_MAP_MEM(x,s) ((unsigned long) ioremap(x, s))
#endif #endif

Просмотреть файл

@ -4,7 +4,7 @@
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/io.h> #include <asm/io.h>
#define VGA_MAP_MEM(x) (PCIMEM_BASE + (x)) #define VGA_MAP_MEM(x,s) (PCIMEM_BASE + (x))
#define vga_readb(x) (*((volatile unsigned char *)x)) #define vga_readb(x) (*((volatile unsigned char *)x))
#define vga_writeb(x,y) (*((volatile unsigned char *)y) = (x)) #define vga_writeb(x,y) (*((volatile unsigned char *)y) = (x))

Просмотреть файл

@ -12,7 +12,7 @@
* access the videoram directly without any black magic. * access the videoram directly without any black magic.
*/ */
#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) #define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x)
#define vga_readb(x) (*(x)) #define vga_readb(x) (*(x))
#define vga_writeb(x,y) (*(y) = (x)) #define vga_writeb(x,y) (*(y) = (x))

Просмотреть файл

@ -17,7 +17,7 @@
extern unsigned long vga_console_iobase; extern unsigned long vga_console_iobase;
extern unsigned long vga_console_membase; extern unsigned long vga_console_membase;
#define VGA_MAP_MEM(x) ((unsigned long) ioremap_nocache(vga_console_membase + (x), 0)) #define VGA_MAP_MEM(x,s) ((unsigned long) ioremap_nocache(vga_console_membase + (x), s))
#define vga_readb(x) (*(x)) #define vga_readb(x) (*(x))
#define vga_writeb(x,y) (*(y) = (x)) #define vga_writeb(x,y) (*(y) = (x))

Просмотреть файл

@ -14,7 +14,7 @@
* access the videoram directly without any black magic. * access the videoram directly without any black magic.
*/ */
#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) #define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x)
#define vga_readb(x) (*(x)) #define vga_readb(x) (*(x))
#define vga_writeb(x,y) (*(y) = (x)) #define vga_writeb(x,y) (*(y) = (x))

Просмотреть файл

@ -13,7 +13,7 @@
* access the videoram directly without any black magic. * access the videoram directly without any black magic.
*/ */
#define VGA_MAP_MEM(x) (0xb0000000L + (unsigned long)(x)) #define VGA_MAP_MEM(x,s) (0xb0000000L + (unsigned long)(x))
#define vga_readb(x) (*(x)) #define vga_readb(x) (*(x))
#define vga_writeb(x,y) (*(y) = (x)) #define vga_writeb(x,y) (*(y) = (x))

Просмотреть файл

@ -41,9 +41,9 @@ static inline u16 scr_readw(volatile const u16 *addr)
extern unsigned long vgacon_remap_base; extern unsigned long vgacon_remap_base;
#ifdef __powerpc64__ #ifdef __powerpc64__
#define VGA_MAP_MEM(x) ((unsigned long) ioremap((x), 0)) #define VGA_MAP_MEM(x,s) ((unsigned long) ioremap((x), s))
#else #else
#define VGA_MAP_MEM(x) (x + vgacon_remap_base) #define VGA_MAP_MEM(x,s) (x + vgacon_remap_base)
#endif #endif
#define vga_readb(x) (*(x)) #define vga_readb(x) (*(x))

Просмотреть файл

@ -28,6 +28,6 @@ static inline u16 scr_readw(const u16 *addr)
return *addr; return *addr;
} }
#define VGA_MAP_MEM(x) (x) #define VGA_MAP_MEM(x,s) (x)
#endif #endif

Просмотреть файл

@ -12,7 +12,7 @@
* access the videoram directly without any black magic. * access the videoram directly without any black magic.
*/ */
#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) #define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x)
#define vga_readb(x) (*(x)) #define vga_readb(x) (*(x))
#define vga_writeb(x,y) (*(y) = (x)) #define vga_writeb(x,y) (*(y) = (x))

Просмотреть файл

@ -11,7 +11,7 @@
#ifndef _XTENSA_VGA_H #ifndef _XTENSA_VGA_H
#define _XTENSA_VGA_H #define _XTENSA_VGA_H
#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) #define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x)
#define vga_readb(x) (*(x)) #define vga_readb(x) (*(x))
#define vga_writeb(x,y) (*(y) = (x)) #define vga_writeb(x,y) (*(y) = (x))