Skip to contentSkip to conversation

Making keyboard/mouse drivers dependent on CONFIG_EMBEDDED

PATCH In review Andi Kleen 9 participants 12 messages Jun 7, 2003 – Jun 8, 2003

Subsystems (4)
lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH 1/1 Making keyboard/mouse drivers dependent on CONFIG_EMBEDDED

I finally got sick of seeing bug reports from people who did not enable CONFIG_VT or forgot to enable the obscure options for the keyboard driver. This is especially a big problem for people who do make oldconfig with a 2.4 configuration, but seems to happen in general often. I also included the PS/2 mouse driver. It is small enough and a useful fallback on any PC.

This patch wraps all this for i386/amd64 in CONFIG_EMBEDDED. If CONFIG_EMBEDDED is not defined they are not visible and always enabled.

I only tried to give good defaults for PC type of hardware. So far the assumption is that people running other architectures know how to configure a kernel.

I also included VGA_CONSOLE with this. Arguably a lot of people use fbcon now, but having vga console compiled in too as a fallback doesn't hurt.

Hopefully this will fix one of the major FAQs on linux-kernel.

-Andi

drivers/char/Kconfig renamed from drivers/char/Kconfig-KCONFIG +4 -2
diff -u linux-2.5.70/drivers/char/Kconfig-KCONFIG linux-2.5.70/drivers/char/Kconfig
@@ -5,8 +5,9 @@
 menu "Character devices"
 
 config VT
-	bool "Virtual terminal"
+	bool "Virtual terminal" if EMBEDDED
 	requires INPUT=y
+	default y
 	---help---
 	  If you say Y here, you will get support for terminal devices with
 	  display and keyboard devices. These are called "virtual" because you
@@ -35,8 +36,9 @@
 	  shiny Linux system :-)
 
 config VT_CONSOLE
-	bool "Support for console on virtual terminal"
+	bool "Support for console on virtual terminal" if EMBEDDED
 	depends on VT
+	default y
 	---help---
 	  The system console is the device which receives all kernel messages
 	  and warnings and which allows logins in single user mode. If you
drivers/input/keyboard/Kconfig renamed from drivers/input/keyboard/Kconfig-KCONFIG +2 -2
diff -u linux-2.5.70/drivers/input/keyboard/Kconfig-KCONFIG linux-2.5.70/drivers/input/keyboard/Kconfig
@@ -2,7 +2,7 @@
 # Input core configuration
 #
 config INPUT_KEYBOARD
-	bool "Keyboards"
+	bool "Keyboards" if (X86 && EMBEDDED) || (!X86)
 	default y
 	depends on INPUT
 	help
@@ -12,7 +12,7 @@
 	  If unsure, say Y.
 
 config KEYBOARD_ATKBD
-	tristate "AT keyboard support"
+	tristate "AT keyboard support" if (X86 && EMBEDDED) || (!X86) 
 	default y
 	depends on INPUT && INPUT_KEYBOARD && SERIO
 	help
drivers/input/serio/Kconfig renamed from drivers/input/serio/Kconfig-KCONFIG +1 -1
diff -u linux-2.5.70/drivers/input/serio/Kconfig-KCONFIG linux-2.5.70/drivers/input/serio/Kconfig
@@ -19,7 +19,7 @@
 	  as a module, say M here and read <file:Documentation/modules.txt>.
 
 config SERIO_I8042
-	tristate "i8042 PC Keyboard controller"
+	tristate "i8042 PC Keyboard controller" if (X86 && EMBEDDED) || (!X86)
 	default y
 	depends on SERIO
 	---help---
drivers/input/Kconfig renamed from drivers/input/Kconfig-KCONFIG +3 -3
diff -u linux-2.5.70/drivers/input/Kconfig-KCONFIG linux-2.5.70/drivers/input/Kconfig
@@ -5,7 +5,7 @@
 menu "Input device support"
 
 config INPUT
