Version 2 changes: - Switched to using a synchronous method for configuring the controller. - Removed any pairing/orientation logic in the driver. Every controller now corresponds to its own input device. - Store controller button data as a single u32. - Style corrections - Known TODOs: - Userspace LED configuration support - Support for the gyroscope data - Rumble support Hopefully this version of the driver is much easier to review.