[patch 1/2] uml: enable drivers (input, fb, vt)

From: Gerd Hoffmann
Date: Tue Jan 24 2006 - 11:09:57 EST


Hi,

This patch enables a number of drivers for the uml build, in preparation
for the uml framebuffer driver patch coming next ;)

Changes:

* Include drivers/{input,char,video} in the uml kernel configuration,
thus enabling the vt subsystem, input subsystem and the framebuffer
console.
* Add the console_use_vt variable to make the vt subsystem
runtime-switchable. That is needed because uml has it's own,
special "uml console" driver for major #5, which can only be
used if the vt subsystem doesn't grab #5. The plan is to enable
the vt subsystem only if we are going to use it for the framebuffer
console, so the current behaviour remains unchanged if the
framebuffer is not used.
* A bunch of Kconfig tweaks to make the allmodconfig build fine by
disabling drivers which either don't make sense or don't even build
on uml. Fortunaly CONFIG_PCI & friends catched most of them
already ;)

pleae apply,

Gerd

--
Gerd 'just married' Hoffmann <kraxel@xxxxxxx>
I'm the hacker formerly known as Gerd Knorr.
http://www.suse.de/~kraxel/just-married.jpeg
Index: linux-2.6.16-pre/drivers/input/keyboard/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/input/keyboard/Kconfig 2006-01-23 12:43:55.000000000 +0100
+++ linux-2.6.16-pre/drivers/input/keyboard/Kconfig 2006-01-23 12:44:58.000000000 +0100
@@ -10,7 +10,7 @@ menuconfig INPUT_KEYBOARD

If unsure, say Y.

-if INPUT_KEYBOARD
+if INPUT_KEYBOARD && !UML

config KEYBOARD_ATKBD
tristate "AT keyboard" if !X86_PC
Index: linux-2.6.16-pre/drivers/input/mouse/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/input/mouse/Kconfig 2006-01-23 12:43:55.000000000 +0100
+++ linux-2.6.16-pre/drivers/input/mouse/Kconfig 2006-01-23 12:44:58.000000000 +0100
@@ -10,7 +10,7 @@ menuconfig INPUT_MOUSE

If unsure, say Y.

-if INPUT_MOUSE
+if INPUT_MOUSE && !UML

config MOUSE_PS2
tristate "PS/2 mouse"
Index: linux-2.6.16-pre/drivers/input/serio/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/input/serio/Kconfig 2006-01-03 04:21:10.000000000 +0100
+++ linux-2.6.16-pre/drivers/input/serio/Kconfig 2006-01-23 12:44:58.000000000 +0100
@@ -21,7 +21,7 @@ if SERIO
config SERIO_I8042
tristate "i8042 PC Keyboard controller" if EMBEDDED || !X86
default y
- depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && !M68K
+ depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && !M68K && !UML
---help---
i8042 is the chip over which the standard AT keyboard and PS/2
mouse are connected to the computer. If you use these devices,
Index: linux-2.6.16-pre/drivers/char/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/char/Kconfig 2006-01-23 12:43:54.000000000 +0100
+++ linux-2.6.16-pre/drivers/char/Kconfig 2006-01-23 12:44:58.000000000 +0100
@@ -59,11 +59,12 @@ config VT_CONSOLE

config HW_CONSOLE
bool
- depends on VT && !S390 && !UML
+ depends on VT && !S390
default y

config SERIAL_NONSTANDARD
bool "Non-standard serial port support"
+ depends on !UML
---help---
Say Y here if you have any non-standard serial boards -- boards
which aren't supported using the standard "dumb" serial driver.
@@ -695,7 +696,7 @@ config NVRAM

config RTC
tristate "Enhanced Real Time Clock Support"
- depends on !PPC32 && !PARISC && !IA64 && !M68K && (!SPARC || PCI) && !FRV
+ depends on !PPC32 && !PARISC && !IA64 && !M68K && (!SPARC || PCI) && !FRV && !UML
---help---
If you say Y here and create a character special file /dev/rtc with
major number 10 and minor number 135 using mknod ("man mknod"), you
@@ -743,7 +744,7 @@ config SGI_IP27_RTC

