Module Name:    src
Committed By:   skrll
Date:           Mon May 16 15:09:29 UTC 2016

Modified Files:
        src/sys/dev/ic: sl811hs.c

Log Message:
Simplify and fixup roothub interrupt transfers to work as well as before
nick-nhusb.


To generate a diff of this commit:
cvs rdiff -u -r1.74 -r1.75 src/sys/dev/ic/sl811hs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ic/sl811hs.c
diff -u src/sys/dev/ic/sl811hs.c:1.74 src/sys/dev/ic/sl811hs.c:1.75
--- src/sys/dev/ic/sl811hs.c:1.74	Mon May 16 08:00:25 2016
+++ src/sys/dev/ic/sl811hs.c	Mon May 16 15:09:29 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: sl811hs.c,v 1.74 2016/05/16 08:00:25 skrll Exp $	*/
+/*	$NetBSD: sl811hs.c,v 1.75 2016/05/16 15:09:29 skrll Exp $	*/
 
 /*
  * Not (c) 2007 Matthew Orgass
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sl811hs.c,v 1.74 2016/05/16 08:00:25 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sl811hs.c,v 1.75 2016/05/16 15:09:29 skrll Exp $");
 
 #include "opt_slhci.h"
 
@@ -524,8 +524,6 @@ static void slhci_insert(struct slhci_so
 static usbd_status slhci_clear_feature(struct slhci_softc *, unsigned int);
 static usbd_status slhci_set_feature(struct slhci_softc *, unsigned int);
 static void slhci_get_status(struct slhci_softc *, usb_port_status_t *);
-static usbd_status slhci_root(struct slhci_softc *, struct slhci_pipe *,
-    struct usbd_xfer *);
 
 #define	SLHCIHIST_FUNC()	USBHIST_FUNC()
 #define	SLHCIHIST_CALLED()	USBHIST_CALLED(slhcidebug)
@@ -993,7 +991,20 @@ slhci_root_start(struct usbd_xfer *xfer)
 	spipe = SLHCI_PIPE2SPIPE(xfer->ux_pipe);
 	sc = SLHCI_XFER2SC(xfer);
 
-	return slhci_lock_call(sc, &slhci_root, spipe, xfer);
+	struct slhci_transfers *t = &sc->sc_transfers;
+
+	LK_SLASSERT(spipe != NULL && xfer != NULL, sc, spipe, xfer, return
+	    USBD_CANCELLED);
+
+	DLOG(D_TRACE, "%s start", pnames(SLHCI_XFER_TYPE(xfer)), 0,0,0);
+
+	KASSERT(spipe->ptype == PT_ROOT_INTR);
+
+	mutex_enter(&sc->sc_intr_lock);
+	t->rootintr = xfer;
+	mutex_exit(&sc->sc_intr_lock);
+
+	return USBD_IN_PROGRESS;
 }
 
 usbd_status
@@ -3080,32 +3091,6 @@ slhci_get_status(struct slhci_softc *sc,
 	DLOG(D_ROOT, "status=%#.4x, change=%#.4x", status, change, 0,0);
 }
 
-static usbd_status
-slhci_root(struct slhci_softc *sc, struct slhci_pipe *spipe,
-    struct usbd_xfer *xfer)
-{
-	SLHCIHIST_FUNC(); SLHCIHIST_CALLED();
-	struct slhci_transfers *t;
-
-	t = &sc->sc_transfers;
-
-	LK_SLASSERT(spipe != NULL && xfer != NULL, sc, spipe, xfer, return
-	    USBD_CANCELLED);
-
-	DLOG(D_TRACE, "%s start", pnames(SLHCI_XFER_TYPE(xfer)), 0,0,0);
-	KASSERT(mutex_owned(&sc->sc_intr_lock));
-
-	KASSERT(spipe->ptype == PT_ROOT_INTR);
-#if 0
-	LK_SLASSERT(t->rootintr == NULL, sc, spipe, xfer, return
-	    USBD_CANCELLED);
-#endif
-	t->rootintr = xfer;
-	if (t->flags & F_CHANGE)
-		t->flags |= F_ROOTINTR;
-	return USBD_IN_PROGRESS;
-}
-
 static int
 slhci_roothub_ctrl(struct usbd_bus *bus, usb_device_request_t *req,
     void *buf, int buflen)

Reply via email to