uticom(4)

I think uticom(4) is now ready for comment.
The source for uticom(4) is available at
ftp://ftp.NetBSD.org/pub/NetBSD/misc/yhardy/uticom20100204.tar.bz2
(extract in src/) and the additional changes to src at
ftp://ftp.NetBSD.org/pub/NetBSD/misc/yhardy/uticom.diff
This is not a port of OpenBSD uticom(4), nor of the Linux driver.
This driver uses different firmware from the OpenBSD and Linux drivers.
The driver uses a header file (src/sys/dev/microcode/uticom/tusb3410fw.h)
for the firmware. The firmware is about 5KB. firmload(9) will be used if
UTICOM_TUSB3410FW_H is undefined in src/sys/dev/usb/uticom.h (line 68).
I encountered a problem with uhci_open (probably also ehci). uhci_open
sets nexttoggle to zero (src/sys/dev/usb/uhci.c line 3186) on every
pipe open. However, the device endpoint toggle will not reset to zero.
Since ucomopen seems to open the pipes for the bulk endpoints, this means
the device bulk endpoint toggle may differ from the pipe's nexttoggle
on every open.
I worked around the problem by clearing the halt feature on the bulk
endpoints which resets the data toggle to zero, but this should not
be necessary.
--
Kind regards,
Yorick Hardy