Contributed by Jason Wright on from the mo-serial-stuff dept.
Cypress Semiconductor makes programmable USB/serial adapters. These are starting to show up in some of the cheap RS-232 dongles and integrated into some devices, like the Delorme Earthmate GPS.
uhidev is used by devices that are Human Interface Devices (usually mice, keyboards, tables, etc). The Cypress USB devices show up as HIDs but missing some otherwise normal stuff.
USB uses endpoints (an address on the device) and pipes (an unidirectional byte stream) for communication between the host and a device. Several different types of pipes are available: interrupt, configuration, and bulk. Each type has different uses and properties.
uhidev(4) made the assumption that there was only one interrupt pipe: a flow from the device to the host to handle high priority events (mouse movement, keyboard events, etc). Cypress two interrupt pipes for communication: host to device and device to host, so uhidev needed to allocate the new pipe and deal with it.
ucom(4) made the assumption throughout the driver that all of its i/o happened on bulk input or output pipes. Again, Cypress uses interrupt pipes for all communication instead requiring a split in the driver to handle either type of pipe.
The upshot of all this is that the Delorme Earthmate now works in current (and what will be 4.0), but some RS-232 devices are still broken. I need one of the broken ones to see what I can do to fix it.
(Comments are closed)