aboutsummaryrefslogtreecommitdiffstats
path: root/xen
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2013-01-24 12:47:51 +0000
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>2013-01-24 12:47:51 +0000
commit9f0443bafbab97831e5c99553bf9f0805537f3fc (patch)
treef345b364549d6431c6158b899aebf8f191f0d332 /xen
parent22bf8a6c143701504b7ed71b80a6f39ae53ea39c (diff)
downloadxen-9f0443bafbab97831e5c99553bf9f0805537f3fc.tar.gz
xen-9f0443bafbab97831e5c99553bf9f0805537f3fc.tar.bz2
xen-9f0443bafbab97831e5c99553bf9f0805537f3fc.zip
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>
Diffstat (limited to 'xen')
-rw-r--r--xen/arch/arm/Rules.mk1
-rw-r--r--xen/arch/x86/Rules.mk1
-rw-r--r--xen/drivers/Makefile2
-rw-r--r--xen/drivers/char/console.c12
-rw-r--r--xen/drivers/video/Makefile10
-rw-r--r--xen/drivers/video/vesa.c4
-rw-r--r--xen/drivers/video/vga.c12
-rw-r--r--xen/include/asm-x86/config.h1
-rw-r--r--xen/include/xen/vga.h9
-rw-r--r--xen/include/xen/video.h24
10 files changed, 48 insertions, 28 deletions
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index f83bfee24d..5b5768ab28 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -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
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 963850fe2a..0a9d68d7ca 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -3,6 +3,7 @@
HAS_ACPI := y
HAS_VGA := y
+HAS_VIDEO := y
HAS_CPUFREQ := y
HAS_PCI := y
HAS_PASSTHROUGH := y
diff --git a/xen/drivers/Makefile b/xen/drivers/Makefile
index 7239375331..9c70f20f23 100644
--- a/xen/drivers/Makefile
+++ b/xen/drivers/Makefile
@@ -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
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index e9f696d7a6..ce843c5daa 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -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
diff --git a/xen/drivers/video/Makefile b/xen/drivers/video/Makefile
index 6c3e5b4ba7..2993c39f25 100644
--- a/xen/drivers/video/Makefile
+++ b/xen/drivers/video/Makefile
@@ -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
diff --git a/xen/drivers/video/vesa.c b/xen/drivers/video/vesa.c
index d0a83ff270..aaf8b23404 100644
--- a/xen/drivers/video/vesa.c
+++ b/xen/drivers/video/vesa.c
@@ -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
{
diff --git a/xen/drivers/video/vga.c b/xen/drivers/video/vga.c
index a98bd00034..40e5963438 100644
--- a/xen/drivers/video/vga.c
+++ b/xen/drivers/video/vga.c
@@ -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;
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 652f6b79a3..da82e7327b 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -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
diff --git a/xen/include/xen/vga.h b/xen/include/xen/vga.h
index cc690b9ba2..f72b63d446 100644
--- a/xen/include/xen/vga.h
+++ b/xen/include/xen/vga.h
@@ -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 */
diff --git a/xen/include/xen/video.h b/xen/include/xen/video.h
new file mode 100644
index 0000000000..2e897f9df5
--- /dev/null
+++ b/xen/include/xen/video.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 */