Module Name:    src
Committed By:   maxv
Date:           Sat Feb  8 07:53:24 UTC 2020

Modified Files:
        src/sys/dev/usb: u3g.c uhmodem.c usbdi.c usbdi_util.c usbdi_util.h

Log Message:
Introduce usbd_clear_endpoint_feature(), and dedup.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/dev/usb/u3g.c
cvs rdiff -u -r1.20 -r1.21 src/sys/dev/usb/uhmodem.c
cvs rdiff -u -r1.187 -r1.188 src/sys/dev/usb/usbdi.c
cvs rdiff -u -r1.75 -r1.76 src/sys/dev/usb/usbdi_util.c
cvs rdiff -u -r1.49 -r1.50 src/sys/dev/usb/usbdi_util.h

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/usb/u3g.c
diff -u src/sys/dev/usb/u3g.c:1.38 src/sys/dev/usb/u3g.c:1.39
--- src/sys/dev/usb/u3g.c:1.38	Tue Jan  7 06:42:26 2020
+++ src/sys/dev/usb/u3g.c	Sat Feb  8 07:53:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: u3g.c,v 1.38 2020/01/07 06:42:26 maxv Exp $	*/
+/*	$NetBSD: u3g.c,v 1.39 2020/02/08 07:53:23 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -50,7 +50,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: u3g.c,v 1.38 2020/01/07 06:42:26 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: u3g.c,v 1.39 2020/02/08 07:53:23 maxv Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -571,7 +571,6 @@ static int
 u3g_open(void *arg, int portno)
 {
 	struct u3g_softc *sc = arg;
-	usb_device_request_t req;
 	usb_endpoint_descriptor_t *ed;
 	usb_interface_descriptor_t *id;
 	struct usbd_interface *ih;
@@ -596,13 +595,8 @@ u3g_open(void *arg, int portno)
 		if (UE_GET_DIR(ed->bEndpointAddress) == UE_DIR_IN &&
 		    UE_GET_XFERTYPE(ed->bmAttributes) == UE_BULK &&
 		    nin++ == portno) {
-			/* Issue ENDPOINT_HALT request */
-			req.bmRequestType = UT_WRITE_ENDPOINT;
-			req.bRequest = UR_CLEAR_FEATURE;
-			USETW(req.wValue, UF_ENDPOINT_HALT);
-			USETW(req.wIndex, ed->bEndpointAddress);
-			USETW(req.wLength, 0);
-			err = usbd_do_request(sc->sc_udev, &req, 0);
+			err = usbd_clear_endpoint_feature(sc->sc_udev,
+			    ed->bEndpointAddress, UF_ENDPOINT_HALT);
 			if (err)
 				return EIO;
 		}

