From: David Herrmann <dh.herrmann@googlemail.com>
To: linux-input@vger.kernel.org
Cc: jkosina@suse.cz, padovan@profusion.mobi, dh.herrmann@googlemail.com
Subject: [PATCH 02/16] HID: wiimote: Add sysfs rumble attribute
Date: Thu, 28 Jul 2011 18:08:22 +0200 [thread overview]
Message-ID: <1311869316-17128-3-git-send-email-dh.herrmann@googlemail.com> (raw)
In-Reply-To: <1311869316-17128-1-git-send-email-dh.herrmann@googlemail.com>
Add "rumble" attribute to sysfs for every wiimote to allow userspace to control
the rumble motor of a wiimote.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
---
Documentation/ABI/testing/sysfs-driver-hid-wiimote | 8 ++++
drivers/hid/hid-wiimote.c | 42 ++++++++++++++++++++
2 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-wiimote b/Documentation/ABI/testing/sysfs-driver-hid-wiimote
index 5d5a16e..235dd47 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-wiimote
+++ b/Documentation/ABI/testing/sysfs-driver-hid-wiimote
@@ -8,3 +8,11 @@ Contact: David Herrmann <dh.herrmann@googlemail.com>
Description: Make it possible to set/get current led state. Reading from it
returns 0 if led is off and 1 if it is on. Writing 0 to it
disables the led, writing 1 enables it.
+
+What: /sys/bus/hid/drivers/wiimote/<dev>/rumble
+Date: July 2011
+KernelVersion: 3.2
+Contact: David Herrmann <dh.herrmann@googlemail.com>
+Description: Writing 1 to this file enables the rumble motor on the wiimote
+ and writing 0 disables it again. Reading from this file returns
+ 1 if rumble is on and 0 if it is off.
diff --git a/drivers/hid/hid-wiimote.c b/drivers/hid/hid-wiimote.c
index 6fa73c7..4070060 100644
--- a/drivers/hid/hid-wiimote.c
+++ b/drivers/hid/hid-wiimote.c
@@ -277,6 +277,43 @@ wiifs_led_show_set(2);
wiifs_led_show_set(3);
wiifs_led_show_set(4);
+static ssize_t wiifs_rumble_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct wiimote_data *wdata = dev_to_wii(dev);
+ unsigned long flags;
+ int state;
+
+ if (!atomic_read(&wdata->ready))
+ return -EBUSY;
+
+ spin_lock_irqsave(&wdata->state.lock, flags);
+ state = !!(wdata->state.flags & WIIPROTO_FLAG_RUMBLE);
+ spin_unlock_irqrestore(&wdata->state.lock, flags);
+
+ return sprintf(buf, "%d\n", state);
+}
+
+static ssize_t wiifs_rumble_set(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t count)
+{
+ struct wiimote_data *wdata = dev_to_wii(dev);
+ int tmp = simple_strtoul(buf, NULL, 10);
+ unsigned long flags;
+
+ if (!atomic_read(&wdata->ready))
+ return -EBUSY;
+
+ spin_lock_irqsave(&wdata->state.lock, flags);
+ wiiproto_req_rumble(wdata, tmp);
+ spin_unlock_irqrestore(&wdata->state.lock, flags);
+
+ return count;
+}
+
+static DEVICE_ATTR(rumble, S_IRUGO | S_IWUSR, wiifs_rumble_show,
+ wiifs_rumble_set);
+
static int wiimote_input_event(struct input_dev *dev, unsigned int type,
unsigned int code, int value)
{
@@ -425,6 +462,9 @@ static int wiimote_hid_probe(struct hid_device *hdev,
ret = device_create_file(&hdev->dev, &dev_attr_led4);
if (ret)
goto err;
+ ret = device_create_file(&hdev->dev, &dev_attr_rumble);
+ if (ret)
+ goto err;
ret = hid_parse(hdev);
if (ret) {
@@ -464,6 +504,7 @@ err:
device_remove_file(&hdev->dev, &dev_attr_led2);
device_remove_file(&hdev->dev, &dev_attr_led3);
device_remove_file(&hdev->dev, &dev_attr_led4);
+ device_remove_file(&hdev->dev, &dev_attr_rumble);
wiimote_destroy(wdata);
return ret;
}
@@ -478,6 +519,7 @@ static void wiimote_hid_remove(struct hid_device *hdev)
device_remove_file(&hdev->dev, &dev_attr_led2);
device_remove_file(&hdev->dev, &dev_attr_led3);
device_remove_file(&hdev->dev, &dev_attr_led4);
+ device_remove_file(&hdev->dev, &dev_attr_rumble);
hid_hw_stop(hdev);
input_unregister_device(wdata->input);
--
1.7.6
next prev parent reply other threads:[~2011-07-28 16:09 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-28 16:08 [PATCH 00/16] Extended wiimote support David Herrmann
2011-07-28 16:08 ` [PATCH 01/16] HID: wiimote: Support rumble device David Herrmann
2011-07-28 16:08 ` David Herrmann [this message]
2011-07-28 16:08 ` [PATCH 03/16] HID: wiimote: Add drm request David Herrmann
2011-07-28 18:05 ` Oliver Neukum
2011-07-28 18:41 ` David Herrmann
2011-07-28 18:47 ` Oliver Neukum
2011-07-28 16:08 ` [PATCH 04/16] HID: wiimote: Add status and return request handlers David Herrmann
2011-07-28 16:08 ` [PATCH 05/16] HID: wiimote: Reduce input syncs David Herrmann
2011-07-28 16:08 ` [PATCH 06/16] HID: wiimote: Enable accelerometer on request David Herrmann
2011-07-28 18:08 ` Oliver Neukum
2011-07-28 19:01 ` David Herrmann
2011-07-28 19:32 ` Oliver Neukum
2011-07-28 16:08 ` [PATCH 07/16] HID: wiimote: Parse accelerometer data David Herrmann
2011-07-28 18:12 ` Oliver Neukum
2011-07-28 18:51 ` David Herrmann
2011-08-10 11:55 ` Jiri Kosina
2011-07-28 16:08 ` [PATCH 08/16] HID: wiimote: Parse IR input and report to userspace David Herrmann
2011-07-28 16:08 ` [PATCH 09/16] HID: wiimote: Add missing extension DRM handlers David Herrmann
2011-07-28 16:08 ` [PATCH 10/16] HID: wiimote: Add register/eeprom memory support David Herrmann
2011-07-28 16:08 ` [PATCH 11/16] HID: wiimote: Helper functions for synchronous requests David Herrmann
2011-07-28 16:08 ` [PATCH 12/16] HID: wiimote: Add write-register helpers David Herrmann
2011-07-28 16:08 ` [PATCH 13/16] HID: wiimote: Add IR initializer David Herrmann
2011-07-28 16:08 ` [PATCH 14/16] HID: wiimote: Allow userspace to control IR cam David Herrmann
2011-07-28 16:08 ` [PATCH 15/16] HID: wiimote: Read wiimote battery charge level David Herrmann
2011-07-28 16:08 ` [PATCH 16/16] HID: wiimote: Allow EEPROM debugfs access David Herrmann
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=1311869316-17128-3-git-send-email-dh.herrmann@googlemail.com \
--to=dh.herrmann@googlemail.com \
--cc=jkosina@suse.cz \
--cc=linux-input@vger.kernel.org \
--cc=padovan@profusion.mobi \
/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).