1. fixed a bug where the last bulk in/out was chosen rather
than the first. This got my Sierra AC 595 working,
2. reworked some of the match logic to include flags for the
matches,
3. defined a flag UNTESTED which causes a warning to be output,
4. added product/vendor IDs from other OSes (OpenBSD, FreeBSD,
Linux) but marked them UNTESTED.
Register _childdetached methods with drivers that attach children.
Wait to set child references to NULL there, instead of doing that
in the detach method.
Replace many uses of USB_DECLARE_DRIVER() with CFATTACH_DECL2().
matching (and handling) a whole device and those which match an
interface only. This will allow to enforce some rules, eg that
the former don't use interface information for matching or that the
latter don't modify global device state.
The previous way left too much freedom do the drivers which led to
inconsistencies and abuse.
For now, I've not changed locators and submatch rules, this will
happen later.
There should not be any change in behaviour, except in the case of
some drivers which did behave inconsistently:
if_atu, if_axe, uep: matched the configured device in the interface
stage, but did configuration again. I've converted them to match
in the device stage.
ustir, utoppy: matched in the interface stage, but only against
vendor/device information, and used any configuration/interface
without checking. Changed to match in device stage, and added
some simple code to configure and use the first interface.
If you have one of those devices, please test!
From John Nielsen on freebsd-mobile.
Not tested, but almost certainly better than attaching as ugen.
FreeBSD has a UQ_ASSUME_CM_OVER_DATA quirk for this device; I can't
figure out what that means.
Makes Kyocera KPC650 work with Verizon EVDO service.
(Removing the card results in a kernel page fault; this seems to be a
cardbus ohci issue, not a ugensa issue.)