From: "Daniel J. Ogorchock" <djogorchock@gmail.com>
To: linux-input@vger.kernel.org
Cc: thunderbird2k@gmail.com, blaws05@gmail.com,
benjamin.tissoires@redhat.com, jikos@kernel.org,
Roderick.Colenbrander@sony.com, svv@google.com,
s.jegen@gmail.com, "Daniel J. Ogorchock" <djogorchock@gmail.com>
Subject: [PATCH v9 00/10] HID: nintendo
Date: Wed, 6 Nov 2019 00:06:38 -0600 [thread overview]
Message-ID: <20191106060648.3018478-1-djogorchock@gmail.com> (raw)
This is a pretty minor change. Importantly it resolves a couple compiler
errors when building the driver with a version of gcc prior to 8. It
seems that gcc 8 and above are more relaxed about using const integers
to initialize other const values and in case statement matching.
It also sets the input device's uniq value to the controller's MAC
address. This will be useful once gyro/accelerometer support is added in
the future (likely as a second input device). Since the joy-cons can
also be used via uart on the nintendo switch's serial rails, this is
also a useful mechanism for associating one joy-con between two drivers
(hid-nintendo and any serdev joy-con driver written to run on the
nintendo switch itself).
Version 9 changes:
- Fixed compiler errors on gcc versions older than 8.2
- Set input device's uniq value to the controller's MAC address
Version 8 changes:
- Corrected the handshaking protocol with USB pro controllers. A
handshake now occurs both prior and after the baudrate set. This
doesn't appear to have a noticeable difference, but it more
accurately follows documentation found online.
- Fixed potential race condition which could lead to a slightly longer
delay sending subcommands in rare circumstances.
- Moved the rumble worker to its own workqueue, since it can block.
This prevents it from having a negative impact on the default kernel
workqueue. It also prevents dropped subcommands due to something
else blocking the kernel workqueue. The benefit is most obvious when
using multiple controllers at once, since the controller subcommand
timings are very picky.
- Added a patch to set the most significant bit of the hid hw version.
Roderick had mentioned needing to probably do this awhile ago, but I
had forgotten about it until now. This is the same thing hid-sony
does. It allows SDL2 to have different mappings for the hid-nintendo
driver vs the default hid mappings.
Version 7 changes:
- Changed name to hid-nintendo to fit modern naming conventions
- Removed joycon_ctlr_destroy(), since it wasn't needed an could
potentially invalidate a mutex while it could be in use on other
threads
- Implemented minor code improvements suggested by Silvan
- The driver now waits to send subcommands until after receiving an
input report. This significantly reduces dropped subcommands.
- Reduced the number of error messages when disconnecting a
controller.
Version 6 changes:
- Improved subcommand sending reliabilty
- Decreased rumble period to 50ms
- Added rumble queue to avoid missing ff_effects if sent too quickly
- Code cleanup and minor refactoring
- Added default analog stick calibration
Version 5 changes:
- Removed sysfs interface to control motor frequencies.
- Improved rumble reliability by using subcommands to set it.
- Changed mapping of the SL/SR triggers on the joy-cons to map to
whichever triggers they lack (e.g. a left joycon's sl/sr map to
TR and TR2). This allows userspace to distinguish between the
normal and S triggers.
- Minor refactors
Version 4 changes:
- Added support for the Home button LED for the pro controller and
right joy-con
- Changed name from hid-switchcon to hid-joycon
- Added rumble support
- Removed ctlr->type and use hdev->product instead
- Use POWER_SUPPLY_CAPACITY_LEVEL enum instead of manually translating
to capacity percentages
- Misc. minor refactors based on v3 feedback
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
Daniel J. Ogorchock (10):
HID: nintendo: add nintendo switch controller driver
HID: nintendo: add player led support
HID: nintendo: add power supply support
HID: nintendo: add home led support
HID: nintendo: add rumble support
HID: nintendo: improve subcommand reliability
HID: nintendo: send subcommands after receiving input report
HID: nintendo: reduce device removal subcommand errors
HID: nintendo: patch hw version for userspace HID mappings
HID: nintendo: set controller uniq to MAC
MAINTAINERS | 6 +
drivers/hid/Kconfig | 24 +
drivers/hid/Makefile | 1 +
drivers/hid/hid-ids.h | 3 +
drivers/hid/hid-nintendo.c | 1558 ++++++++++++++++++++++++++++++++++++
5 files changed, 1592 insertions(+)
create mode 100644 drivers/hid/hid-nintendo.c
--
2.23.0
next reply other threads:[~2019-11-06 6:06 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-06 6:06 Daniel J. Ogorchock [this message]
2019-11-06 6:06 ` [PATCH v9 01/10] HID: nintendo: add nintendo switch controller driver Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 02/10] HID: nintendo: add player led support Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 03/10] HID: nintendo: add power supply support Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 04/10] HID: nintendo: add home led support Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 05/10] HID: nintendo: add rumble support Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 06/10] HID: nintendo: improve subcommand reliability Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 07/10] HID: nintendo: send subcommands after receiving input report Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 08/10] HID: nintendo: reduce device removal subcommand errors Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 09/10] HID: nintendo: patch hw version for userspace HID mappings Daniel J. Ogorchock
2019-11-06 6:06 ` [PATCH v9 10/10] HID: nintendo: set controller uniq to MAC Daniel J. Ogorchock
[not found] ` <CAKF84v1MoJFURpipRaAYA-T7+ZDz=9LvmXQnNYzDHeVX3B7WbQ@mail.gmail.com>
2019-12-17 11:13 ` [PATCH v9 00/10] HID: nintendo Benjamin Tissoires
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191106060648.3018478-1-djogorchock@gmail.com \
--to=djogorchock@gmail.com \
--cc=Roderick.Colenbrander@sony.com \
--cc=benjamin.tissoires@redhat.com \
--cc=blaws05@gmail.com \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=s.jegen@gmail.com \
--cc=svv@google.com \
--cc=thunderbird2k@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).