cp2112: driver for the namesake GPIO and I2C master gadget
Documentation:
- CP2112 Datasheet https://www.silabs.com/documents/public/data-sheets/cp2112-datasheet.pdf
- AN495: CP2112 Interface Specification https://www.silabs.com/documents/public/application-notes/an495-cp2112-interface-specification.pdf
- CP2112 Errata https://www.silabs.com/documents/public/errata/cp2112-errata.pdf
The logic is implemented as three sub-drivers.
The parent driver claims the USB device and creates two child devices.
One acts as a GPIO controller and the other is an I2C controller.
Tested with CP2112 revision F02.
Both features seem to work.
HTU21 sensor was used as an I2C slave.
Reviewed by: adrian, hselasky
MFC after: 2 weeks
Relnotes: maybe
Differential Revision: https://reviews.freebsd.org/D25359