Hi
This is my second revision of the hid-wiimote rework. It features:
- Full extension hotplugging support: We can now initialize extensions during
runtime and no longer require them to be plugged during connection setup.
- Sub-device modularization: Nintendo produced many different devices which
are based on the Wii-Remote protocol. However, they often emulate the core
protocol but don't feature the hardware. The modularization allows us to
disable hardware that isn't present and instead provide a consistent API
to user-space.
For instance, patch 24/26 adds "Wii U Pro Controller" support and avoids
all the standard wii-remote input devices (rumble, IR, accelerometer,
extensions, ...) and instead provides a single interface for the
Pro-Controller features. That makes working with the device from user-space
a lot easier.
- Speaker support: Patch 26/26 adds an alsa sound driver and allows user-space
to use the built-in speaker like any standard sound card.
- Fixes: Several small fixes are included. They are very hard to backport so I
didn't CC stable@vger. However, none of the fixes are crucial so I think we
can ignore the stable kernels here. They fix things like reducing timeouts
and debugfs bugs.
The Bluetooth HIDP rework is now upstream and already in David Miller's queue.
It will be part of linux-3.10 so if someone wants to test this, I recommend
using linux-next. However, this series doesn't depend on it. But if you want to
avoid Bluetooth l2cap oopses during hotplugging, you should use linux-next..
I did several code review-rounds myself and tested this with 4 different Wii
Remote revisions simultaneously. I didn't get any kernel oops, panic or deadlock
and it works very well. I also tested different extension devices, 3rd party
devices (including balance-board and Pro-Controller) and emulated devices. It
also works with Wii-U devices.
I did some backwards-compatibility checks. Obviously, old user-space won't
notice hot-plugged devices, but other than that the patches should be 100%
backwards-compatible.
Note that the driver doesn't support extension devices between patch 13 and 16.
But extension support is reworked heavily, so there is no reason to do a bisect
on wiimote extensions, anyway. Other than that the series should be bisectable.
Patch 24/26 is marked as RFC because it adds Wii-U-Pro-Controller mappings. If
someone could review them, I would be very glad. Because I want to avoid
introducing horrible mappings as I did with the main Wii-Remote buttons..
Patch 26/26 is marked as RFC as it adds an Alsa driver which I'd like to get
reviewed by ALSA developers. It works for me (and heavily tested), but it's my
first alsa driver, so I am not entirely sure. (alsa-devel is CC'ed for this
patch).
ABI changes are tagged as 3.11 so no need to push this into 3.10.
Sorry for the 3 weeks delay, but I thought I'd do some more review myself before
resending it.
Cheers
David
David Herrmann (26):
HID: wiimote: extend driver description
HID: wiimote: move queue handling into separate struct
HID: wiimote: keep HID device open
HID: wiimote: add device detection
HID: wiimote: use cached battery values on I/O failure
HID: wiimote: wake up if output queue failed
HID: wiimote: add sub-device module infrastructure
HID: wiimote: convert KEYS and RUMBLE to modules
HID: wiimote: convert BATTERY to module
HID: wiimote: convert LEDS to modules
HID: wiimote: convert ACCEL to module
HID: wiimote: convert IR to module
HID: wiimote: add extension hotplug support
HID: wiimote: add Balance Board support
HID: wiimote: add Nunchuk support
HID: wiimote: add Classic Controller extension
HID: wiimote: add Motion Plus extension module
HID: wiimote: fix ctx pointer in debugfs DRM-write
HID: wiimote: lock DRM mode during debugfs overwrite
HID: wiimote: add sysfs extension/device-type attrs
HID: wiimote: add "bboard_calib" attribute
HID: wiimote: remove old static extension support
HID: wiimote: add MP quirks
HID: wiimote: support Nintendo Wii U Pro Controller
HID: wiimote: fix DRM debug-attr to correctly parse input
HID/ALSA: wiimote: add speaker support
Documentation/ABI/testing/sysfs-driver-hid-wiimote | 39 +-
drivers/hid/Kconfig | 31 +-
drivers/hid/Makefile | 8 +-
drivers/hid/hid-wiimote-core.c | 1714 ++++++++++------
drivers/hid/hid-wiimote-debug.c | 14 +-
drivers/hid/hid-wiimote-ext.c | 849 --------
drivers/hid/hid-wiimote-modules.c | 2091 ++++++++++++++++++++
drivers/hid/hid-wiimote-speaker.c | 662 +++++++
drivers/hid/hid-wiimote.h | 234 ++-
9 files changed, 4188 insertions(+), 1454 deletions(-)
delete mode 100644 drivers/hid/hid-wiimote-ext.c
create mode 100644 drivers/hid/hid-wiimote-modules.c
create mode 100644 drivers/hid/hid-wiimote-speaker.c
--
1.8.2.2
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html