config GEN_RTC
tristate "Generic /dev/rtc emulation"
- depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC && !FRV
+ depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC && !FRV && !UML
---help---
If you say Y here and create a character special file /dev/rtc with
major number 10 and minor number 135 using mknod ("man mknod"), you
@@ -800,6 +801,7 @@ config COBALT_LCD

config DTLK
tristate "Double Talk PC internal speech card support"
+ depends on ISA
help
This driver is for the DoubleTalk PC, a speech synthesizer
manufactured by RC Systems (<http://www.rcsys.com/>). It is also
Index: linux-2.6.16-pre/drivers/char/ipmi/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/char/ipmi/Kconfig 2006-01-03 04:21:10.000000000 +0100
+++ linux-2.6.16-pre/drivers/char/ipmi/Kconfig 2006-01-23 12:44:59.000000000 +0100
@@ -5,6 +5,7 @@
menu "IPMI"
config IPMI_HANDLER
tristate 'IPMI top-level message handler'
+ depends on !UML
help
This enables the central IPMI message handler, required for IPMI
to work.
Index: linux-2.6.16-pre/drivers/char/tpm/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/char/tpm/Kconfig 2006-01-03 04:21:10.000000000 +0100
+++ linux-2.6.16-pre/drivers/char/tpm/Kconfig 2006-01-23 12:44:59.000000000 +0100
@@ -6,7 +6,7 @@ menu "TPM devices"

config TCG_TPM
tristate "TPM Hardware Support"
- depends on EXPERIMENTAL
+ depends on EXPERIMENTAL && !UML
---help---
If you have a TPM security chip in your system, which
implements the Trusted Computing Group's specification,
Index: linux-2.6.16-pre/drivers/input/touchscreen/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/input/touchscreen/Kconfig 2006-01-23 12:43:55.000000000 +0100
+++ linux-2.6.16-pre/drivers/input/touchscreen/Kconfig 2006-01-23 12:44:59.000000000 +0100
@@ -9,7 +9,7 @@ menuconfig INPUT_TOUCHSCREEN

If unsure, say Y.

-if INPUT_TOUCHSCREEN
+if INPUT_TOUCHSCREEN && !UML

config TOUCHSCREEN_ADS7846
tristate "ADS 7846 based touchscreens"
Index: linux-2.6.16-pre/drivers/serial/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/serial/Kconfig 2006-01-23 12:44:53.000000000 +0100
+++ linux-2.6.16-pre/drivers/serial/Kconfig 2006-01-23 12:44:59.000000000 +0100
@@ -11,6 +11,7 @@ menu "Serial drivers"
config SERIAL_8250
tristate "8250/16550 and compatible serial support"
depends on (BROKEN || !SPARC)
+ depends on !UML
select SERIAL_CORE
---help---
This selects whether you want to include the driver for the standard
Index: linux-2.6.16-pre/drivers/video/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/video/Kconfig 2006-01-23 12:44:06.000000000 +0100
+++ linux-2.6.16-pre/drivers/video/Kconfig 2006-01-23 12:44:59.000000000 +0100
@@ -602,7 +602,7 @@ config FB_EPSON1355

config FB_S1D13XXX
tristate "Epson S1D13XXX framebuffer support"
- depends on FB
+ depends on FB && !UML
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
Index: linux-2.6.16-pre/arch/um/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/arch/um/Kconfig 2006-01-23 12:44:52.000000000 +0100
+++ linux-2.6.16-pre/arch/um/Kconfig 2006-01-23 12:44:59.000000000 +0100
@@ -288,6 +288,12 @@ source "drivers/net/Kconfig"

source "drivers/connector/Kconfig"

+source "drivers/input/Kconfig"
+
+source "drivers/char/Kconfig"
+
+source "drivers/video/Kconfig"
+
source "fs/Kconfig"

source "security/Kconfig"
Index: linux-2.6.16-pre/arch/um/kernel/um_arch.c
===================================================================
--- linux-2.6.16-pre.orig/arch/um/kernel/um_arch.c 2006-01-23 12:43:53.000000000 +0100
+++ linux-2.6.16-pre/arch/um/kernel/um_arch.c 2006-01-23 12:44:59.000000000 +0100
@@ -18,6 +18,7 @@
#include "linux/seq_file.h"
#include "linux/delay.h"
#include "linux/module.h"
+#include "linux/console.h"
#include "asm/page.h"
#include "asm/pgtable.h"
#include "asm/ptrace.h"
@@ -464,6 +465,9 @@ void __init setup_arch(char **cmdline_p)
strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
*cmdline_p = command_line;
setup_hostinfo();
+#if defined(CONFIG_DUMMY_CONSOLE)
+ console_use_vt = 0;
+#endif
}

