Module Name:    src
Committed By:   mrg
Date:           Sun Feb 26 06:59:39 UTC 2012

Modified Files:
        src/sys/dev/usb [jmcneill-usbmp]: ukbd.c usb_subr.c usbdivar.h

Log Message:
use kpause() in usb{d,}_delay_ms(), and add a version that takes a mutex


To generate a diff of this commit:
cvs rdiff -u -r1.113.4.3 -r1.113.4.4 src/sys/dev/usb/ukbd.c
cvs rdiff -u -r1.180.6.3 -r1.180.6.4 src/sys/dev/usb/usb_subr.c
cvs rdiff -u -r1.93.8.10 -r1.93.8.11 src/sys/dev/usb/usbdivar.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/ukbd.c
diff -u src/sys/dev/usb/ukbd.c:1.113.4.3 src/sys/dev/usb/ukbd.c:1.113.4.4
--- src/sys/dev/usb/ukbd.c:1.113.4.3	Fri Feb 24 09:11:43 2012
+++ src/sys/dev/usb/ukbd.c	Sun Feb 26 06:59:38 2012
@@ -1,4 +1,4 @@
-/*      $NetBSD: ukbd.c,v 1.113.4.3 2012/02/24 09:11:43 mrg Exp $        */
+/*      $NetBSD: ukbd.c,v 1.113.4.4 2012/02/26 06:59:38 mrg Exp $        */
 
 /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ukbd.c,v 1.113.4.3 2012/02/24 09:11:43 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ukbd.c,v 1.113.4.4 2012/02/26 06:59:38 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -54,6 +54,7 @@ __KERNEL_RCSID(0, "$NetBSD: ukbd.c,v 1.1
 
 #include <dev/usb/usbdi.h>
 #include <dev/usb/usbdi_util.h>
+#include <dev/usb/usbdivar.h>
 #include <dev/usb/usbdevs.h>
 #include <dev/usb/usb_quirks.h>
 #include <dev/usb/uhidev.h>

Index: src/sys/dev/usb/usb_subr.c
diff -u src/sys/dev/usb/usb_subr.c:1.180.6.3 src/sys/dev/usb/usb_subr.c:1.180.6.4
--- src/sys/dev/usb/usb_subr.c:1.180.6.3	Fri Dec  9 01:53:00 2011
+++ src/sys/dev/usb/usb_subr.c	Sun Feb 26 06:59:38 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: usb_subr.c,v 1.180.6.3 2011/12/09 01:53:00 mrg Exp $	*/
+/*	$NetBSD: usb_subr.c,v 1.180.6.4 2012/02/26 06:59:38 mrg Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.18 1999/11/17 22:33:47 n_hibma Exp $	*/
 
 /*
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.180.6.3 2011/12/09 01:53:00 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.180.6.4 2012/02/26 06:59:38 mrg Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_usbverbose.h"
@@ -296,20 +296,33 @@ usbd_devinfo_free(char *devinfop)
 
 /* Delay for a certain number of ms */
 void
-usb_delay_ms(usbd_bus_handle bus, u_int ms)
+usb_delay_ms_locked(usbd_bus_handle bus, u_int ms, kmutex_t *lock)
 {
 	/* Wait at least two clock ticks so we know the time has passed. */
 	if (bus->use_polling || cold)
 		delay((ms+1) * 1000);
 	else
-		tsleep(&ms, PRIBIO, "usbdly", (ms*hz+999)/1000 + 1);
+		kpause("usbdly", false, (ms*hz+999)/1000 + 1, lock);
+}
+
+void
+usb_delay_ms(usbd_bus_handle bus, u_int ms)
+{
+	usb_delay_ms_locked(bus, ms, NULL);
+}
+
+/* Delay given a device handle. */
+void
+usbd_delay_ms_locked(usbd_device_handle dev, u_int ms, kmutex_t *lock)
+{
+	usb_delay_ms_locked(dev->bus, ms, lock);
 }
 
 /* Delay given a device handle. */
 void
 usbd_delay_ms(usbd_device_handle dev, u_int ms)
 {
-	usb_delay_ms(dev->bus, ms);
+	usb_delay_ms_locked(dev->bus, ms, NULL);
 }
 
 usbd_status

Index: src/sys/dev/usb/usbdivar.h
diff -u src/sys/dev/usb/usbdivar.h:1.93.8.10 src/sys/dev/usb/usbdivar.h:1.93.8.11
--- src/sys/dev/usb/usbdivar.h:1.93.8.10	Sat Feb 25 20:46:34 2012
+++ src/sys/dev/usb/usbdivar.h	Sun Feb 26 06:59:38 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdivar.h,v 1.93.8.10 2012/02/25 20:46:34 mrg Exp $	*/
+/*	$NetBSD: usbdivar.h,v 1.93.8.11 2012/02/26 06:59:38 mrg Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/usbdivar.h,v 1.11 1999/11/17 22:33:51 n_hibma Exp $	*/
 
 /*
@@ -33,6 +33,7 @@
 
 #include <sys/callout.h>
 #include <sys/mutex.h>
+#include <sys/bus.h>
 
 /*
  * Discussion about locking in the USB code:
@@ -278,7 +279,10 @@ void usbd_dump_pipe(usbd_pipe_handle pip
 
 /* Routines from usb_subr.c */
 int		usbctlprint(void *, const char *);
+void		usb_delay_ms_locked(usbd_bus_handle, u_int, kmutex_t *);
 void		usb_delay_ms(usbd_bus_handle, u_int);
+void		usbd_delay_ms_locked(usbd_device_handle, u_int, kmutex_t *);
+void		usbd_delay_ms(usbd_device_handle, u_int);
 usbd_status	usbd_reset_port(usbd_device_handle, int, usb_port_status_t *);
 usbd_status	usbd_setup_pipe(usbd_device_handle dev,
 				usbd_interface_handle iface,

Reply via email to