Thank you for the feedback on the v2 patch. TODO: - Rumble suport - Gyroscope support - Home Button LED support Version 3 changes: - Added led_classdev support for the 4 player LEDs - Added power_supply support for the controller's battery - Made the controller number mutex static - Minor refactoring/style fixes based on Roderick's feedback from v2 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 When implementing the led_classdev support, I noticed that when disconnecting the controller I get warnings where the led subsystem fails to set the leds' brightnesses. I get an ENOSYS when disconnecting USB and an EIO when disconnecting bluetooth. I'm not sure if this is typical or if I'm missing some explicit deinitialization in my driver. I tried adding LED_HW_PLUGGABLE hoping for that to fix the USB disconnect case, but I think that only ignores ENOENTs. Also, the controller reports the battery status as five discreet steps. I mapped those to seemingly appropriate capacity integers, but maybe there's a standard way to handle this I'm not aware of. Thank you, Daniel