-	tristate "Input devices (needed for keyboard, mouse, ...)"
+	tristate "Input devices (needed for keyboard, mouse, ...)" if EMBEDDED
 	default y
 	---help---
 	  Say Y here if you have any input device (mouse, keyboard, tablet,
@@ -27,7 +27,7 @@
 comment "Userland interfaces"
 
 config INPUT_MOUSEDEV
-	tristate "Mouse interface"
+	tristate "Mouse interface" if EMBEDDED
 	default y
 	depends on INPUT
 	---help---
@@ -45,7 +45,7 @@
 	  a module, say M here and read <file:Documentation/modules.txt>.
 
 config INPUT_MOUSEDEV_PSAUX
-	bool "Provide legacy /dev/psaux device"
+	bool "Provide legacy /dev/psaux device" if EMBEDDED
 	default y
 	depends on INPUT_MOUSEDEV
 
drivers/video/console/Kconfig renamed from drivers/video/console/Kconfig-KCONFIG +2 -1
diff -u linux-2.5.70/drivers/video/console/Kconfig-KCONFIG linux-2.5.70/drivers/video/console/Kconfig
@@ -5,8 +5,9 @@
 menu "Console display driver support"
 
 config VGA_CONSOLE
-	bool "VGA text console"
+	bool "VGA text console" if (EMBEDDED && X86) || (!X86)
 	depends on !ARCH_ACORN && !ARCH_EBSA110 || !4xx && !8xx
+	default y
 	help
 	  Saying Y here will allow you to use Linux in text mode through a
 	  display that complies with the generic VGA standard. Virtually
#1 lore raw
Quoted 6 lines · Andi Kleen

I finally got sick of seeing bug reports from people who did not enable CONFIG_VT or forgot to enable the obscure options for the keyboard driver. This is especially a big problem for people who do make oldconfig with a 2.4 configuration, but seems to happen in general often. I also included the PS/2 mouse driver. It is small enough and a useful fallback on any PC.

Can't these just be made the default and have oldconfig default to the defaults (does it?). Seems silly to force people to jump through hoops if they don't want to compile in something (i.e. they use a USB mouse).

#2 lore raw

Hi,

Quoted 8 lines · Aaron Lehmann
Quoted 6 lines · Andi Kleen

I finally got sick of seeing bug reports from people who did not enable CONFIG_VT or forgot to enable the obscure options for the keyboard driver. This is especially a big problem for people who do make oldconfig with a 2.4 configuration, but seems to happen in general often. I also included the PS/2 mouse driver. It is small enough and a useful fallback on any PC.

Quoted 4 lines

Can't these just be made the default and have oldconfig default to the defaults (does it?). Seems silly to force people to jump through hoops if they don't want to compile in something (i.e. they use a USB mouse).

Defaults cannot override the user values from .config and in most 2.4 .configs CONFIG_INPUT is disabled, so that you cannot change CONFIG_VT with 'make oldconfig', as it depends now on CONFIG_INPUT. To override the old CONFIG_INPUT value you either have to disable the input prompt somehow or you have to rename the symbol and change CONFIG_INPUT into a derived symbol, e.g.:

config INPUT2
tristate "Input devices (needed for keyboard, mouse, ...)" default y

config INPUT
def_tristate INPUT2

bye, Roman

#3 lore raw
In reply to Andi Kleen

In article <20030607063424.GA12616@averell> (at Sat, 7 Jun 2003 08:34:24 +0200), Andi Kleen <[email protected]> says:

Quoted 6 lines

I finally got sick of seeing bug reports from people who did not enable CONFIG_VT or forgot to enable the obscure options for the keyboard driver. This is especially a big problem for people who do make oldconfig with a 2.4 configuration, but seems to happen in general often. I also included the PS/2 mouse driver. It is small enough and a useful fallback on any PC.

Why isn't it enough to change default to "y"?
Not showing the config is not good.
I want to disable it while using standard (not embeded) PC.

Signature · 2 lines
Hideaki YOSHIFUJI @ USAGI Project <[email protected]>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA
author
#4 lore raw
Quoted 1 line · On Sat, Jun 07, 2003 at 03:49:58PM +0900, YOSHIFUJI Hideaki / ?$B5HF#1QL@ wrote:

Why isn't it enough to change default to "y"?

Because that won't override make oldconfig

Quoted 2 lines

Not showing the config is not good.
I want to disable it while using standard (not embeded) PC.

You can still. That is what CONFIG_EMBEDDED is for.

-Andi

#5 lore raw
Quoted 9 lines · Andi Kleen
Quoted 1 line · On Sat, Jun 07, 2003 at 03:49:58PM +0900, YOSHIFUJI Hideaki / ?$B5HF#1QL@ wrote:

Why isn't it enough to change default to "y"?

Because that won't override make oldconfig

Quoted 2 lines

Not showing the config is not good.
I want to disable it while using standard (not embeded) PC.

You can still. That is what CONFIG_EMBEDDED is for.

Thinking about this, would a CONFIG_DWIM type setting make sense? Something to drive "least surprise" settings from, without tying it to any other functionality?

(For the acronym impaired, DWIM = Do What I Mean[t])

Signature · 2 lines
Ryan Anderson
  sometimes Pug Majere
#6 lore raw
In reply to Andi Kleen
Quoted 10 lines · Andi Kleen

I finally got sick of seeing bug reports from people who did not enable CONFIG_VT or forgot to enable the obscure options for the keyboard driver. This is especially a big problem for people who do make oldconfig with a 2.4 configuration, but seems to happen in general often. I also included the PS/2 mouse driver. It is small enough and a useful fallback on any PC.

This patch wraps all this for i386/amd64 in CONFIG_EMBEDDED. If CONFIG_EMBEDDED is not defined they are not visible and always enabled.

This sounds like a bad idea. many modern PCs only have usb keyboard/mouse these days. Having them in defconfig is fine but we shouldn't obsfucate the kernel config due to user stupidity.

#7 lore raw

Hi!

Quoted 7 lines
Quoted 7 lines

I finally got sick of seeing bug reports from people who did not enable CONFIG_VT or forgot to enable the obscure options for the keyboard driver. This is especially a big problem for people who do make oldconfig with a 2.4 configuration, but seems to happen in general often. I also included the PS/2 mouse driver. It is small enough and a useful fallback on any PC.

Quoted 6 lines
Quoted 2 lines

This patch wraps all this for i386/amd64 in CONFIG_EMBEDDED. If CONFIG_EMBEDDED is not defined they are not visible and always enabled.

This sounds like a bad idea. many modern PCs only have usb keyboard/mouse these days. Having them in defconfig is fine but we shouldn't obsfucate the kernel config due to user stupidity.

Its more like "make oldconfig" limitation, IIRC. If you have some old config, it ignores defconfig and suggests you N for new options. And yes people were hitting that.
Pavel

Signature · 2 lines
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
#8 lore raw
Quoted 3 lines · On Sat, 7 Jun 2003 22:43:40 +0200 Pavel Machek <[email protected]> wrote:

Its more like "make oldconfig" limitation, IIRC. If you have some old config, it ignores defconfig and suggests you N for new options. And yes people were hitting that.

Even if they're not using oldconfig, some people i know uses to put it as module (they use to think in "put everything you can as module")

I suggest hidding this under "input device support":
<*> Input devices (needed for keyboard, mouse, ...) <*> Serial i/o support (needed for keyboard and mouse)
<*> i8042 PC Keyboard controller
<*> Serial port line discipline
[*] Keyboards
<*> AT keyboard support
[*] Mice
<*> PS/2 mouse
<*> Serial mouse

and enable all of them by default

Then make a
[ ] Advanced Input Device Support

which will show those menues and it will let
people to disable those very common options.
I mean, IMHO users who want to disable
PS/2 and keyboard support are "advanced" users
which want to enable/disable "advanced" options.

Personally i think this scheme also sucks,
"input device support" should be changed; and bad names should be killed (in the real world who knows what a "<*> i8042 PC Keyboard controller" means) so people really knows that they won't be able to type anything if they disable it. In fact, they're not warned anywhere that they won't get a console if they don't enable it. And the fact that the help entries say nothing about it, and that we're supposed to be disabling "input", not "output" support makes it harder for people to understand when configuring their first 2.5 kernel.

I can't count how many people i've seen falling this on irc (personally it took me 3 times to get the right options; unexperienced people could take forever). If this isn't changed it will be the most reported ever (personally i'd consider it a "must-fix" item ;) as it could have very negative effects when 2.6 is out =)

