summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.ninka.net>2003-06-24 07:50:45 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2003-06-24 07:50:45 -0700
commit4131df98e086f2ccc2e30acf0c1a13f9dfde6e8a (patch)
tree302cdca23b5c223659e8d785569e01e41176ae27
parentdf791bdffab351a743b4adaa5a15934e7cc3b054 (diff)
[SERIAL]: Sanitize sparc serial console configuration.
-rw-r--r--drivers/serial/Kconfig26
-rw-r--r--drivers/serial/sunsab.c14
-rw-r--r--drivers/serial/sunsu.c12
-rw-r--r--drivers/serial/sunzilog.c13
4 files changed, 59 insertions, 6 deletions
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 98bb4fc127dc..94b36c3a01c8 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -326,6 +326,14 @@ config SERIAL_SUNZILOG
This driver supports the Zilog8530 serial ports found on many Sparc
systems. Say Y or M if you want to be able to these serial ports.
+config SERIAL_SUNZILOG_CONSOLE
+ bool "Console on Sun Zilog8530 serial port"
+ depends on SERIAL_SUNZILOG=y
+ help
+ If you would like to be able to use the Zilog8530 serial port
+ on your Sparc system as the console, you can do so by answering
+ Y to this option.
+
config SERIAL_SUNSU
tristate "Sun SU serial support"
depends on (SPARC32 || SPARC64) && PCI
@@ -334,6 +342,14 @@ config SERIAL_SUNSU
mouse on (PCI) UltraSPARC systems. Say Y or M if you want to be able
to these serial ports.
+config SERIAL_SUNSU_CONSOLE
+ bool "Console on Sun SU serial port"
+ depends on SERIAL_SUNSU=y
+ help
+ If you would like to be able to use the SU serial port
+ on your Sparc system as the console, you can do so by answering
+ Y to this option.
+
config SERIAL_MUX
tristate "Serial MUX support"
depends on PARISC
@@ -380,6 +396,14 @@ config SERIAL_SUNSAB
(PCI) UltraSPARC systems. Say Y or M if you want to be able to these
serial ports.
+config SERIAL_SUNSAB_CONSOLE
+ bool "Console on Sun Siemens SAB82532 serial port"
+ depends on SERIAL_SUNSAB=y
+ help
+ If you would like to be able to use the SAB82532 serial port
+ on your Sparc system as the console, you can do so by answering
+ Y to this option.
+
config V850E_NB85E_UART
bool "NEC V850E on-chip UART support"
depends on V850E_NB85E || V850E2_ANNA || V850E_AS85EP1
@@ -407,7 +431,7 @@ config SERIAL_CORE
config SERIAL_CORE_CONSOLE
bool
- depends on SERIAL_AMBA_CONSOLE || SERIAL_CLPS711X_CONSOLE || SERIAL_21285_CONSOLE || SERIAL_SA1100_CONSOLE || SERIAL_ANAKIN_CONSOLE || SERIAL_UART00_CONSOLE || SERIAL_8250_CONSOLE || SERIAL_MUX_CONSOLE || SERIAL_SUNCORE || V850E_NB85E_UART_CONSOLE || SERIAL98_CONSOLE
+ depends on SERIAL_AMBA_CONSOLE || SERIAL_CLPS711X_CONSOLE || SERIAL_21285_CONSOLE || SERIAL_SA1100_CONSOLE || SERIAL_ANAKIN_CONSOLE || SERIAL_UART00_CONSOLE || SERIAL_8250_CONSOLE || SERIAL_MUX_CONSOLE || SERIAL_SUNZILOG_CONSOLE || SERIAL_SUNSU_CONSOLE || SERIAL_SUNSAB_CONSOLE || V850E_NB85E_UART_CONSOLE || SERIAL98_CONSOLE
default y
config SERIAL_68328
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c
index f69dccdfc530..5ddd135d99bb 100644
--- a/drivers/serial/sunsab.c
+++ b/drivers/serial/sunsab.c
@@ -28,6 +28,7 @@
#include <linux/ioport.h>
#include <linux/circ_buf.h>
#include <linux/serial.h>
+#include <linux/sysrq.h>
#include <linux/console.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
@@ -38,6 +39,10 @@
#include <asm/oplib.h>
#include <asm/ebus.h>
+#if defined(CONFIG_SERIAL_SUNZILOG_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
+#define SUPPORT_SYSRQ
+#endif
+
#include <linux/serial_core.h>
#include "suncore.h"
@@ -838,6 +843,8 @@ static struct uart_driver sunsab_reg = {
static struct uart_sunsab_port *sunsab_ports;
static int num_channels;
+#ifdef CONFIG_SERIAL_SUNSAB_CONSOLE
+
static __inline__ void sunsab_console_putchar(struct uart_sunsab_port *up, char c)
{
unsigned long flags;
@@ -929,6 +936,7 @@ static struct console sunsab_console = {
.index = -1,
.data = &sunsab_reg,
};
+#define SUNSAB_CONSOLE (&sunsab_console)
static void __init sunsab_console_init(void)
{
@@ -949,6 +957,10 @@ static void __init sunsab_console_init(void)
sunsab_console.index = i;
register_console(&sunsab_console);
}
+#else
+#define SUNSAB_CONSOLE (NULL)
+#define sunsab_console_init() do { } while (0)
+#endif
static void __init for_each_sab_edev(void (*callback)(struct linux_ebus_device *, void *), void *arg)
{
@@ -1091,7 +1103,7 @@ static int __init sunsab_init(void)
sunsab_reg.minor = sunserial_current_minor;
sunsab_reg.nr = num_channels;
- sunsab_reg.cons = &sunsab_console;
+ sunsab_reg.cons = SUNSAB_CONSOLE;
ret = uart_register_driver(&sunsab_reg);
if (ret < 0) {
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 8a42e34130f5..57fc1906a4c1 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -46,8 +46,7 @@
#include <asm/isa.h>
#endif
-/* #if defined(CONFIG_SERIAL_8250_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) */
-#if defined(CONFIG_MAGIC_SYSRQ)
+#if defined(CONFIG_SERIAL_SUNSU_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
#endif
@@ -1347,6 +1346,8 @@ static int __init sunsu_kbd_ms_init(void)
* ------------------------------------------------------------
*/
+#ifdef CONFIG_SERIAL_SUNSU_CONSOLE
+
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
/*
@@ -1465,6 +1466,7 @@ static struct console sunsu_cons = {
.index = -1,
.data = &sunsu_reg,
};
+#define SUNSU_CONSOLE (&sunsu_cons)
/*
* Register console.
@@ -1492,6 +1494,10 @@ static int __init sunsu_serial_console_init(void)
register_console(&sunsu_cons);
return 0;
}
+#else
+#define SUNSU_CONSOLE (NULL)
+#define sunsu_serial_console_init() do { } while (0)
+#endif
static int __init sunsu_serial_init(void)
{
@@ -1522,7 +1528,7 @@ static int __init sunsu_serial_init(void)
sunserial_current_minor += instance;
sunsu_reg.nr = instance;
- sunsu_reg.cons = &sunsu_cons;
+ sunsu_reg.cons = SUNSU_CONSOLE;
ret = uart_register_driver(&sunsu_reg);
if (ret < 0)
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c
index 8a5bcd6e19b3..1f63f74fdf57 100644
--- a/drivers/serial/sunzilog.c
+++ b/drivers/serial/sunzilog.c
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/circ_buf.h>
#include <linux/serial.h>
+#include <linux/sysrq.h>
#include <linux/console.h>
#include <linux/spinlock.h>
#ifdef CONFIG_SERIO
@@ -42,6 +43,10 @@
#endif
#include <asm/sbus.h>
+#if defined(CONFIG_SERIAL_SUNZILOG_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
+#define SUPPORT_SYSRQ
+#endif
+
#include <linux/serial_core.h>
#include "suncore.h"
@@ -1331,6 +1336,7 @@ static void sunzilog_serio_close(struct serio *serio)
#endif /* CONFIG_SERIO */
+#ifdef CONFIG_SERIAL_SUNZILOG_CONSOLE
static void
sunzilog_console_write(struct console *con, const char *s, unsigned int count)
{
@@ -1400,6 +1406,7 @@ static struct console sunzilog_console = {
.index = -1,
.data = &sunzilog_reg,
};
+#define SUNZILOG_CONSOLE (&sunzilog_console)
static int __init sunzilog_console_init(void)
{
@@ -1422,6 +1429,10 @@ static int __init sunzilog_console_init(void)
register_console(&sunzilog_console);
return 0;
}
+#else
+#define SUNZILOG_CONSOLE (NULL)
+#define sunzilog_console_init() do { } while (0)
+#endif
/*
* We scan the PROM tree recursively. This is the most reliable way
@@ -1639,7 +1650,7 @@ static int __init sunzilog_ports_init(void)
* in the system.
*/
sunzilog_reg.nr = NUM_CHANNELS;
- sunzilog_reg.cons = &sunzilog_console;
+ sunzilog_reg.cons = SUNZILOG_CONSOLE;
sunzilog_reg.minor = sunserial_current_minor;
sunserial_current_minor += NUM_CHANNELS;