Index: src/sys/dev/usb/uhmodem.c
diff -u src/sys/dev/usb/uhmodem.c:1.20 src/sys/dev/usb/uhmodem.c:1.21
--- src/sys/dev/usb/uhmodem.c:1.20	Mon May 27 03:08:13 2019
+++ src/sys/dev/usb/uhmodem.c	Sat Feb  8 07:53:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: uhmodem.c,v 1.20 2019/05/27 03:08:13 maya Exp $	*/
+/*	$NetBSD: uhmodem.c,v 1.21 2020/02/08 07:53:23 maxv Exp $	*/
 
 /*
  * Copyright (c) 2008 Yojiro UO <y...@nui.org>.
@@ -71,7 +71,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uhmodem.c,v 1.20 2019/05/27 03:08:13 maya Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uhmodem.c,v 1.21 2020/02/08 07:53:23 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -506,7 +506,6 @@ e220_modechange_request(struct usbd_devi
 static  usbd_status
 uhmodem_endpointhalt(struct ubsa_softc *sc, int iface)
 {
-	usb_device_request_t req;
 	usb_endpoint_descriptor_t *ed;
 	usb_interface_descriptor_t *id;
 	usbd_status err;
@@ -521,13 +520,8 @@ uhmodem_endpointhalt(struct ubsa_softc *
 			return EIO;
 
 		if (UE_GET_XFERTYPE(ed->bmAttributes) == UE_BULK) {
-			/* issue ENDPOINT_HALT request */
-			req.bmRequestType = UT_WRITE_ENDPOINT;
-			req.bRequest = UR_CLEAR_FEATURE;
-			USETW(req.wValue, UF_ENDPOINT_HALT);
-			USETW(req.wIndex, ed->bEndpointAddress);
-			USETW(req.wLength, 0);
-			err = usbd_do_request(sc->sc_udev, &req, 0);
+			err = usbd_clear_endpoint_feature(sc->sc_udev,
+			    ed->bEndpointAddress, UF_ENDPOINT_HALT);
 			if (err) {
 				DPRINTF(("%s: ENDPOINT_HALT to EP:%d fail\n",
 					__func__, ed->bEndpointAddress));

Index: src/sys/dev/usb/usbdi.c
diff -u src/sys/dev/usb/usbdi.c:1.187 src/sys/dev/usb/usbdi.c:1.188
--- src/sys/dev/usb/usbdi.c:1.187	Sat Feb  8 07:38:17 2020
+++ src/sys/dev/usb/usbdi.c	Sat Feb  8 07:53:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdi.c,v 1.187 2020/02/08 07:38:17 maxv Exp $	*/
+/*	$NetBSD: usbdi.c,v 1.188 2020/02/08 07:53:23 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2012, 2015 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.187 2020/02/08 07:38:17 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.188 2020/02/08 07:53:23 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -677,7 +677,6 @@ usbd_status
 usbd_clear_endpoint_stall(struct usbd_pipe *pipe)
 {
 	struct usbd_device *dev = pipe->up_dev;
-	usb_device_request_t req;
 	usbd_status err;
 
 	USBHIST_FUNC(); USBHIST_CALLED(usbdebug);
@@ -688,12 +687,8 @@ usbd_clear_endpoint_stall(struct usbd_pi
 	 */
 	pipe->up_methods->upm_cleartoggle(pipe);
 
-	req.bmRequestType = UT_WRITE_ENDPOINT;
-	req.bRequest = UR_CLEAR_FEATURE;
-	USETW(req.wValue, UF_ENDPOINT_HALT);
-	USETW(req.wIndex, pipe->up_endpoint->ue_edesc->bEndpointAddress);
-	USETW(req.wLength, 0);
-	err = usbd_do_request(dev, &req, 0);
+	err = usbd_clear_endpoint_feature(dev,
+	    pipe->up_endpoint->ue_edesc->bEndpointAddress, UF_ENDPOINT_HALT);
 #if 0
 XXX should we do this?
 	if (!err) {
@@ -709,16 +704,11 @@ usbd_clear_endpoint_stall_task(void *arg
 {
 	struct usbd_pipe *pipe = arg;
 	struct usbd_device *dev = pipe->up_dev;
-	usb_device_request_t req;
 
 	pipe->up_methods->upm_cleartoggle(pipe);
 
-	req.bmRequestType = UT_WRITE_ENDPOINT;
-	req.bRequest = UR_CLEAR_FEATURE;
-	USETW(req.wValue, UF_ENDPOINT_HALT);
-	USETW(req.wIndex, pipe->up_endpoint->ue_edesc->bEndpointAddress);
-	USETW(req.wLength, 0);
-	(void)usbd_do_request(dev, &req, 0);
+	(void)usbd_clear_endpoint_feature(dev,
+	    pipe->up_endpoint->ue_edesc->bEndpointAddress, UF_ENDPOINT_HALT);
 }
 
 void

Index: src/sys/dev/usb/usbdi_util.c
diff -u src/sys/dev/usb/usbdi_util.c:1.75 src/sys/dev/usb/usbdi_util.c:1.76
--- src/sys/dev/usb/usbdi_util.c:1.75	Wed Aug 21 10:48:37 2019
+++ src/sys/dev/usb/usbdi_util.c	Sat Feb  8 07:53:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdi_util.c,v 1.75 2019/08/21 10:48:37 mrg Exp $	*/
+/*	$NetBSD: usbdi_util.c,v 1.76 2020/02/08 07:53:23 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2012 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.75 2019/08/21 10:48:37 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.76 2020/02/08 07:53:23 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -330,6 +330,20 @@ usbd_set_port_u2_timeout(struct usbd_dev
 }
 
 usbd_status
+usbd_clear_endpoint_feature(struct usbd_device *dev, int epaddr, int sel)
+{
+	USBHIST_FUNC();
+	usb_device_request_t req;
+
+	req.bmRequestType = UT_WRITE_ENDPOINT;
+	req.bRequest = UR_CLEAR_FEATURE;
+	USETW(req.wValue, sel);
+	USETW(req.wIndex, epaddr);
+	USETW(req.wLength, 0);
+	return usbd_do_request(dev, &req, 0);
+}
+
+usbd_status
 usbd_get_protocol(struct usbd_interface *iface, uint8_t *report)
 {
 	usb_interface_descriptor_t *id = usbd_get_interface_descriptor(iface);

Index: src/sys/dev/usb/usbdi_util.h
diff -u src/sys/dev/usb/usbdi_util.h:1.49 src/sys/dev/usb/usbdi_util.h:1.50
--- src/sys/dev/usb/usbdi_util.h:1.49	Thu Feb  7 13:20:41 2019
+++ src/sys/dev/usb/usbdi_util.h	Sat Feb  8 07:53:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdi_util.h,v 1.49 2019/02/07 13:20:41 skrll Exp $	*/
+/*	$NetBSD: usbdi_util.h,v 1.50 2020/02/08 07:53:23 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc.
@@ -58,6 +58,7 @@ usbd_status	usbd_set_port_feature(struct
 usbd_status	usbd_clear_port_feature(struct usbd_device *, int, int);
 usbd_status	usbd_set_port_u1_timeout(struct usbd_device *, int, int);
 usbd_status	usbd_set_port_u2_timeout(struct usbd_device *, int, int);
+usbd_status	usbd_clear_endpoint_feature(struct usbd_device *, int, int);
 usbd_status	usbd_get_device_status(struct usbd_device *, usb_status_t *);
 usbd_status	usbd_get_hub_status(struct usbd_device *, usb_hub_status_t *);
 usbd_status	usbd_get_protocol(struct usbd_interface *, uint8_t *);

Reply via email to