mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen: infrastructure to have cross-platform video drivers
- introduce a new HAS_VIDEO config variable; - build xen/drivers/video/font* if HAS_VIDEO; - rename vga_puts to video_puts; - rename vga_init to video_init; - rename vga_endboot to video_endboot. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org> Committed-by: Ian Campbell <ian.campbell@citrix.com>
This commit is contained in:
1 parent
22bf8a6c14
commit
9f0443bafb
10 files changed
+48
-28
No files matched your search
@@ -7,6 +7,7 @@
|
||||
#
|
||||
|
||||
HAS_DEVICE_TREE := y
|
||||
HAS_VIDEO := y
|
||||
|
||||
CFLAGS += -fno-builtin -fno-common -Wredundant-decls
|
||||
CFLAGS += -iwithprefix include -Werror -Wno-pointer-arith -pipe
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
HAS_ACPI := y
|
||||
HAS_VGA := y
|
||||
HAS_VIDEO := y
|
||||
HAS_CPUFREQ := y
|
||||
HAS_PCI := y
|
||||
HAS_PASSTHROUGH := y
|
||||
|
||||
@@ -3,4 +3,4 @@ subdir-$(HAS_CPUFREQ) += cpufreq
|
||||
subdir-$(HAS_PCI) += pci
|
||||
subdir-$(HAS_PASSTHROUGH) += passthrough
|
||||
subdir-$(HAS_ACPI) += acpi
|
||||
subdir-$(HAS_VGA) += video
|
||||
subdir-$(HAS_VIDEO) += video
|
||||
@@ -21,7 +21,7 @@
|
||||
#include <xen/delay.h>
|
||||
#include <xen/guest_access.h>
|
||||
#include <xen/shutdown.h>
|
||||
#include <xen/vga.h>
|
||||
#include <xen/video.h>
|
||||
#include <xen/kexec.h>
|
||||
#include <asm/debugger.h>
|
||||
#include <asm/div64.h>
|
||||
@@ -297,7 +297,7 @@ static void dump_console_ring_key(unsigned char key)
|
||||
buf[sofar] = '\0';
|
||||
|
||||
sercon_puts(buf);
|
||||
vga_puts(buf);
|
||||
video_puts(buf);
|
||||
|
||||
free_xenheap_pages(buf, order);
|
||||
}
|
||||
@@ -383,7 +383,7 @@ static long guest_console_write(XEN_GUEST_HANDLE_PARAM(char) buffer, int count)
|
||||
spin_lock_irq(&console_lock);
|
||||
|
||||
sercon_puts(kbuf);
|
||||
vga_puts(kbuf);
|
||||
video_puts(kbuf);
|
||||
|
||||
if ( opt_console_to_ring )
|
||||
{
|
||||
@@ -458,7 +458,7 @@ static void __putstr(const char *str)
|
||||
ASSERT(spin_is_locked(&console_lock));
|
||||
|
||||
sercon_puts(str);
|
||||
vga_puts(str);
|
||||
video_puts(str);
|
||||
|
||||
if ( !console_locks_busted )
|
||||
{
|
||||
@@ -586,7 +586,7 @@ void __init console_init_preirq(void)
|
||||
if ( *p == ',' )
|
||||
p++;
|
||||
if ( !strncmp(p, "vga", 3) )
|
||||
vga_init();
|
||||
video_init();
|
||||
else if ( !strncmp(p, "none", 4) )
|
||||
continue;
|
||||
else if ( (sh = serial_parse_handle(p)) >= 0 )
|
||||
@@ -688,7 +688,7 @@ void __init console_endboot(void)
|
||||
printk("\n");
|
||||
}
|
||||
|
||||
vga_endboot();
|
||||
video_endboot();
|
||||
|
||||
/*
|
||||
* If user specifies so, we fool the switch routine to redirect input
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
obj-y := vga.o
|
||||
obj-$(CONFIG_X86) += font_8x14.o
|
||||
obj-$(CONFIG_X86) += font_8x16.o
|
||||
obj-$(CONFIG_X86) += font_8x8.o
|
||||
obj-$(CONFIG_X86) += vesa.o
|
||||
obj-$(HAS_VGA) := vga.o
|
||||
obj-$(HAS_VIDEO) += font_8x14.o
|
||||
obj-$(HAS_VIDEO) += font_8x16.o
|
||||
obj-$(HAS_VIDEO) += font_8x8.o
|
||||
obj-$(HAS_VGA) += vesa.o
|
||||
@@ -108,7 +108,7 @@ void __init vesa_init(void)
|
||||
|
||||
memset(lfb, 0, vram_remap);
|
||||
|
||||
vga_puts = vesa_redraw_puts;
|
||||
video_puts = vesa_redraw_puts;
|
||||
|
||||
printk(XENLOG_INFO "vesafb: framebuffer at %#x, mapped to 0x%p, "
|
||||
"using %uk, total %uk\n",
|
||||
@@ -193,7 +193,7 @@ void __init vesa_endboot(bool_t keep)
|
||||
if ( keep )
|
||||
{
|
||||
xpos = 0;
|
||||
vga_puts = vesa_scroll_puts;
|
||||
video_puts = vesa_scroll_puts;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@ static unsigned char *video;
|
||||
|
||||
static void vga_text_puts(const char *s);
|
||||
static void vga_noop_puts(const char *s) {}
|
||||
void (*vga_puts)(const char *) = vga_noop_puts;
|
||||
void (*video_puts)(const char *) = vga_noop_puts;
|
||||
|
||||
/*
|
||||
* 'vga=<mode-specifier>[,keep]' where <mode-specifier> is one of:
|
||||
@@ -62,7 +62,7 @@ void vesa_endboot(bool_t keep);
|
||||
#define vesa_endboot(x) ((void)0)
|
||||
#endif
|
||||
|
||||
void __init vga_init(void)
|
||||
void __init video_init(void)
|
||||
{
|
||||
char *p;
|
||||
|
||||
@@ -85,7 +85,7 @@ void __init vga_init(void)
|
||||
columns = vga_console_info.u.text_mode_3.columns;
|
||||
lines = vga_console_info.u.text_mode_3.rows;
|
||||
memset(video, 0, columns * lines * 2);
|
||||
vga_puts = vga_text_puts;
|
||||
video_puts = vga_text_puts;
|
||||
break;
|
||||
case XEN_VGATYPE_VESA_LFB:
|
||||
case XEN_VGATYPE_EFI_LFB:
|
||||
@@ -97,16 +97,16 @@ void __init vga_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
void __init vga_endboot(void)
|
||||
void __init video_endboot(void)
|
||||
{
|
||||
if ( vga_puts == vga_noop_puts )
|
||||
if ( video_puts == vga_noop_puts )
|
||||
return;
|
||||
|
||||
printk("Xen is %s VGA console.\n",
|
||||
vgacon_keep ? "keeping" : "relinquishing");
|
||||
|
||||
if ( !vgacon_keep )
|
||||
vga_puts = vga_noop_puts;
|
||||
video_puts = vga_noop_puts;
|
||||
else
|
||||
{
|
||||
int bus, devfn;
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#define CONFIG_ACPI_CSTATE 1
|
||||
|
||||
#define CONFIG_VGA 1
|
||||
#define CONFIG_VIDEO 1
|
||||
|
||||
#define CONFIG_HOTPLUG 1
|
||||
#define CONFIG_HOTPLUG_CPU 1
|
||||
|
||||
@@ -9,17 +9,10 @@
|
||||
#ifndef _XEN_VGA_H
|
||||
#define _XEN_VGA_H
|
||||
|
||||
#include <public/xen.h>
|
||||
#include <xen/video.h>
|
||||
|
||||
#ifdef CONFIG_VGA
|
||||
extern struct xen_vga_console_info vga_console_info;
|
||||
void vga_init(void);
|
||||
void vga_endboot(void);
|
||||
extern void (*vga_puts)(const char *);
|
||||
#else
|
||||
#define vga_init() ((void)0)
|
||||
#define vga_endboot() ((void)0)
|
||||
#define vga_puts(s) ((void)0)
|
||||
#endif
|
||||
|
||||
#endif /* _XEN_VGA_H */
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* video.h
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#ifndef _XEN_VIDEO_H
|
||||
#define _XEN_VIDEO_H
|
||||
|
||||
#include <public/xen.h>
|
||||
|
||||
#ifdef CONFIG_VIDEO
|
||||
void video_init(void);
|
||||
extern void (*video_puts)(const char *);
|
||||
void video_endboot(void);
|
||||
#else
|
||||
#define video_init() ((void)0)
|
||||
#define video_puts(s) ((void)0)
|
||||
#define video_endboot() ((void)0)
|
||||
#endif
|
||||
|
||||
#endif /* _XEN_VIDEO_H */
|
||||