Change to sio for recognising the last serial port on a multiport

card correctly.

Updated syscons to 0.2e, added features for upcoming XFree86 2.0,
fixed crashbug.
This commit is contained in:
Jordan K. Hubbard 1993-09-28 00:01:18 +00:00
parent b6c78fe436
commit fae56ff15f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=512
6 changed files with 66 additions and 33 deletions

View File

@ -41,7 +41,7 @@
* into the patch kit. Added in sioselect * into the patch kit. Added in sioselect
* from com.c. Added port 4 support. * from com.c. Added port 4 support.
*/ */
static char rcsid[] = "$Header: /a/cvs/386BSD/src/sys/i386/isa/sio.c,v 1.7 1993/09/08 17:38:05 rgrimes Exp $"; static char rcsid[] = "$Header: /a/cvs/386BSD/src/sys/i386/isa/sio.c,v 1.8 1993/09/10 16:59:16 rgrimes Exp $";
#include "sio.h" #include "sio.h"
#if NSIO > 0 #if NSIO > 0
@ -467,8 +467,12 @@ sioattach(isdp)
scr2 = inb(iobase + com_scr); scr2 = inb(iobase + com_scr);
outb(iobase + com_scr, scr); outb(iobase + com_scr, scr);
printf("sio%d: type", unit); printf("sio%d: type", unit);
#ifdef COM_MULTIPORT
if (0);
#else
if (scr1 != 0xa5 || scr2 != 0x5a) if (scr1 != 0xa5 || scr2 != 0x5a)
printf(" <8250>"); printf(" <8250>");
#endif
else { else {
outb(iobase + com_fifo, FIFO_ENABLE | FIFO_TRIGGER_14); outb(iobase + com_fifo, FIFO_ENABLE | FIFO_TRIGGER_14);
DELAY(100); DELAY(100);

View File

@ -35,11 +35,11 @@
* *
*/ */
/* /*
* Heavily modified by Søren Schmidt (sos@kmd-ac.dk) to provide: * Heavily modified by Søren Schmidt (sos@login.dkuug.dk) to provide:
* *
* virtual consoles, SYSV ioctl's, ANSI emulation * virtual consoles, SYSV ioctl's, ANSI emulation
* *
* @(#)syscons.c 0.2d 930908 * @(#)syscons.c 0.2e 930924
* Derived from: * Derived from:
* @(#)pccons.c 5.11 (Berkeley) 5/21/91 * @(#)pccons.c 5.11 (Berkeley) 5/21/91
*/ */
@ -297,14 +297,14 @@ int pcattach(struct isa_device *dev)
if (crtc_vga) if (crtc_vga)
if (crtc_addr == MONO_BASE) if (crtc_addr == MONO_BASE)
printf(" VGA mono"); printf("VGA mono");
else else
printf(" VGA color"); printf("VGA color");
else else
if (crtc_addr == MONO_BASE) if (crtc_addr == MONO_BASE)
printf(" MDA/hercules"); printf("MDA/hercules");
else else
printf(" CGA/EGA"); printf("CGA/EGA");
if (NCONS > 1) if (NCONS > 1)
printf(" <%d virtual consoles>\n", NCONS); printf(" <%d virtual consoles>\n", NCONS);
@ -463,6 +463,8 @@ scintr(dev_t dev, int irq, int cpl)
c = sgetc(1); c = sgetc(1);
if (c & 0x100) if (c & 0x100)
return; return;
if ((cur_pccons->t_state & TS_ISOPEN) == 0)
return;
if (pcconsoftc.cs_flags & CSF_POLLING) if (pcconsoftc.cs_flags & CSF_POLLING)
return; return;
if (c < 0x100) if (c < 0x100)
@ -492,7 +494,7 @@ pcparam(struct tty *tp, struct termios *t)
pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{ {
int error; int i, error;
struct tty *tp; struct tty *tp;
struct syscframe *fp; struct syscframe *fp;
scr_stat *scp; scr_stat *scp;
@ -608,9 +610,14 @@ pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
} }
/* NOT REACHED */ /* NOT REACHED */
case VT_OPENQRY: /* return free virtual cons, allways current */ case VT_OPENQRY: /* return free virtual console */
*data = get_scr_num(scp); for (i = 0; i < NCONS; i++)
return 0; if (!(pccons[i].t_state & TS_ISOPEN)) {
*data = i + 1;
return 0;
}
return EINVAL;
/* NOT REACHED */
case VT_ACTIVATE: /* switch to screen *data */ case VT_ACTIVATE: /* switch to screen *data */
return switch_scr((*data) - 1); return switch_scr((*data) - 1);

View File

@ -41,7 +41,7 @@
* into the patch kit. Added in sioselect * into the patch kit. Added in sioselect
* from com.c. Added port 4 support. * from com.c. Added port 4 support.
*/ */
static char rcsid[] = "$Header: /a/cvs/386BSD/src/sys/i386/isa/sio.c,v 1.7 1993/09/08 17:38:05 rgrimes Exp $"; static char rcsid[] = "$Header: /a/cvs/386BSD/src/sys/i386/isa/sio.c,v 1.8 1993/09/10 16:59:16 rgrimes Exp $";
#include "sio.h" #include "sio.h"
#if NSIO > 0 #if NSIO > 0
@ -467,8 +467,12 @@ sioattach(isdp)
scr2 = inb(iobase + com_scr); scr2 = inb(iobase + com_scr);
outb(iobase + com_scr, scr); outb(iobase + com_scr, scr);
printf("sio%d: type", unit); printf("sio%d: type", unit);
#ifdef COM_MULTIPORT
if (0);
#else
if (scr1 != 0xa5 || scr2 != 0x5a) if (scr1 != 0xa5 || scr2 != 0x5a)
printf(" <8250>"); printf(" <8250>");
#endif
else { else {
outb(iobase + com_fifo, FIFO_ENABLE | FIFO_TRIGGER_14); outb(iobase + com_fifo, FIFO_ENABLE | FIFO_TRIGGER_14);
DELAY(100); DELAY(100);

View File

@ -35,11 +35,11 @@
* *
*/ */
/* /*
* Heavily modified by Søren Schmidt (sos@kmd-ac.dk) to provide: * Heavily modified by Søren Schmidt (sos@login.dkuug.dk) to provide:
* *
* virtual consoles, SYSV ioctl's, ANSI emulation * virtual consoles, SYSV ioctl's, ANSI emulation
* *
* @(#)syscons.c 0.2d 930908 * @(#)syscons.c 0.2e 930924
* Derived from: * Derived from:
* @(#)pccons.c 5.11 (Berkeley) 5/21/91 * @(#)pccons.c 5.11 (Berkeley) 5/21/91
*/ */
@ -297,14 +297,14 @@ int pcattach(struct isa_device *dev)
if (crtc_vga) if (crtc_vga)
if (crtc_addr == MONO_BASE) if (crtc_addr == MONO_BASE)
printf(" VGA mono"); printf("VGA mono");
else else
printf(" VGA color"); printf("VGA color");
else else
if (crtc_addr == MONO_BASE) if (crtc_addr == MONO_BASE)
printf(" MDA/hercules"); printf("MDA/hercules");
else else
printf(" CGA/EGA"); printf("CGA/EGA");
if (NCONS > 1) if (NCONS > 1)
printf(" <%d virtual consoles>\n", NCONS); printf(" <%d virtual consoles>\n", NCONS);
@ -463,6 +463,8 @@ scintr(dev_t dev, int irq, int cpl)
c = sgetc(1); c = sgetc(1);
if (c & 0x100) if (c & 0x100)
return; return;
if ((cur_pccons->t_state & TS_ISOPEN) == 0)
return;
if (pcconsoftc.cs_flags & CSF_POLLING) if (pcconsoftc.cs_flags & CSF_POLLING)
return; return;
if (c < 0x100) if (c < 0x100)
@ -492,7 +494,7 @@ pcparam(struct tty *tp, struct termios *t)
pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{ {
int error; int i, error;
struct tty *tp; struct tty *tp;
struct syscframe *fp; struct syscframe *fp;
scr_stat *scp; scr_stat *scp;
@ -608,9 +610,14 @@ pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
} }
/* NOT REACHED */ /* NOT REACHED */
case VT_OPENQRY: /* return free virtual cons, allways current */ case VT_OPENQRY: /* return free virtual console */
*data = get_scr_num(scp); for (i = 0; i < NCONS; i++)
return 0; if (!(pccons[i].t_state & TS_ISOPEN)) {
*data = i + 1;
return 0;
}
return EINVAL;
/* NOT REACHED */
case VT_ACTIVATE: /* switch to screen *data */ case VT_ACTIVATE: /* switch to screen *data */
return switch_scr((*data) - 1); return switch_scr((*data) - 1);

View File

@ -41,7 +41,7 @@
* into the patch kit. Added in sioselect * into the patch kit. Added in sioselect
* from com.c. Added port 4 support. * from com.c. Added port 4 support.
*/ */
static char rcsid[] = "$Header: /a/cvs/386BSD/src/sys/i386/isa/sio.c,v 1.7 1993/09/08 17:38:05 rgrimes Exp $"; static char rcsid[] = "$Header: /a/cvs/386BSD/src/sys/i386/isa/sio.c,v 1.8 1993/09/10 16:59:16 rgrimes Exp $";
#include "sio.h" #include "sio.h"
#if NSIO > 0 #if NSIO > 0
@ -467,8 +467,12 @@ sioattach(isdp)
scr2 = inb(iobase + com_scr); scr2 = inb(iobase + com_scr);
outb(iobase + com_scr, scr); outb(iobase + com_scr, scr);
printf("sio%d: type", unit); printf("sio%d: type", unit);
#ifdef COM_MULTIPORT
if (0);
#else
if (scr1 != 0xa5 || scr2 != 0x5a) if (scr1 != 0xa5 || scr2 != 0x5a)
printf(" <8250>"); printf(" <8250>");
#endif
else { else {
outb(iobase + com_fifo, FIFO_ENABLE | FIFO_TRIGGER_14); outb(iobase + com_fifo, FIFO_ENABLE | FIFO_TRIGGER_14);
DELAY(100); DELAY(100);

View File

@ -35,11 +35,11 @@
* *
*/ */
/* /*
* Heavily modified by Søren Schmidt (sos@kmd-ac.dk) to provide: * Heavily modified by Søren Schmidt (sos@login.dkuug.dk) to provide:
* *
* virtual consoles, SYSV ioctl's, ANSI emulation * virtual consoles, SYSV ioctl's, ANSI emulation
* *
* @(#)syscons.c 0.2d 930908 * @(#)syscons.c 0.2e 930924
* Derived from: * Derived from:
* @(#)pccons.c 5.11 (Berkeley) 5/21/91 * @(#)pccons.c 5.11 (Berkeley) 5/21/91
*/ */
@ -297,14 +297,14 @@ int pcattach(struct isa_device *dev)
if (crtc_vga) if (crtc_vga)
if (crtc_addr == MONO_BASE) if (crtc_addr == MONO_BASE)
printf(" VGA mono"); printf("VGA mono");
else else
printf(" VGA color"); printf("VGA color");
else else
if (crtc_addr == MONO_BASE) if (crtc_addr == MONO_BASE)
printf(" MDA/hercules"); printf("MDA/hercules");
else else
printf(" CGA/EGA"); printf("CGA/EGA");
if (NCONS > 1) if (NCONS > 1)
printf(" <%d virtual consoles>\n", NCONS); printf(" <%d virtual consoles>\n", NCONS);
@ -463,6 +463,8 @@ scintr(dev_t dev, int irq, int cpl)
c = sgetc(1); c = sgetc(1);
if (c & 0x100) if (c & 0x100)
return; return;
if ((cur_pccons->t_state & TS_ISOPEN) == 0)
return;
if (pcconsoftc.cs_flags & CSF_POLLING) if (pcconsoftc.cs_flags & CSF_POLLING)
return; return;
if (c < 0x100) if (c < 0x100)
@ -492,7 +494,7 @@ pcparam(struct tty *tp, struct termios *t)
pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{ {
int error; int i, error;
struct tty *tp; struct tty *tp;
struct syscframe *fp; struct syscframe *fp;
scr_stat *scp; scr_stat *scp;
@ -608,9 +610,14 @@ pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
} }
/* NOT REACHED */ /* NOT REACHED */
case VT_OPENQRY: /* return free virtual cons, allways current */ case VT_OPENQRY: /* return free virtual console */
*data = get_scr_num(scp); for (i = 0; i < NCONS; i++)
return 0; if (!(pccons[i].t_state & TS_ISOPEN)) {
*data = i + 1;
return 0;
}
return EINVAL;
/* NOT REACHED */
case VT_ACTIVATE: /* switch to screen *data */ case VT_ACTIVATE: /* switch to screen *data */
return switch_scr((*data) - 1); return switch_scr((*data) - 1);