[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:
Родитель
d702ccb342
Коммит
4f1bcaf094
|
@ -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))
|
||||||
|
|
Загрузка…
Ссылка в новой задаче