Subject: Re: kern/26117
To: Matthias Scheler <tron@zhadum.de>
From: Dieter <netbsd@sopwith.solgatos.com>
List: netbsd-bugs
Date: 09/08/2005 09:04:26
> Please use "diff -u" or "cvs diff -u" to generate diffs. It makes them
> better readable and keeps "patch" happy.
Here is the output from "rcsdiff -r1.1 -u sanei/sanei_usb.c":
--- sanei/sanei_usb.c 2004/06/16 18:44:05 1.1
+++ sanei/sanei_usb.c 2004/06/23 23:02:41
@@ -65,6 +65,12 @@
#include "../include/sane/sanei_usb.h"
#include "../include/sane/sanei_config.h"
+#ifdef __NetBSD__
+#include <dev/usb/usb.h>
+/* #include <dev/usb/usbhid.h> */ /* got a redefine */
+#include <sys/ioctl.h>
+#endif
+
typedef enum
{
sanei_usb_method_scanner_driver = 0, /* kernel scanner driver
@@ -194,8 +200,39 @@
DBG (3, "sanei_usb_get_vendor_product: ioctl (product) "
"of device %d failed: %s\n", fd, strerror (errno));
}
-#endif /* defined (__linux__) */
+ /* end of defined (__linux__) */
+#elif defined (__NetBSD__)
+ {
+#if 1 /* Needs ioctl added to NetBSD */
+
+ /* DBG output not showing up ? */
+
+ struct usb_device_info struct_usb_device_info;
+ if (ioctl (fd, USB_GET_DEVICEINFO, &struct_usb_device_info) == -1)
+ {
+ DBG (1, "kernel_get_vendor_product: ioctl (usb_deviceinfo, for vendor & product IDs) "
+ "of device %d failed: %s\n", fd, strerror (errno));
+ perror("NetBSD uscanner ioctl(usb_deviceinfo) failed");
+ }
+ else
+ {
+ *vendorID = (int) struct_usb_device_info.udi_vendorNo;
+ *productID = (int) struct_usb_device_info.udi_productNo;
+ DBG (2, "NetBSD uscanner ioctl says: vendorID = 0x%04x productID = 0x%04x\n", *vendorID, *productID);
+ fprintf(stderr, "NetBSD uscanner ioctl says: vendorID = 0x%04x productID = 0x%04x\n", *vendorID, *productID);
+ }
+#endif
+#ifdef HARD_CODE_NETBSD_EPSON_2400
+#warning temp hack for NetBSD to add vendorID productID Epson 2400
+ DBG (1, "NetBSD vendorID productID hardcoded hack\n");
+ *vendorID = 0x04b8 ; /* Seiko Epson */
+ *productID = 0x011b ; /* Perfection 2400 scanner */
+#endif HARD_CODE_NETBSD_EPSON_2400
+ }
+#else
/* put more os-dependant stuff ... */
+#warning "You need to add support for your OS"
+#endif
}
void
@@ -955,7 +992,8 @@
print_buffer (data, len);
return SANE_STATUS_GOOD;
#else /* not __linux__ */
- DBG (5, "sanei_usb_control_msg: not supported on this OS\n");
+#warning "sanei_usb_control_msg: not supported on this OS"
+ DBG (1, "sanei_usb_control_msg: not supported on this OS\n");
return SANE_STATUS_UNSUPPORTED;
#endif /* not __linux__ */
}