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