Subject: usb EIO return w. DIAGNOSTIC
To: None <tech-kern@netbsd.org>
From: Wolfgang Rupprecht <wolfgang@wsrcc.com>
List: tech-kern
Date: 02/19/2001 10:28:57
I'm wondering if the EIO returns in /sys/dev/usb/ugen.c that are
inside DIAGNOSTIC ifdefs are still correct.
Without the DIAGNOSTIC ifdefs turned on the kernel plods along as best
it can (even when pipeh is NULL). With DIAGNOSTIC on the kernel
throws up its hands and returns early with an EIO error. This seems
like it might be a case of code that was changed for one flip of the
ifdef switch but not the other. Am I reading this right?
The following patch is essentially what Greg Troxel said worked for
him in Freebsd when he got his Nikon USB camera (coolpix990) working
there. This same patch was needed to get the coolpix990 working under
-current.
Index: ugen.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/usb/ugen.c,v
retrieving revision 1.45
diff -u -r1.45 ugen.c
--- ugen.c 2000/12/13 04:05:14 1.45
+++ ugen.c 2001/02/19 18:15:50
@@ -502,7 +502,7 @@
}
if (sce->pipeh == NULL) {
printf("ugenread: no pipe\n");
- return (EIO);
+ /*return (EIO);*/
}
#endif
@@ -658,7 +658,7 @@
}
if (sce->pipeh == NULL) {
printf("ugenwrite: no pipe\n");
- return (EIO);
+ /* return (EIO); */
}
#endif
@@ -999,7 +999,7 @@
#ifdef DIAGNOSTIC
if (sce->pipeh == NULL) {
printf("ugenioctl: USB_SET_SHORT_XFER, no pipe\n");
- return (EIO);
+ /*return (EIO);*/
}
#endif
if (*(int *)addr)
@@ -1012,10 +1012,16 @@
if (sce == NULL)
return (EINVAL);
#ifdef DIAGNOSTIC
+#if 0
+ /*
+ * 20010106 gdt@ir.bbn.com
+ * This seems to always trigger, with no ill effects.
+ */
if (sce->pipeh == NULL) {
printf("ugenioctl: USB_SET_TIMEOUT, no pipe\n");
return (EIO);
}
+#endif /* 0 */
#endif
sce->timeout = *(int *)addr;
return (0);
@@ -1271,7 +1277,7 @@
}
if (!sce->pipeh) {
printf("ugenpoll: no pipe\n");
- return (EIO);
+ /*return (EIO);*/
}
#endif
s = splusb();
--
Wolfgang Rupprecht <wolfgang+gnus@dailyplanet.wsrcc.com>
http://www.wsrcc.com/wolfgang/
Coming soon: GPS mapping tools for Open Systems. http://www.gnomad-mapping.com/