(cherry-pick of commit: e9af4669659c306a9c9b1a1ae3a1313a7631357d)
Bug: 63669128
Test: Tested USB gadget configurations and verified
that they enumerated.
Change-Id: If0f98697488f6c7cfe335d4c292acebaaba6c20f
Adds a thread that handles add uevents of USB devices, and
enables auto suspend on that USB device (i.e. set power/control
to auto) if the device idProduct/idVendor is whitelisted.
The android kernel will already autosuspend audio devices,
however this enables autosuspend for the Essential USB-C to
3.5mm adapter, which presents an HID-only interface when
no 3.5mm headset is connected.
Test: with the selinux and .rc changes for access permission
- MIR without headset: power/control set to auto
- MIR with headset: power/control set to auto
- regular mouse: power/control set to on
Bug: 38352281
Change-Id: I81572584ea02f6bdc814e70ab3439ab86c34a50a
pthread_cond_timedwait used wall time so it might introduce racing,
pthread_cond_timedwait_monotonic_np is Android specific but it is being
deprecated. And now Android support pthread_condattr_setclock so use it
to wait on CLOCK_MONOTONIC instead.
Bug: 64623895
Test: USB switch function works, charging/MTP/PTP
Change-Id: I136533ff90ef1be2b042ef1e0829643f2f7aa968