Module Name: src Committed By: pooka Date: Tue Feb 2 23:18:49 UTC 2010
Modified Files: src/sys/dev/usb: uhub.c Log Message: Introduce the uhub_ubermatch variable. Setting it to 1 makes sure than a uhub attaches even at higher priority than ugen when ugen_override is set to 1. This allows to probe the whole USB bus and attach its functions with ugen. A better infrastructure to control this would be nice .... To generate a diff of this commit: cvs rdiff -u -r1.108 -r1.109 src/sys/dev/usb/uhub.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/usb/uhub.c diff -u src/sys/dev/usb/uhub.c:1.108 src/sys/dev/usb/uhub.c:1.109 --- src/sys/dev/usb/uhub.c:1.108 Thu Nov 12 20:11:35 2009 +++ src/sys/dev/usb/uhub.c Tue Feb 2 23:18:49 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: uhub.c,v 1.108 2009/11/12 20:11:35 dyoung Exp $ */ +/* $NetBSD: uhub.c,v 1.109 2010/02/02 23:18:49 pooka Exp $ */ /* $FreeBSD: src/sys/dev/usb/uhub.c,v 1.18 1999/11/17 22:33:43 n_hibma Exp $ */ /* @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uhub.c,v 1.108 2009/11/12 20:11:35 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uhub.c,v 1.109 2010/02/02 23:18:49 pooka Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -105,10 +105,23 @@ CFATTACH_DECL2_NEW(uroothub, sizeof(struct uhub_softc), uhub_match, uhub_attach, uhub_detach, NULL, uhub_rescan, uhub_childdet); +/* + * Setting this to 1 makes sure than an uhub attaches even at higher + * priority than ugen when ugen_override is set to 1. This allows to + * probe the whole USB bus and attach functions with ugen. + */ +int uhub_ubermatch = 0; + int uhub_match(device_t parent, cfdata_t match, void *aux) { struct usb_attach_arg *uaa = aux; + int matchvalue; + + if (uhub_ubermatch) + matchvalue = UMATCH_HIGHEST+1; + else + matchvalue = UMATCH_DEVCLASS_DEVSUBCLASS; DPRINTFN(5,("uhub_match, uaa=%p\n", uaa)); /* @@ -116,7 +129,7 @@ * so we just ignore the subclass. */ if (uaa->class == UDCLASS_HUB) - return (UMATCH_DEVCLASS_DEVSUBCLASS); + return (matchvalue); return (UMATCH_NONE); }