Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/usb Add methods for ucom to call back on open/close.
details: https://anonhg.NetBSD.org/src/rev/58e9cb2b41b4
branches: trunk
changeset: 481862:58e9cb2b41b4
user: augustss <augustss%NetBSD.org@localhost>
date: Tue Feb 08 09:18:01 2000 +0000
description:
Add methods for ucom to call back on open/close.
diffstat:
sys/dev/usb/ucom.c | 40 ++++++++++++++++++++++++++++++----------
sys/dev/usb/ucomvar.h | 4 +++-
sys/dev/usb/umodem.c | 4 +++-
3 files changed, 36 insertions(+), 12 deletions(-)
diffs (138 lines):
diff -r e85f0c9dd2b7 -r 58e9cb2b41b4 sys/dev/usb/ucom.c
--- a/sys/dev/usb/ucom.c Tue Feb 08 08:08:43 2000 +0000
+++ b/sys/dev/usb/ucom.c Tue Feb 08 09:18:01 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ucom.c,v 1.13 2000/01/25 13:56:23 augustss Exp $ */
+/* $NetBSD: ucom.c,v 1.14 2000/02/08 09:18:01 augustss Exp $ */
/*
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -386,6 +386,9 @@
return (ENOMEM);
}
+ if (sc->sc_methods->ucom_open != NULL)
+ sc->sc_methods->ucom_open(sc->sc_parent, sc->sc_portno);
+
ucomstartread(sc);
}
sc->sc_opening = 0;
@@ -442,6 +445,9 @@
ucom_cleanup(sc);
}
+ if (sc->sc_methods->ucom_close != NULL)
+ sc->sc_methods->ucom_close(sc->sc_parent, sc->sc_portno);
+
return (0);
}
@@ -642,8 +648,9 @@
{
DPRINTF(("ucom_break: onoff=%d\n", onoff));
- sc->sc_methods->ucom_set(sc->sc_parent, sc->sc_portno,
- UCOM_SET_BREAK, onoff);
+ if (sc->sc_methods->ucom_set != NULL)
+ sc->sc_methods->ucom_set(sc->sc_parent, sc->sc_portno,
+ UCOM_SET_BREAK, onoff);
}
void
@@ -653,8 +660,9 @@
{
DPRINTF(("ucom_dtr: onoff=%d\n", onoff));
- sc->sc_methods->ucom_set(sc->sc_parent, sc->sc_portno,
- UCOM_SET_DTR, onoff);
+ if (sc->sc_methods->ucom_set != NULL)
+ sc->sc_methods->ucom_set(sc->sc_parent, sc->sc_portno,
+ UCOM_SET_DTR, onoff);
}
void
@@ -664,16 +672,22 @@
{
DPRINTF(("ucom_rts: onoff=%d\n", onoff));
- sc->sc_methods->ucom_set(sc->sc_parent, sc->sc_portno,
- UCOM_SET_RTS, onoff);
+ if (sc->sc_methods->ucom_set != NULL)
+ sc->sc_methods->ucom_set(sc->sc_parent, sc->sc_portno,
+ UCOM_SET_RTS, onoff);
}
void
ucom_status_change(sc)
struct ucom_softc *sc;
{
- sc->sc_methods->ucom_get_status(sc->sc_parent, sc->sc_portno,
- &sc->sc_lsr, &sc->sc_msr);
+ if (sc->sc_methods->ucom_get_status != NULL) {
+ sc->sc_methods->ucom_get_status(sc->sc_parent, sc->sc_portno,
+ &sc->sc_lsr, &sc->sc_msr);
+ } else {
+ sc->sc_lsr = 0;
+ sc->sc_msr = 0;
+ }
}
int
@@ -682,6 +696,7 @@
struct termios *t;
{
struct ucom_softc *sc = ucom_cd.cd_devs[UCOMUNIT(tp->t_dev)];
+ int error;
if (sc->sc_dying)
return (EIO);
@@ -715,7 +730,12 @@
tp->t_ospeed = t->c_ospeed;
tp->t_cflag = t->c_cflag;
- sc->sc_methods->ucom_param(sc->sc_parent, sc->sc_portno, t);
+ if (sc->sc_methods->ucom_param != NULL) {
+ error = sc->sc_methods->ucom_param(sc->sc_parent, sc->sc_portno,
+ t);
+ if (error)
+ return (error);
+ }
// XXX worry about CHWFLOW
diff -r e85f0c9dd2b7 -r 58e9cb2b41b4 sys/dev/usb/ucomvar.h
--- a/sys/dev/usb/ucomvar.h Tue Feb 08 08:08:43 2000 +0000
+++ b/sys/dev/usb/ucomvar.h Tue Feb 08 09:18:01 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ucomvar.h,v 1.1 2000/01/25 08:46:00 augustss Exp $ */
+/* $NetBSD: ucomvar.h,v 1.2 2000/02/08 09:18:02 augustss Exp $ */
/*
* Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -59,6 +59,8 @@
int (*ucom_param)__P((void *sc, int portno, struct termios *));
int (*ucom_ioctl)__P((void *sc, int portno, u_long cmd,
caddr_t data, int flag, struct proc *p));
+ void (*ucom_open)__P((void *sc, int portno));
+ void (*ucom_close)__P((void *sc, int portno));
};
/* modem control register */
diff -r e85f0c9dd2b7 -r 58e9cb2b41b4 sys/dev/usb/umodem.c
--- a/sys/dev/usb/umodem.c Tue Feb 08 08:08:43 2000 +0000
+++ b/sys/dev/usb/umodem.c Tue Feb 08 09:18:01 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: umodem.c,v 1.21 2000/02/02 13:18:47 augustss Exp $ */
+/* $NetBSD: umodem.c,v 1.22 2000/02/08 09:18:02 augustss Exp $ */
/*
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -131,6 +131,8 @@
umodem_set,
umodem_param,
umodem_ioctl,
+ NULL,
+ NULL,
};
USB_DECLARE_DRIVER(umodem);
Home |
Main Index |
Thread Index |
Old Index