Just my thougs; Diego Calleja.

#9 lore raw
In reply to Andi Kleen
Quoted 11 lines · Andi Kleen

I finally got sick of seeing bug reports from people who did not enable CONFIG_VT or forgot to enable the obscure options for the keyboard driver. This is especially a big problem for people who do make oldconfig with a 2.4 configuration, but seems to happen in general often. I also included the PS/2 mouse driver. It is small enough and a useful fallback on any PC.

This patch wraps all this for i386/amd64 in CONFIG_EMBEDDED. If CONFIG_EMBEDDED is not defined they are not visible and always enabled.

Quoted 8 lines

I only tried to give good defaults for PC type of hardware. So far the assumption is that people running other architectures know how to configure a kernel.

I also included VGA_CONSOLE with this. Arguably a lot of people use fbcon now, but having vga console compiled in too as a fallback doesn't hurt.

Hopefully this will fix one of the major FAQs on linux-kernel.

I'm quite OK with this, but I'd like it to give a pointer where to disable EMBEDDED, and also give a possibility to do it other than editing .config manually.

Quoted 102 lines

diff -u linux-2.5.70/drivers/char/Kconfig-KCONFIG linux-2.5.70/drivers/char/Kconfig

drivers/char/Kconfig renamed from drivers/char/Kconfig-KCONFIG +4 -2
@@ -5,8 +5,9 @@
 menu "Character devices"
 
 config VT
-	bool "Virtual terminal"
+	bool "Virtual terminal" if EMBEDDED
 	requires INPUT=y
+	default y
 	---help---
 	  If you say Y here, you will get support for terminal devices with
 	  display and keyboard devices. These are called "virtual" because you
