summaryrefslogtreecommitdiff
path: root/sys/dev/dec
diff options
context:
space:
mode:
authormatt <matt@NetBSD.org>2008-03-11 05:34:01 +0000
committermatt <matt@NetBSD.org>2008-03-11 05:34:01 +0000
commitdfba816635b288ffc525cb86146857ef1a9333c3 (patch)
tree898fe10604ba10d8d2a1f5c5550d1440a5c64dae /sys/dev/dec
parent0e65dd74d1d276a3124e93332c1864e95151d7d1 (diff)
Rototill the vax code. Switch to devicet/PRIV_ALLOC. Cleanup vax autoconf
code. Move to prototype definitions. staticfy, constify, avoid casting. Use device_* accessors.
Diffstat (limited to 'sys/dev/dec')
-rw-r--r--sys/dev/dec/dz.c134
1 files changed, 49 insertions, 85 deletions
diff --git a/sys/dev/dec/dz.c b/sys/dev/dec/dz.c
index e399b8a7810..f1482a04e36 100644
--- a/sys/dev/dec/dz.c
+++ b/sys/dev/dec/dz.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dz.c,v 1.33 2007/11/20 09:16:53 yamt Exp $ */
+/* $NetBSD: dz.c,v 1.34 2008/03/11 05:34:01 matt Exp $ */
/*
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dz.c,v 1.33 2007/11/20 09:16:53 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dz.c,v 1.34 2008/03/11 05:34:01 matt Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -177,14 +177,14 @@ static int dzparam(struct tty *, struct termios *);
static unsigned dzmctl(struct dz_softc *, int, int, int);
static void dzscan(void *);
-dev_type_open(dzopen);
-dev_type_close(dzclose);
-dev_type_read(dzread);
-dev_type_write(dzwrite);
-dev_type_ioctl(dzioctl);
-dev_type_stop(dzstop);
-dev_type_tty(dztty);
-dev_type_poll(dzpoll);
+static dev_type_open(dzopen);
+static dev_type_close(dzclose);
+static dev_type_read(dzread);
+static dev_type_write(dzwrite);
+static dev_type_ioctl(dzioctl);
+static dev_type_stop(dzstop);
+static dev_type_tty(dztty);
+static dev_type_poll(dzpoll);
const struct cdevsw dz_cdevsw = {
dzopen, dzclose, dzread, dzwrite, dzioctl,
@@ -222,9 +222,9 @@ dzattach(struct dz_softc *sc, struct evcnt *parent_evcnt, int consline)
}
evcnt_attach_dynamic(&sc->sc_rintrcnt, EVCNT_TYPE_INTR, parent_evcnt,
- sc->sc_dev.dv_xname, "rintr");
+ device_xname(&sc->sc_dev), "rintr");
evcnt_attach_dynamic(&sc->sc_tintrcnt, EVCNT_TYPE_INTR, parent_evcnt,
- sc->sc_dev.dv_xname, "tintr");
+ device_xname(&sc->sc_dev), "tintr");
/* Console magic keys */
cn_init_magic(&dz_cnm_state);
@@ -277,7 +277,7 @@ dzrint(void *arg)
if ((c & DZ_RBUF_OVERRUN_ERR) && overrun == 0) {
log(LOG_WARNING, "%s: silo overflow, line %d\n",
- sc->sc_dev.dv_xname, line);
+ device_xname(&sc->sc_dev), line);
overrun = 1;
}
@@ -359,19 +359,12 @@ dzxint(void *arg)
int
dzopen(dev_t dev, int flag, int mode, struct lwp *l)
{
+ const int line = DZ_PORT(minor(dev));
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(dev)));
struct tty *tp;
- int unit, line;
- struct dz_softc *sc;
int error = 0;
- unit = DZ_I2C(minor(dev));
- line = DZ_PORT(minor(dev));
- if (unit >= dz_cd.cd_ndevs || dz_cd.cd_devs[unit] == NULL)
- return (ENXIO);
-
- sc = dz_cd.cd_devs[unit];
-
- if (line >= sc->sc_type)
+ if (sc == NULL || line >= sc->sc_type)
return ENXIO;
/* if some other device is using the line, it's busy */
@@ -381,8 +374,8 @@ dzopen(dev_t dev, int flag, int mode, struct lwp *l)
tp = sc->sc_dz[line].dz_tty;
if (tp == NULL)
return (ENODEV);
- tp->t_oproc = dzstart;
- tp->t_param = dzparam;
+ tp->t_oproc = dzstart;
+ tp->t_param = dzparam;
tp->t_dev = dev;
if (kauth_authorize_device_tty(l->l_cred, KAUTH_DEVICE_TTY_OPEN, tp))
@@ -423,16 +416,9 @@ dzopen(dev_t dev, int flag, int mode, struct lwp *l)
int
dzclose(dev_t dev, int flag, int mode, struct lwp *l)
{
- struct dz_softc *sc;
- struct tty *tp;
- int unit, line;
-
-
- unit = DZ_I2C(minor(dev));
- line = DZ_PORT(minor(dev));
- sc = dz_cd.cd_devs[unit];
-
- tp = sc->sc_dz[line].dz_tty;
+ const int line = DZ_PORT(minor(dev));
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(dev)));
+ struct tty *tp = sc->sc_dz[line].dz_tty;
(*tp->t_linesw->l_close)(tp, flag);
@@ -443,44 +429,32 @@ dzclose(dev_t dev, int flag, int mode, struct lwp *l)
if ((tp->t_cflag & HUPCL) || tp->t_wopen || !(tp->t_state & TS_ISOPEN))
(void) dzmctl(sc, line, 0, DMSET);
- return (ttyclose(tp));
+ return ttyclose(tp);
}
int
dzread(dev_t dev, struct uio *uio, int flag)
{
- struct tty *tp;
- struct dz_softc *sc;
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(dev)));
+ struct tty *tp = sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
- sc = dz_cd.cd_devs[DZ_I2C(minor(dev))];
-
- tp = sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
return ((*tp->t_linesw->l_read)(tp, uio, flag));
}
int
dzwrite(dev_t dev, struct uio *uio, int flag)
{
- struct tty *tp;
- struct dz_softc *sc;
-
- sc = dz_cd.cd_devs[DZ_I2C(minor(dev))];
- tp = sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(dev)));
+ struct tty *tp = sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
return ((*tp->t_linesw->l_write)(tp, uio, flag));
}
int
-dzpoll(dev, events, l)
- dev_t dev;
- int events;
- struct lwp *l;
+dzpoll(dev_t dev, int events, struct lwp *l)
{
- struct tty *tp;
- struct dz_softc *sc;
-
- sc = dz_cd.cd_devs[DZ_I2C(minor(dev))];
- tp = sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(dev)));
+ struct tty *tp = sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
return ((*tp->t_linesw->l_poll)(tp, events, l));
}
@@ -489,16 +463,11 @@ dzpoll(dev, events, l)
int
dzioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
{
- struct dz_softc *sc;
- struct tty *tp;
- int unit, line;
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(dev)));
+ const int line = DZ_PORT(minor(dev));
+ struct tty *tp = sc->sc_dz[line].dz_tty;
int error;
- unit = DZ_I2C(minor(dev));
- line = DZ_PORT(minor(dev));
- sc = dz_cd.cd_devs[unit];
- tp = sc->sc_dz[line].dz_tty;
-
error = (*tp->t_linesw->l_ioctl)(tp, cmd, data, flag, l);
if (error >= 0)
return (error);
@@ -549,20 +518,15 @@ dzioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
struct tty *
dztty(dev_t dev)
{
- struct dz_softc *sc;
- struct tty *tp;
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(dev)));
- sc = dz_cd.cd_devs[DZ_I2C(minor(dev))];
- tp = sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
-
- return (tp);
+ return sc->sc_dz[DZ_PORT(minor(dev))].dz_tty;
}
/*ARGSUSED*/
void
dzstop(struct tty *tp, int flag)
{
-
if ((tp->t_state & (TS_BUSY | TS_TTSTOP)) == TS_BUSY)
tp->t_state |= TS_FLUSH;
}
@@ -571,20 +535,23 @@ void
dzstart(struct tty *tp)
{
struct dz_softc *sc;
- int unit, line, s;
+ int line;
+ int s;
char state;
- unit = DZ_I2C(minor(tp->t_dev));
- line = DZ_PORT(minor(tp->t_dev));
- sc = dz_cd.cd_devs[unit];
-
s = spltty();
if (tp->t_state & (TS_TIMEOUT|TS_BUSY|TS_TTSTOP)) {
splx(s);
return;
}
- if (!ttypull(tp))
+ if (!ttypull(tp)) {
+ splx(s);
return;
+ }
+
+ line = DZ_PORT(minor(tp->t_dev));
+ sc = device_lookup(&dz_cd, DZ_I2C(minor(tp->t_dev)));
+
tp->t_state |= TS_BUSY;
state = dz_read2(sc, sc->sc_dr.dr_tcrw) & 255;
if ((state & (1 << line)) == 0)
@@ -596,18 +563,14 @@ dzstart(struct tty *tp)
static int
dzparam(struct tty *tp, struct termios *t)
{
- struct dz_softc *sc;
+ struct dz_softc *sc = device_lookup(&dz_cd, DZ_I2C(minor(tp->t_dev)));
+ const int line = DZ_PORT(minor(tp->t_dev));
int cflag = t->c_cflag;
- int unit, line;
int ispeed = ttspeedtab(t->c_ispeed, dzspeedtab);
int ospeed = ttspeedtab(t->c_ospeed, dzspeedtab);
unsigned lpr;
int s;
- unit = DZ_I2C(minor(tp->t_dev));
- line = DZ_PORT(minor(tp->t_dev));
- sc = dz_cd.cd_devs[unit];
-
/* check requested parameters */
if (ospeed < 0 || ispeed < 0 || ispeed != ospeed)
return (EINVAL);
@@ -732,12 +695,13 @@ dzscan(void *arg)
struct dz_softc *sc;
struct tty *tp;
int n, bit, port;
- unsigned csr, tmp;
+ unsigned int csr;
+ unsigned int tmp;
int s;
s = spltty();
for (n = 0; n < dz_cd.cd_ndevs; n++) {
- if ((sc = dz_cd.cd_devs[n]) == NULL)
+ if ((sc = device_lookup(&dz_cd, n)) == NULL)
continue;
for (port = 0; port < sc->sc_type; port++) {
@@ -785,7 +749,7 @@ dzscan(void *arg)
* No DMA setup to care about.
*/
void
-dzreset(struct device *dev)
+dzreset(device_t dev)
{
struct dz_softc *sc = (void *)dev;
struct tty *tp;