Skip to content

Commit

Permalink
HID: roccat: enable Koneplus device reset
Browse files Browse the repository at this point in the history
Device can be reset to factory state by sending a command via info sysfs attr.
Added binary attribute info for this purpose, which obsoletes firmware_version
attribute.

Signed-off-by: Stefan Achatz <erazor_de@users.sourceforge.net>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
Stefan Achatz authored and Jiri Kosina committed Nov 5, 2012
1 parent 9e78eb8 commit fabe51e
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 8 deletions.
11 changes: 11 additions & 0 deletions Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,14 @@ Description: The integer value of this attribute ranges from 0-4.
When written, this file sets the number of the startup profile
and the mouse activates this profile immediately.
Please use actual_profile, it does the same thing.

What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/firmware_version
Date: October 2010
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When read, this file returns the raw integer version number of the
firmware reported by the mouse. Using the integer value eases
further usage in other programs. To receive the real version
number the decimal point has to be shifted 2 positions to the
left. E.g. a returned value of 121 means 1.21
This file is readonly.
Please read binary attribute info which contains firmware version.
13 changes: 5 additions & 8 deletions Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,12 @@ Description: The integer value of this attribute ranges from 0-4.
and the mouse activates this profile immediately.
Users: http://roccat.sourceforge.net

What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/firmware_version
Date: October 2010
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/info
Date: November 2012
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When read, this file returns the raw integer version number of the
firmware reported by the mouse. Using the integer value eases
further usage in other programs. To receive the real version
number the decimal point has to be shifted 2 positions to the
left. E.g. a returned value of 121 means 1.21
This file is readonly.
Description: When read, this file returns general data like firmware version.
When written, the device can be reset.
The data is 8 bytes long.
Users: http://roccat.sourceforge.net

What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/macro
Expand Down
22 changes: 22 additions & 0 deletions drivers/hid/hid-roccat-koneplus.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,22 @@ static ssize_t koneplus_sysfs_write(struct file *fp, struct kobject *kobj,
return real_size;
}

static ssize_t koneplus_sysfs_read_info(struct file *fp,
struct kobject *kobj, struct bin_attribute *attr, char *buf,
loff_t off, size_t count)
{
return koneplus_sysfs_read(fp, kobj, buf, off, count,
sizeof(struct koneplus_info), KONEPLUS_COMMAND_INFO);
}

static ssize_t koneplus_sysfs_write_info(struct file *fp,
struct kobject *kobj, struct bin_attribute *attr, char *buf,
loff_t off, size_t count)
{
return koneplus_sysfs_write(fp, kobj, buf, off, count,
sizeof(struct koneplus_info), KONEPLUS_COMMAND_INFO);
}

static ssize_t koneplus_sysfs_write_talk(struct file *fp,
struct kobject *kobj, struct bin_attribute *attr, char *buf,
loff_t off, size_t count)
Expand Down Expand Up @@ -428,6 +444,12 @@ static struct device_attribute koneplus_attributes[] = {
};

static struct bin_attribute koneplus_bin_attributes[] = {
{
.attr = { .name = "info", .mode = 0660 },
.size = sizeof(struct koneplus_info),
.read = koneplus_sysfs_read_info,
.write = koneplus_sysfs_write_info
},
{
.attr = { .name = "sensor", .mode = 0660 },
.size = sizeof(struct koneplus_sensor),
Expand Down

0 comments on commit fabe51e

Please sign in to comment.