Skip to content

Commit

Permalink
HID: roccat: Kone now reports external profile changes via roccat device
Browse files Browse the repository at this point in the history
Profile changes were only reported when issued mouse internal. Now all
changes are reported.

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 Sep 7, 2011
1 parent bd9c35d commit 3200a6a
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion drivers/hid/hid-roccat-kone.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ static void kone_profile_activated(struct kone_device *kone, uint new_profile)
kone->actual_dpi = kone->profiles[new_profile - 1].startup_dpi;
}

static void kone_profile_report(struct kone_device *kone, uint new_profile)
{
struct kone_roccat_report roccat_report;
roccat_report.event = kone_mouse_event_switch_profile;
roccat_report.value = new_profile;
roccat_report.key = 0;
roccat_report_event(kone->chrdev_minor, (uint8_t *)&roccat_report);
}

static int kone_receive(struct usb_device *usb_dev, uint usb_command,
void *data, uint size)
{
Expand Down Expand Up @@ -289,7 +298,7 @@ static ssize_t kone_sysfs_write_settings(struct file *fp, struct kobject *kobj,
container_of(kobj, struct device, kobj)->parent->parent;
struct kone_device *kone = hid_get_drvdata(dev_get_drvdata(dev));
struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev));
int retval = 0, difference;
int retval = 0, difference, old_profile;

/* I need to get my data in one piece */
if (off != 0 || count != sizeof(struct kone_settings))
Expand All @@ -305,9 +314,13 @@ static ssize_t kone_sysfs_write_settings(struct file *fp, struct kobject *kobj,
return retval;
}

old_profile = kone->settings.startup_profile;
memcpy(&kone->settings, buf, sizeof(struct kone_settings));

kone_profile_activated(kone, kone->settings.startup_profile);

if (kone->settings.startup_profile != old_profile)
kone_profile_report(kone, kone->settings.startup_profile);
}
mutex_unlock(&kone->kone_lock);

Expand Down Expand Up @@ -554,6 +567,7 @@ static ssize_t kone_sysfs_set_startup_profile(struct device *dev,

/* changing the startup profile immediately activates this profile */
kone_profile_activated(kone, new_startup_profile);
kone_profile_report(kone, new_startup_profile);

mutex_unlock(&kone->kone_lock);
return size;
Expand Down

0 comments on commit 3200a6a

Please sign in to comment.