summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/dev/bugtty.c
diff options
context:
space:
mode:
authorDale S. Rahn <rahnds@cvs.openbsd.org>1997-03-03 19:08:44 +0000
committerDale S. Rahn <rahnds@cvs.openbsd.org>1997-03-03 19:08:44 +0000
commit787fa51745fb95eeb01962d519fd60073f503c0c (patch)
tree8338976f469ead8b064d407c7b2aa2f9963a44b3 /sys/arch/mvme88k/dev/bugtty.c
parent031c14d03c6210d5b329ac3256dba53a0fb9135a (diff)
This is a remove to get rid of the old mvme88k port which was incomplete
to replace it with a working version. The kernel compiles and works at least. The new version will be imported shortly.
Diffstat (limited to 'sys/arch/mvme88k/dev/bugtty.c')
-rw-r--r--sys/arch/mvme88k/dev/bugtty.c490
1 files changed, 0 insertions, 490 deletions
diff --git a/sys/arch/mvme88k/dev/bugtty.c b/sys/arch/mvme88k/dev/bugtty.c
deleted file mode 100644
index 48f668a3102..00000000000
--- a/sys/arch/mvme88k/dev/bugtty.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/* $NetBSD$ */
-
-/*
- * Copyright (c) 1995 Dale Rahn.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Dale Rahn.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/ioctl.h>
-#include <sys/device.h>
-#include <sys/tty.h>
-#include <sys/proc.h>
-#include <sys/conf.h>
-#include <sys/uio.h>
-#include <sys/queue.h>
-#include <dev/cons.h>
-
-#include <machine/autoconf.h>
-#include <machine/cpu.h>
-
-#include "bugtty.h"
-
-int bugttymatch __P((struct device *parent, void *self, void *aux));
-void bugttyattach __P((struct device *parent, struct device *self, void *aux));
-
-struct cfdriver bugttycd = {
- NULL, "bugtty", bugttymatch, bugttyattach,
- DV_TTY, sizeof(struct device)
-};
-
-/* prototypes */
-int bugttycnprobe __P((struct consdev *cp));
-int bugttycninit __P((struct consdev *cp));
-int bugttycngetc __P((dev_t dev));
-int bugttycnputc __P((dev_t dev, char c));
-
-int bugttyopen __P((dev_t dev, int flag, int mode, struct proc *p));
-int bugttyclose __P((dev_t dev, int flag, int mode, struct proc *p));
-int bugttyread __P((dev_t dev, struct uio *uio, int flag));
-int bugttywrite __P((dev_t dev, struct uio *uio, int flag));
-int bugttyioctl __P((dev_t dev, int cmd, caddr_t data, int flag, struct proc *p));
-int bugttystop __P((struct tty *tp, int flag));
-
-#define DIALOUT(x) ((x) & 0x80)
-#define SWFLAGS(dev) (bugttyswflags | (DIALOUT(dev) ? TIOCFLAG_SOFTCAR : 0))
-
-#define BUGBUF 80
-char bugtty_ibuffer[BUGBUF+1];
-volatile char *pinchar = bugtty_ibuffer;
-char bug_obuffer[BUGBUF+1];
-
-#define bugtty_tty bugttytty
-struct tty *bugtty_tty[NBUGTTY];
-int needprom = 1;
-
-int
-bugttymatch(parent, self, aux)
- struct device *parent;
- void *self;
- void *aux;
-{
- extern int needprom;
-
- if (needprom == 0)
- return (0);
- return (1);
-}
-
-void
-bugttyattach(parent, self, aux)
- struct device *parent;
- struct device *self;
- void *aux;
-{
- printf("\n");
-}
-
-#define BUGTTYUNIT(x) ((x) & (0x7f))
-void bugttyoutput __P((struct tty *tp));
-
-int bugttydefaultrate = TTYDEF_SPEED;
-int bugttyswflags;
-
-int
-bugttymctl(dev, bits, how)
- dev_t dev;
- int bits, how;
-{
- static int settings = TIOCM_DTR | TIOCM_RTS |
- TIOCM_CTS | TIOCM_CD | TIOCM_DSR;
- int s;
-
- /*printf("mctl: dev %x, bits %x, how %x,",dev, bits, how);*/
-
- /* settings are currently ignored */
- s = spltty();
- switch (how) {
- case DMSET:
- break;
- case DMBIC:
- break;
- case DMBIS:
- break;
- case DMGET:
- break;
- }
- (void)splx(s);
-
- bits = 0;
- /* proper defaults? */
- bits |= TIOCM_DTR;
- bits |= TIOCM_RTS;
- bits |= TIOCM_CTS;
- bits |= TIOCM_CD;
- /* bits |= TIOCM_RI; */
- bits |= TIOCM_DSR;
-
- /* printf("retbits %x\n", bits); */
- return (bits);
-}
-
-int
-bugttyopen(dev, flag, mode, p)
- dev_t dev;
- int flag, mode;
- struct proc *p;
-{
- int s, unit = BUGTTYUNIT(dev);
- struct tty *tp;
- extern int needprom;
-
- if (needprom == 0)
- return (ENODEV);
-
- s = spltty();
- if (bugtty_tty[unit]) {
- tp = bugtty_tty[unit];
- } else {
- tp = bugtty_tty[unit] = ttymalloc();
- }
- tp->t_oproc = bugttyoutput;
- tp->t_param = NULL;
- tp->t_dev = dev;
-
- if ((tp->t_state & TS_ISOPEN) == 0) {
- tp->t_state |= TS_WOPEN;
- ttychars(tp);
- if (tp->t_ispeed == 0) {
- /*
- * only when cleared do we reset to defaults.
- */
- tp->t_iflag = TTYDEF_IFLAG;
- tp->t_oflag = TTYDEF_OFLAG;
- tp->t_cflag = TTYDEF_CFLAG;
- tp->t_lflag = TTYDEF_LFLAG;
- tp->t_ispeed = tp->t_ospeed = bugttydefaultrate;
- }
- /* bugtty does not have carrier */
- tp->t_cflag |= CLOCAL;
- /*
- * do these all the time
- */
- if (bugttyswflags & TIOCFLAG_CLOCAL)
- tp->t_cflag |= CLOCAL;
- if (bugttyswflags & TIOCFLAG_CRTSCTS)
- tp->t_cflag |= CRTSCTS;
- if (bugttyswflags & TIOCFLAG_MDMBUF)
- tp->t_cflag |= MDMBUF;
- bugttyparam(tp, &tp->t_termios);
- ttsetwater(tp);
-
- (void)bugttymctl(dev, TIOCM_DTR | TIOCM_RTS, DMSET);
- /*
- if ((SWFLAGS(dev) & TIOCFLAG_SOFTCAR) ||
- (bugttymctl(dev, 0, DMGET) & TIOCM_CD))
- tp->t_state |= TS_CARR_ON;
- else
- tp->t_state &= ~TS_CARR_ON;
- */
- tp->t_state |= TS_CARR_ON;
- } else if (tp->t_state & TS_XCLUDE && p->p_ucred->cr_uid != 0) {
- splx(s);
- return (EBUSY);
- }
-
- /*
- * if NONBLOCK requested, ignore carrier
- */
-/*
- if (flag & O_NONBLOCK)
- goto done;
-*/
-
- splx(s);
- /*
- * Reset the tty pointer, as there could have been a dialout
- * use of the tty with a dialin open waiting.
- */
- tp->t_dev = dev;
- return ((*linesw[tp->t_line].l_open)(dev, tp));
-}
-
-int
-bugttyparam()
-{
- return (0);
-}
-
-void
-bugttyoutput(tp)
- struct tty *tp;
-{
- int cc, s, unit, cnt ;
-
- /* only supports one unit */
-
- if ((tp->t_state & TS_ISOPEN) == 0)
- return;
-
- s = spltty();
- cc = tp->t_outq.c_cc;
- while (cc > 0) {
- cnt = min(BUGBUF, cc);
- cnt = q_to_b(&tp->t_outq, bug_obuffer, cnt);
- bugoutstr(bug_obuffer, &bug_obuffer[cnt]);
- cc -= cnt;
- }
- splx(s);
-}
-
-int
-bugttyclose(dev, flag, mode, p)
- dev_t dev;
- int flag, mode;
- struct proc *p;
-{
- int unit = BUGTTYUNIT(dev);
- struct tty *tp = bugtty_tty[unit];
-
- (*linesw[tp->t_line].l_close)(tp, flag);
-
- ttyclose(tp);
-#if 0
- bugtty_tty[unit] = NULL;
-#endif
- return (0);
-}
-
-int
-bugttyread(dev, uio, flag)
- dev_t dev;
- struct uio *uio;
- int flag;
-{
- struct tty *tp;
-
- if ((tp = bugtty_tty[BUGTTYUNIT(dev)]) == NULL)
- return (ENXIO);
- return ((*linesw[tp->t_line].l_read)(tp, uio, flag));
-}
-
-#if 1
-/* only to be called at splclk() */
-bugtty_chkinput()
-{
- struct tty *tp;
-
- tp = bugtty_tty[0]; /* Kinda ugly hack */
- if (tp == NULL )
- return;
-
- if (buginstat()) {
- while (buginstat()) {
- u_char c = buginchr() & 0xff;
- (*linesw[tp->t_line].l_rint)(c, tp);
- }
- /*
- wakeup(tp);
- */
- }
-}
-#endif
-
-int
-bugttywrite(dev, uio, flag)
- dev_t dev;
- struct uio *uio;
- int flag;
-{
-#if 0
- /* bypass tty output routines. */
- int i, cnt, s;
- int oldoff;
-
- s = spltty();
- oldoff = uio->uio_offset;
- do {
- uiomove(bug_obuffer, BUGBUF, uio);
- bugoutstr(bug_obuffer, &bug_obuffer[uio->uio_offset - oldoff]);
- oldoff = uio->uio_offset;
- } while (uio->uio_resid != 0);
- splx(s);
-
- return (0);
-#else
- struct tty *tp;
- if((tp = bugtty_tty[BUGTTYUNIT(dev)]) == NULL)
- return (ENXIO);
- return ((*linesw[tp->t_line].l_write)(tp, uio, flag));
-#endif
-}
-
-int
-bugttyioctl(dev, cmd, data, flag, p)
- dev_t dev;
- int cmd;
- caddr_t data;
- int flag;
- struct proc *p;
-{
- int unit = BUGTTYUNIT(dev);
- struct tty *tp = bugtty_tty[unit];
- int error;
-
- if (!tp)
- return (ENXIO);
-
- error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag, p);
- if (error >= 0)
- return (error);
-
- error = ttioctl(tp, cmd, data, flag, p);
- if (error >= 0)
- return (error);
-
- switch (cmd) {
- case TIOCSBRK:
- /* */
- break;
-
- case TIOCCBRK:
- /* */
- break;
-
- case TIOCSDTR:
- (void) bugttymctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIS);
- break;
-
- case TIOCCDTR:
- (void) bugttymctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIC);
- break;
-
- case TIOCMSET:
- (void) bugttymctl(dev, *(int *) data, DMSET);
- break;
-
- case TIOCMBIS:
- (void) bugttymctl(dev, *(int *) data, DMBIS);
- break;
-
- case TIOCMBIC:
- (void) bugttymctl(dev, *(int *) data, DMBIC);
- break;
-
- case TIOCMGET:
- *(int *)data = bugttymctl(dev, 0, DMGET);
- break;
- case TIOCGFLAGS:
- *(int *)data = SWFLAGS(dev);
- break;
- case TIOCSFLAGS:
- error = suser(p->p_ucred, &p->p_acflag);
- if (error != 0)
- return (EPERM);
-
- bugttyswflags = *(int *)data;
- bugttyswflags &= /* only allow valid flags */
- (TIOCFLAG_SOFTCAR | TIOCFLAG_CLOCAL | TIOCFLAG_CRTSCTS);
- break;
- default:
- return (ENOTTY);
- }
-
- return (0);
-}
-
-int
-bugttystop(tp, flag)
- struct tty *tp;
- int flag;
-{
- int s;
-
- s = spltty();
- if (tp->t_state & TS_BUSY) {
- if ((tp->t_state & TS_TTSTOP) == 0)
- tp->t_state |= TS_FLUSH;
- }
- splx(s);
- return (0);
-}
-
-/*
- * bugtty is the last possible choice for a console device.
- */
-int
-bugttycnprobe(cp)
- struct consdev *cp;
-{
- int maj;
- extern int needprom;
-
- if (needprom == 0) {
- cp->cn_pri = CN_DEAD;
- return (0);
- }
-
-#if 0
- switch (cputyp) {
- case CPU_147:
- case CPU_162:
- cp->cn_pri = CN_NORMAL;
- return (0);
- default:
- break;
- }
-#else
- cp->cn_pri = CN_NORMAL;
- return (0);
-#endif /* 0 */
-
- /* locate the major number */
- for (maj = 0; maj < nchrdev; maj++)
- if (cdevsw[maj].d_open == bugttyopen)
- break;
-
- cp->cn_dev = makedev(maj, 0);
- cp->cn_pri = CN_NORMAL;
-
- return (1);
-}
-
-int
-bugttycninit(cp)
- struct consdev *cp;
-{
-}
-
-int
-bugttycngetc(dev)
- dev_t dev;
-{
- return (buginchr());
-}
-
-int
-bugttycnputc(dev, c)
- dev_t dev;
- char c;
-{
- if (c == '\n')
- bugoutchr('\r');
- bugoutchr(c);
-}