void __init check_bugs(void)
Index: linux-2.6.16-pre/drivers/char/tty_io.c
===================================================================
--- linux-2.6.16-pre.orig/drivers/char/tty_io.c 2006-01-23 12:43:55.000000000 +0100
+++ linux-2.6.16-pre/drivers/char/tty_io.c 2006-01-23 12:44:59.000000000 +0100
@@ -132,6 +132,8 @@ LIST_HEAD(tty_drivers); /* linked list
vt.c for deeply disgusting hack reasons */
DECLARE_MUTEX(tty_sem);

+int console_use_vt = 1;
+
#ifdef CONFIG_UNIX98_PTYS
extern struct tty_driver *ptm_driver; /* Unix98 pty masters; for /dev/ptmx */
extern int pty_limit; /* Config limit on Unix98 ptys */
@@ -2033,7 +2035,7 @@ retry_open:
goto got_driver;
}
#ifdef CONFIG_VT
- if (device == MKDEV(TTY_MAJOR,0)) {
+ if (console_use_vt && device == MKDEV(TTY_MAJOR,0)) {
extern struct tty_driver *console_driver;
driver = console_driver;
index = fg_console;
@@ -3201,6 +3203,8 @@ static int __init tty_init(void)
#endif

#ifdef CONFIG_VT
+ if (!console_use_vt)
+ goto out_vt;
cdev_init(&vc0_cdev, &console_fops);
if (cdev_add(&vc0_cdev, MKDEV(TTY_MAJOR, 0), 1) ||
register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, "/dev/vc/0") < 0)
@@ -3209,6 +3213,7 @@ static int __init tty_init(void)
class_device_create(tty_class, NULL, MKDEV(TTY_MAJOR, 0), NULL, "tty0");

vty_init();
+ out_vt:
#endif
return 0;
}
Index: linux-2.6.16-pre/include/linux/console.h
===================================================================
--- linux-2.6.16-pre.orig/include/linux/console.h 2006-01-03 04:21:10.000000000 +0100
+++ linux-2.6.16-pre/include/linux/console.h 2006-01-23 12:44:59.000000000 +0100
@@ -62,6 +62,7 @@ extern const struct consw dummy_con; /*
extern const struct consw vga_con; /* VGA text console */
extern const struct consw newport_con; /* SGI Newport console */
extern const struct consw prom_con; /* SPARC PROM console */
+extern int console_use_vt;

int take_over_console(const struct consw *sw, int first, int last, int deflt);
void give_up_console(const struct consw *sw);
Index: linux-2.6.16-pre/drivers/video/console/Kconfig
===================================================================
--- linux-2.6.16-pre.orig/drivers/video/console/Kconfig 2006-01-23 12:44:06.000000000 +0100
+++ linux-2.6.16-pre/drivers/video/console/Kconfig 2006-01-23 12:44:59.000000000 +0100
@@ -6,7 +6,7 @@ menu "Console display driver support"

config VGA_CONSOLE
bool "VGA text console" if EMBEDDED || !X86
- depends on !ARCH_ACORN && !ARCH_EBSA110 && !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && !ARCH_VERSATILE
+ depends on !ARCH_ACORN && !ARCH_EBSA110 && !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && !ARCH_VERSATILE && !UML
default y
help
Saying Y here will allow you to use Linux in text mode through a