* Maciej W. Rozycki <macro@xxxxxxxxxxxxxx> [2006-05-11 19:14]: > > Zilog Z8530 support for DECstation hasn't been ported to 2.6 yet. > > Well, not exactly ported, but hacked up enough it worked the last time I > tried, but you have to disable the virtual terminal (CONFIG_VT) as it is Yeah, but the problem is that ZS is not a config option anymore. I hacked up something to see if the driver works but I guess there's a nicer solution. --- a/drivers/char/Makefile +++ b/drivers/char/Makefile @@ -51,6 +51,8 @@ obj-$(CONFIG_VIOCONS) += viocons.o obj-$(CONFIG_VIOTAPE) += viotape.o obj-$(CONFIG_HVCS) += hvcs.o obj-$(CONFIG_SGI_MBCS) += mbcs.o +obj-$(CONFIG_SERIAL_DZ) += decserial.o +obj-$(CONFIG_SERIAL_ZS) += decserial.o obj-$(CONFIG_PRINTER) += lp.o obj-$(CONFIG_TIPAR) += tipar.o diff --git a/drivers/char/decserial.c b/drivers/char/decserial.c index aa14409..9a320c3 100644 --- a/drivers/char/decserial.c +++ b/drivers/char/decserial.c @@ -28,7 +28,7 @@ extern int zs_init(void); extern int dz_init(void); #endif -#ifdef CONFIG_SERIAL_CONSOLE +#ifdef CONFIG_SERIAL_CORE_CONSOLE #ifdef CONFIG_ZS extern void zs_serial_console_init(void); @@ -43,7 +43,7 @@ extern void dz_serial_console_init(void) /* rs_init - starts up the serial interface - handle normal case of starting up the serial interface */ -#ifdef CONFIG_SERIAL +#ifdef CONFIG_SERIAL_CORE int __init rs_init(void) { @@ -70,7 +70,7 @@ __initcall(rs_init); #endif -#ifdef CONFIG_SERIAL_CONSOLE +#ifdef CONFIG_SERIAL_CORE_CONSOLE /* serial_console_init handles the special case of starting * up the console on the serial port diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 7d22dc0..b16b99f 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -398,6 +398,27 @@ config SERIAL_DZ_CONSOLE If unsure, say Y. +config SERIAL_ZS + bool "DECstation Zilog Z8530 support" + depends on MACH_DECSTATION && TC + select SERIAL_CORE + help + Zilog Z8530 serial controllers on DECstation machines using the + TurboChannel bus. + +config SERIAL_ZS_CONSOLE + bool "Support console on DECstation Zilog Z8530" + depends on SERIAL_ZS=y + select SERIAL_CORE_CONSOLE + help + If you say Y here, it will be possible to use a serial port as the + system console (the system console is the device which receives all + kernel messages and warnings and which allows logins in single user + mode). Note that the firmware uses ttyS0 as the serial console on + the Maxine and ttyS2 on the others. + + If unsure, say Y. + config SERIAL_21285 tristate "DC21285 serial port support" depends on ARM && FOOTBRIDGE diff --git a/drivers/serial/ip22zilog.c b/drivers/serial/ip22zilog.c diff --git a/drivers/tc/Makefile b/drivers/tc/Makefile index 83b5bd7..885d82f 100644 --- a/drivers/tc/Makefile +++ b/drivers/tc/Makefile @@ -5,7 +5,7 @@ # Object file lists. obj-$(CONFIG_TC) += tc.o -obj-$(CONFIG_ZS) += zs.o +obj-$(CONFIG_SERIAL_ZS) += zs.o obj-$(CONFIG_VT) += lk201.o lk201-map.o lk201-remap.o $(obj)/lk201-map.o: $(obj)/lk201-map.c diff --git a/drivers/tc/zs.c b/drivers/tc/zs.c index 2dffa8e..960f552 100644 --- a/drivers/tc/zs.c +++ b/drivers/tc/zs.c @@ -56,7 +56,7 @@ #include <linux/init.h> #include <linux/ioport.h> #include <linux/spinlock.h> -#ifdef CONFIG_SERIAL_DEC_CONSOLE +#ifdef CONFIG_SERIAL_CORE_CONSOLE #include <linux/console.h> #endif @@ -137,10 +137,10 @@ struct dec_serial *zs_chain; /* list of struct tty_struct zs_ttys[NUM_CHANNELS]; -#ifdef CONFIG_SERIAL_DEC_CONSOLE +#ifdef CONFIG_SERIAL_CORE_CONSOLE static struct console sercons; #endif -#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \ +#if defined(CONFIG_SERIAL_CORE_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \ !defined(MODULE) static unsigned long break_pressed; /* break, really ... */ #endif @@ -383,7 +383,7 @@ static void receive_chars(struct dec_ser write_zsreg(info->zs_channel, R0, ERR_RES); } -#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \ +#if defined(CONFIG_SERIAL_CORE_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \ !defined(MODULE) if (break_pressed && info->line == sercons.index) { /* Ignore the null char got when BREAK is removed. */ @@ -446,7 +446,7 @@ static void status_handle(struct dec_ser stat = read_zsreg(info->zs_channel, R0); if ((stat & BRK_ABRT) && !(info->read_reg_zero & BRK_ABRT)) { -#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \ +#if defined(CONFIG_SERIAL_CORE_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \ !defined(MODULE) if (info->line == sercons.index) { if (!break_pressed) @@ -1560,7 +1560,7 @@ static int rs_open(struct tty_struct *tt return retval; } -#ifdef CONFIG_SERIAL_DEC_CONSOLE +#ifdef CONFIG_SERIAL_CORE_CONSOLE if (sercons.cflag && sercons.index == line) { tty->termios->c_cflag = sercons.cflag; sercons.cflag = 0; @@ -1643,7 +1643,7 @@ static void __init probe_sccs(void) zs_channels[n_channels].data = zs_channels[n_channels].control + 4; -#ifndef CONFIG_SERIAL_DEC_CONSOLE +#ifndef CONFIG_SERIAL_CORE_CONSOLE /* * We're called early and memory managment isn't up, yet. * Thus request_region would fail. @@ -1894,7 +1894,7 @@ int unregister_zs_hook(unsigned int chan * Serial console driver * ------------------------------------------------------------ */ -#ifdef CONFIG_SERIAL_DEC_CONSOLE +#ifdef CONFIG_SERIAL_CORE_CONSOLE /* @@ -2090,7 +2090,7 @@ void __init zs_serial_console_init(void) { register_console(&sercons); } -#endif /* ifdef CONFIG_SERIAL_DEC_CONSOLE */ +#endif /* ifdef CONFIG_SERIAL_CORE_CONSOLE */ #ifdef CONFIG_KGDB struct dec_zschannel *zs_kgdbchan; -- Martin Michlmayr http://www.cyrius.com/