@@ -35,8 +36,9 @@
 	  shiny Linux system :-)
 
 config VT_CONSOLE
-	bool "Support for console on virtual terminal"
+	bool "Support for console on virtual terminal" if EMBEDDED
 	depends on VT
+	default y
 	---help---
 	  The system console is the device which receives all kernel messages
 	  and warnings and which allows logins in single user mode. If you

diff -u linux-2.5.70/drivers/input/keyboard/Kconfig-KCONFIG linux-2.5.70/drivers/input/keyboard/Kconfig

drivers/input/keyboard/Kconfig renamed from drivers/input/keyboard/Kconfig-KCONFIG +2 -2
@@ -2,7 +2,7 @@
 # Input core configuration
 #
 config INPUT_KEYBOARD
-	bool "Keyboards"
+	bool "Keyboards" if (X86 && EMBEDDED) || (!X86)
 	default y
 	depends on INPUT
 	help
@@ -12,7 +12,7 @@
 	  If unsure, say Y.
 
 config KEYBOARD_ATKBD
-	tristate "AT keyboard support"
+	tristate "AT keyboard support" if (X86 && EMBEDDED) || (!X86) 
 	default y
 	depends on INPUT && INPUT_KEYBOARD && SERIO
 	help

diff -u linux-2.5.70/drivers/input/serio/Kconfig-KCONFIG linux-2.5.70/drivers/input/serio/Kconfig

drivers/input/serio/Kconfig renamed from drivers/input/serio/Kconfig-KCONFIG +1 -1
@@ -19,7 +19,7 @@
 	  as a module, say M here and read <file:Documentation/modules.txt>.
 
 config SERIO_I8042
-	tristate "i8042 PC Keyboard controller"
+	tristate "i8042 PC Keyboard controller" if (X86 && EMBEDDED) || (!X86)
 	default y
 	depends on SERIO
 	---help---

diff -u linux-2.5.70/drivers/input/Kconfig-KCONFIG linux-2.5.70/drivers/input/Kconfig

drivers/input/Kconfig renamed from drivers/input/Kconfig-KCONFIG +3 -3
@@ -5,7 +5,7 @@
 menu "Input device support"
 
 config INPUT
-	tristate "Input devices (needed for keyboard, mouse, ...)"
+	tristate "Input devices (needed for keyboard, mouse, ...)" if EMBEDDED
 	default y
 	---help---
 	  Say Y here if you have any input device (mouse, keyboard, tablet,
@@ -27,7 +27,7 @@
 comment "Userland interfaces"
 
 config INPUT_MOUSEDEV
-	tristate "Mouse interface"
+	tristate "Mouse interface" if EMBEDDED
 	default y
 	depends on INPUT
 	---help---
@@ -45,7 +45,7 @@
 	  a module, say M here and read <file:Documentation/modules.txt>.
 
 config INPUT_MOUSEDEV_PSAUX
-	bool "Provide legacy /dev/psaux device"
+	bool "Provide legacy /dev/psaux device" if EMBEDDED
 	default y
 	depends on INPUT_MOUSEDEV
 

diff -u linux-2.5.70/drivers/video/console/Kconfig-KCONFIG linux-2.5.70/drivers/video/console/Kconfig

drivers/video/console/Kconfig renamed from drivers/video/console/Kconfig-KCONFIG +2 -1
@@ -5,8 +5,9 @@
 menu "Console display driver support"
 
 config VGA_CONSOLE
-	bool "VGA text console"
+	bool "VGA text console" if (EMBEDDED && X86) || (!X86)
 	depends on !ARCH_ACORN && !ARCH_EBSA110 || !4xx && !8xx
+	default y
 	help
 	  Saying Y here will allow you to use Linux in text mode through a
 	  display that complies with the generic VGA standard. Virtually
Signature · 2 lines
Vojtech Pavlik
SuSE Labs, SuSE CR
author
#10 lore raw
Quoted 3 lines · Vojtech Pavlik

I'm quite OK with this, but I'd like it to give a pointer where to disable EMBEDDED, and also give a possibility to do it other than editing .config manually.

Hmm? You don't need to edit .config manually to disable EMBEDDED. It is a standard visible top level option in "General options"

-Andi

#11 lore raw
Quoted 7 lines · Andi Kleen
Quoted 3 lines · Vojtech Pavlik

I'm quite OK with this, but I'd like it to give a pointer where to disable EMBEDDED, and also give a possibility to do it other than editing .config manually.

Hmm? You don't need to edit .config manually to disable EMBEDDED. It is a standard visible top level option in "General options"

Oops, sorry, I did not remember that one.

Signature · 2 lines
Vojtech Pavlik
SuSE Labs, SuSE CR